参考
工具
看雪的OllyICE
窗口说明
汇编的返回值
快捷键
英文分号:加注释
Alt+B:断点编辑器
Ctrl+N:查看exe导入表
设置首次中断点
选项 -> 调试设置 -> 事件
Hello World!
准备工作
main.cpp
#include <windows.h>
int main() {
MessageBox(NULL, TEXT("Hello"), TEXT("Title"), MB_ICONINFORMATION);
return 0;
}
CLion在CMakeLists.txt里加上
set(CMAKE_C_FLAGS -m32)
set(CMAKE_CXX_FLAGS -m32)
编译出exe程序(32位)
运行一下,弹窗内容为Hello
逆向
现在试试修改一下弹窗内容为"cuteq"
打开OllyICE,载入此exe
按Ctrl+F2,运行程序到起始处
然后一直F8步过
直到运行到0040155AH的位置,出现了弹窗
可以看到在call eax之前,有mov指令,将00404000H和00404006H处的数据复制到相应位置,这正是函数传参的过程。
找到参数位置以后Ctrl+F2重新运行
使用Ctrl+G,在下面的数据区跳到00404000H的位置
可以看到显示的窗口标题"Title"和内容"Hello"
选中要修改的"Hello",Ctrl+E编辑此处数据
输入"cuteq",末尾用00截断
然后点击确定
在上面的代码区直接按F4执行到光标处0040155AH,按F8步过,弹窗,成功
如果想将修改保存到exe中,可参照 OD保存修改后的数据到EXE
若保存成功,则直接执行exe也会与上述在OD中调试效果相同