兄台们 帮忙看下这个程序为嘛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 编辑 ]