1.代码执行法,
这种方法不推荐,一步一步f7地按,太麻烦太蠢了。
2.字符串检索法
这个简单,直接crtl+g
寻找字符串,
3.检索API方法
打开OD,载入程序
鼠标右键,如图。
然后就可以看到程序调用的所有API函数,便于分析。
关于api的,点击下面
找到messagebox函数,双击进去,就是函数所在反汇编地址了
法4:检索API方法2
同样,还是用我们的那个helloworld小程序,然后,如图所示,查找所有模块的名称
然后,结果如图所示
在这个界面,我们敲键盘字母,messagebox,一个一个敲出来,就会自己跳到相应的地址,如图所示:
因为messagebox这个函数是从user32.dll中实现的,所以我们可以随便点击一个进去看看:
我们在这个函数的头部按一下F2,设置断点,然后F9运行起来。
然后程序断在了这里
我们可以清楚的看到里面的地址和内容。
修改字符串的两种方法
1)直接修改字符串缓冲区
2)在其他内存区域生成新字符串并传递给消息函数。
1.直接修改字符串缓冲区
在dump窗口中ctrl+G使用goto指令,找到字符串helloworld,ctrl+e修改
***注意:若新的字符串长度大于原字符串很可能造成数据覆盖导致内存引用错误。
在UNICODE文本框中输入字符串,Unicode字符串必须以NULL结束,它占据两个字
节(添加Null时不能直接在Unicode文本框中进行,而需要在hex文本框中添加00)***
2.在其他内存区域新建字符串并传递给消息函数
00401007处有一处push指令,将数据区域地址为004092A0的字符串压栈(也就是我们的helloword)
我们可以在新的内存区域新建字符串,再改下push的地址