| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 574 人关注过本帖
标题:兄台们 帮忙看下这个程序为嘛printf 不起作用了呢
只看楼主 加入收藏
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
结帖率:59.52%
收藏
已结贴  问题点数:20 回复次数:17 
兄台们 帮忙看下这个程序为嘛printf 不起作用了呢
#include "windows.h"
#include <stdio.h>
#include "stdlib.h"
void main(){
  int a=1;
_asm{
     mov esi,[ebp+24]              //因为在调用main函数的时候 是creatprocess 函数建立进程,利用这个栈的地址来取得creatprocess进程的地址,也就是DLL的地址空间了
     and esi,0xffff0000            //页对齐
mmm: cmp dword ptr [esi],0x4d5a    //比对MZ标志 用这个判定是否DLL文件的开始基地址
     jz  xxx   
     sub esi,0x1000                 //以页为单位进行搜索
     jmp mmm
xxx: mov [ebp-4],esi                //将寻到的基地址值给变量a
    }
printf("%d",a);
}


[ 本帖最后由 zhu224039 于 2012-12-11 01:17 编辑 ]
搜索更多相关主题的帖子: include 
2012-12-11 00:48
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
The thread 0x670 has exited with code 2 (0x2).
这个是神马意思嘛
找不到kernel32.DLL 还退出线程 ID 0X670?  code 说的是错误代码号?

步进后就直接错误
First-chance exception in c.exe: 0xC0000005: Access Violation.
说数据保护  不让比较 这个地址有问题吗 ?

奶奶的,至从学了缓冲和反汇编后,我编程成功率就低了很多

各种乱

[ 本帖最后由 zhu224039 于 2012-12-11 01:11 编辑 ]

我要成为嘿嘿的黑客,替天行道
2012-12-11 01:09
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:20 
mmm: cmp dword ptr [esi],0x4d5a
0x4d5a 这个地址你确认可以访问?直接崩溃~~


我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-11 01:09
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
回复 3楼 yuccn
0x4d5a是个立即数啊

我要成为嘿嘿的黑客,替天行道
2012-12-11 01:19
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
我的原意是 dword ptr [esi]-0xd5a  进行比较

我要成为嘿嘿的黑客,替天行道
2012-12-11 01:20
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
错了,是这个
0xffff0000
是这个,这个地址空间 你不可以访问啊。
这个是内核的地址。应用程序访问不了的

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-11 01:22
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
回复 3楼 yuccn
mov eax,0x4d5a
cmp [esi],eax
还是一样的

我要成为嘿嘿的黑客,替天行道
2012-12-11 01:22
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
and esi,0xffff0000 这个是 让esi和立即数进行与运算啊

ffff0000不是地址值 是个立即数
[ffff0000]这个时候的 ffff0000是个地址值,这个是汇编的约定

我要成为嘿嘿的黑客,替天行道
2012-12-11 01:24
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
你为什么要访问内核的地址啊,这个地址是操作系统的,应用程序访问会直接崩溃,

大于某个值的地址都是内核的(忘记多少了)
32 位系统下
每个进程有4g的空间,高2g(好像是这个数)是内核的,也就是操作系统本身,高2g对于所有进程来说是一样的,
低2g才是每个进程(应用程序)的空间,

对于应用程序来说,内存是隔离的,不过高2g部分(也就是内核部分)不是隔离的,不过这个地址应用程序没有访问的权限,




我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-11 01:29
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
回复 8楼 zhu224039
and esi,0xffff0000            //页对齐  这个我知道你的是立即数
 mmm: cmp dword ptr [esi],0x4d5a     // 你这个地方就是去访问内核地址了

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-11 01:31
快速回复:兄台们 帮忙看下这个程序为嘛printf 不起作用了呢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055217 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved