软件逆向零基础入门--1分钟解密提取出隐藏在EXE程序中源程序真身

打开后的界面

这个界面明显是CHM文档,但是运行它的是个EXE程序,那就可能是被加密或打包了。本篇文章我们就把它源文档CHM找出来。 直接上调试器OllyDBG,将程序拖入。

点击调试器菜单上的M进入内存窗口,看到软件的区段来看大概率是没加壳和加密的。点击TEXT段右键反汇编

向下翻看到些对文件和目录的操作,猜测大概是用的什么脚本软件。在向下看到这么一段
00401340 |. 50 push eax ; /pWndClassEx = kernel32.BaseThreadInitThunk 00401341 |. C745 CC 30000>mov [local.13],0x30 ; | 00401348 |. C745 D0 23000>mov [local.12],0x23 ; | 0040134F |. 895D D8 mov [local.10],ebx ; | 00401352 |. 895D DC mov [local.9],ebx ; | 00401355 |. 897D EC mov [local.5],edi ; | 00401358 |. 895D F0 mov [local.4],ebx ; | 0040135B |. C745 F4 00B04>mov [local.3],学习文档.0046B000 ; |UNICODE "AutoIt v3" 00401362 |. 894D E4 mov [local.7],ecx ; | 00401365 |. C745 D4 24174>mov [local.11],学习文档.00401724 ; | 0040136C |. FF15 E0654600 call dword ptr ds:[<&USER32.RegisterClas>; \RegisterClassExW
0040135B |. C745 F4 00B04>mov [local.3],学习文档.0046B000 ; |UNICODE "AutoIt v3"
AutoIt v3 是一种专为 Windows 系统设计的自动化脚本语言,主要用于模拟键盘按键、鼠标操作以及控制窗口和控件,以实现对图形用户界面(GUI)的自动化任务。它常用于软件安装、重复性桌面操作、系统管理等场景。 果然是对文件进行了包装。那直接分析下看它会不会把真实的程序CHM文件解密出来。尝试对WriteFile、CreateFile、CreateProcess、ShellExecute等API下断。上面搜索它就是个自动化脚本程序。猜测它肯定会对文件进行解压或运行。上面的断点可以都进行下断点跟踪试试。从查找字符串中看到里面的常量固定字符串用的是UNICODE编码。上面的下断点我们就用宽字节的API,在后面加个W即可。如CreateFileW,ShellExecuteW。回来调试器里,反汇编窗口中按下Ctrl+G

按下确定后来到函数头双击或按下F2,下断点。下完断点后F9运行程序。程序运行时CreateFileW会多次断下,我们一直按F9看有没有用的东西。

注意看堆栈窗口中,它在读这么一个文件?我们去这个目录下看看有没有。临时目录快速到达方法:打开运行窗口,输入%tmp%直接到达

搜索没有发现这么个文件,估计是没生成。返回调试器中继续F9,看到堆栈中它在创建这个文件了。继续F9,再次到临时目录查找

果然它解压出来了文件。但这个文件是TMP,又会是什么文件?用winhex查找看它的数据内容

看到数据开头是ITSF开头,不知道什么东西。丢百度试试:
以“ITSF”开头的格式通常指CHM文件格式,这是一种用于存储压缩帮助文档的复合文件格式,由微软开发。
CHM文件的开头包含一个8字节的固定签名,其前四个字节为ASCII码“ITSF”(即0x49 0x54 0x53 0x46),用于标识文件类型。后四个字节表示版本号,目前主流版本为v3(即0x00 0x00 0x00 0x03。看来运气不错。软件直接把CHM真实文档解压了出来。那么复制出来改个名是不是就解密完了?还真是这么回事。继续调试器中看看它是怎么操作的吧。F9继续运行,看到它开始读取生成的TMP文件,又生成了新文件

看来它最终也是要生成CHM文件。进入这个目录下

也确实生成了这么个文件。最终它调用了CHM运行起来

到此CHM文档正常运行了。这个脚本还是有漏洞,它在解压出文件放在C:\Windows\Temp运行后,直接退出了。文件会一直保存在这个目录中,如果重复运行软件就会生成很多的CHM文件。 经过上面简单分析就搞清楚了软件的大概运行流程,真实的文档也解密提取出来了。 反汇编逆向后发现总体还是非常简单,新手也能提取出来。

浙公网安备 33010602011771号