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

挑战软件逆向零基础入门--1分钟解密提取出隐藏在EXE程序中源程序真身。网上找的一个JAVA学习文档【《Java开发学习大纲文档》第六版】,知识汇总的非常全。
 

image

 打开后的界面

image

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

image

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

image

 向下翻看到些对文件和目录的操作,猜测大概是用的什么脚本软件。在向下看到这么一段

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

image

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

image

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

image

 

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

image

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

image

 看到数据开头是ITSF开头,不知道什么东西。丢百度试试:

以“ITSF”开头的格式通常指‌CHM文件格式‌,这是一种用于存储压缩帮助文档的复合文件格式,由微软开发。

CHM文件的开头包含一个‌8字节的固定签名‌,其前四个字节为ASCII码“ITSF”(即0x49 0x54 0x53 0x46),用于标识文件类型。后四个字节表示版本号,目前主流版本为v3(即0x00 0x00 0x00 0x03。看来运气不错。软件直接把CHM真实文档解压了出来。那么复制出来改个名是不是就解密完了?还真是这么回事。继续调试器中看看它是怎么操作的吧。F9继续运行,看到它开始读取生成的TMP文件,又生成了新文件

image

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

image

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

image

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

posted @ 2026-03-14 11:38  simont9  阅读(5)  评论(0)    收藏  举报