根据书上例子做实验,开始没成功,后来成功了,于是我有一些小思考,关于使用ollydbug和汇编调试的。
这个实验就是为了在程序运行过程中弹出对话框,利用数组溢出湮没返回地址,正好是指向对话框的那个地址,然后就能实现如此效果。
1.我先用dependency Walker来查询messageboxA的内存地址,其值为user32.dll的优先基址+函数messgaeboxA的入口点地址的和。
这个地方我的感受是最好要在XP环境之下,因为我试验了在WIN7下通过这种方法获得的内存地址提示不可读,或许是WIN7独有的内存保护机制。
2.在ollydbg中调试我的目标PE:crack2.exe, 发现点击ctrl+F之后无法搜索到“CALL crack2.printf”或者是“CALL crack2.fopen”等指令,让我很纳闷偶尔又能搜出来,于是我经过了一番研究,发现原来必须在源程序文件夹Debug下的PE,才会有具体的高级语言指令printf等的搜索,否则只会以一串内存数字出现,无法直接搜索到。
主要目前就是这两个问题。