刚来公司没几天,什么任务都没有给,闲的要死… 还不好意思玩游戏(毕竟刚来嘛…装一装样子也得不是)。一开始想看看书,后来书看恶心了,就打算找几个简单的例子,想一想从什么例子开始呢 ? 嗯…果然还是 hello world 比较合适哈哈哈哈(可怜的 hello world,可怜的植物大战僵尸)…不知道这个梗有没有人知道,算了,开始做笔记吧就 ——
首先,hello world 程序都会写,我选择的是 win32 控制台应用程序,程序流程是直接弹出一个 “hello world” 的对话框(MessageBox)。下面是代码:
#include "stdafx.h"
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
MessageBox(NULL,L"hello world",L"hello world",NULL);
return 0;
}
打开 OD —— (喜欢用 “附加” 的朋友这里就要注意了,不要附加,直接点 “打开”,因为这个程序是直接会弹出 “hello world” 的,如果打开程序再附加的话就错过了这个过程)
再点击 “运行” , 让程序跑起来(卧槽我为什么要说这么详细…)
(难道真的是因为要打发时间么!)
其实有很多方法可以定位到 main() 的位置,但是就说一个最简单的办法吧(我认为的)。
在入口点的反汇编窗口 右键 —— 查找 —— 所有参考文本字符串,你就会发现可怜的 hello world 被你找到了(啊!可恶! o(゚Д゚)っ!)
双击 hello world (任意一个都可以),跟随到对应的地址:
在 B1002 处下一软件断点(F2),让程序跑到这个位置。
再看下 push 0xB2100 这条指令中的地址里存放了什么(命令行:dd 0x000B2100)
当然现在是啥子都看不到的 ,需要在 Dump 窗口中 右键 —— HEX —— HEX/UNICODE(8、16都可以)
喔喔… 又看到你了 hello world ( ̄▽ ̄)/
然后,都看到你了,不留下点痕迹怎么好意思呢… 右键 —— 二进制 —— 编辑 ,改成你喜欢的 Unicode 字符(我这里就写我自己的 ID 吧)
改完后要记得保存呀,不然有什么意义。Dump 窗口 :右键 —— 复制到可执行文件 —— 在新的窗口右键 —— 保存文件
试试打开原来写的程序:喔喔 ! 果然是这个样子
离下班时间还有 一个半小时,再学一小时,最后半小时点个外卖…美好生活啊 ——