逆向分析(一):hello world 程序

在这里插入图片描述

刚来公司没几天,什么任务都没有给,闲的要死… 还不好意思玩游戏(毕竟刚来嘛…装一装样子也得不是)。一开始想看看书,后来书看恶心了,就打算找几个简单的例子,想一想从什么例子开始呢 ? 嗯…果然还是 hello world 比较合适哈哈哈哈(可怜的 hello world,可怜的植物大战僵尸)…不知道这个梗有没有人知道,算了,开始做笔记吧就 ——

首先,hello world 程序都会写,我选择的是 win32 控制台应用程序,程序流程是直接弹出一个 “hello world” 的对话框(MessageBox)。下面是代码:

#include "stdafx.h"
#include 

int _tmain(int argc, _TCHAR* argv[])
{
	MessageBox(NULL,L"hello world",L"hello world",NULL);
	return 0;
}

打开 OD —— (喜欢用 “附加” 的朋友这里就要注意了,不要附加,直接点 “打开”,因为这个程序是直接会弹出 “hello world” 的,如果打开程序再附加的话就错过了这个过程)
逆向分析(一):hello world 程序_第1张图片
再点击 “运行” , 让程序跑起来(卧槽我为什么要说这么详细…)
在这里插入图片描述
(难道真的是因为要打发时间么!)
逆向分析(一):hello world 程序_第2张图片
其实有很多方法可以定位到 main() 的位置,但是就说一个最简单的办法吧(我认为的)。
在入口点的反汇编窗口 右键 —— 查找 —— 所有参考文本字符串,你就会发现可怜的 hello world 被你找到了(啊!可恶! o(゚Д゚)っ!)
逆向分析(一):hello world 程序_第3张图片
双击 hello world (任意一个都可以),跟随到对应的地址:
逆向分析(一):hello world 程序_第4张图片
在 B1002 处下一软件断点(F2),让程序跑到这个位置。
再看下 push 0xB2100 这条指令中的地址里存放了什么(命令行:dd 0x000B2100)
逆向分析(一):hello world 程序_第5张图片

当然现在是啥子都看不到的 ,需要在 Dump 窗口中 右键 —— HEX —— HEX/UNICODE(8、16都可以)
喔喔… 又看到你了 hello world ( ̄▽ ̄)/
逆向分析(一):hello world 程序_第6张图片
然后,都看到你了,不留下点痕迹怎么好意思呢… 右键 —— 二进制 —— 编辑 ,改成你喜欢的 Unicode 字符(我这里就写我自己的 ID 吧)
逆向分析(一):hello world 程序_第7张图片
改完后要记得保存呀,不然有什么意义。Dump 窗口 :右键 —— 复制到可执行文件 —— 在新的窗口右键 —— 保存文件
逆向分析(一):hello world 程序_第8张图片试试打开原来写的程序:喔喔 ! 果然是这个样子
逆向分析(一):hello world 程序_第9张图片
离下班时间还有 一个半小时,再学一小时,最后半小时点个外卖…美好生活啊 ——
在这里插入图片描述

你可能感兴趣的:(逆向)