| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 574 人关注过本帖
标题:兄台们 帮忙看下这个程序为嘛printf 不起作用了呢
取消只看楼主 加入收藏
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
结帖率:59.52%
收藏
已结贴  问题点数:20 回复次数:10 
兄台们 帮忙看下这个程序为嘛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
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
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
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
esi里面存放的是kernel32.DLL 在进程空间中的地址值 这个kernel是运行在rang3的具有属性可读可执行不可写
由于每个程序被调用后 都有4GB的独立空间
但是这个4GB的独立空间 是被1分为二了的   一半是系统的 一半是用户的
用页面调换机制的话,属于系统的那一半 就不用 因为切换一个进程就得重新加载一次了

我要成为嘿嘿的黑客,替天行道
2012-12-11 01:32
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
我是在找kernel.DLL  的地址

我要成为嘿嘿的黑客,替天行道
2012-12-11 01:34
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
回复 10楼 yuccn
书上讲的获取kernel32.DLL 的基地址 就是这么讲的
我学PE文件格式的时候  这个kernel32.dll是说运行在rang3的级别上的

我要成为嘿嘿的黑客,替天行道
2012-12-11 01:36
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
回复 13楼 yuccn
哦,对少打了个F

我要成为嘿嘿的黑客,替天行道
2012-12-11 01:37
快速回复:兄台们 帮忙看下这个程序为嘛printf 不起作用了呢
数据加载中...
 
   



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

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