兄台们,帮忙看下这个程序为什么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); }
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 18:22 编辑 ]