ww-jack 发表于 2006-11-13 18:53:11

大头贴制作系统 V4.8 脱壳 爆破 (易语言)

【破文标题】 大头贴制作系统 V4.8 脱壳 爆破

申请 PYG 成员:lol:

[ 本帖最后由 ww-jack 于 2006-11-13 19:00 编辑 ]

ww-jack 发表于 2006-11-13 18:56:22

刚看见下面有 3.9 的破文!~
呵呵!~方法不一样
大家共勉

tigerisme 发表于 2006-11-13 21:42:07

【破文标题】 大头贴制作系统 V4.8 脱壳 爆破

【破文作者】 https://www.chinapyg.com/ 论坛 IDww-jack

【作者邮箱】 [email protected]

 【使用工具】PEiD 0.94ImportREC LordPE DeluxeWinHex

【脱壳平台】 Windows xp sp2

【软件名称】 大头贴制作系统 V4.8

【下载页面】 http://www.chinasoftware.cn/
 
【软件简介】 大头帖制作软件

【软件大小】 20几M
 
【加壳方式】 Version: ASProtect 2.3 SKE build 06.26 Beta

【脱壳声明】第一次写破文 水平有限 勿笑

【脱壳篇】
        废话少说老规矩先PEID看看 结果显示 ASProtect V2.X Registered -> Alexey Solodovnikov * 用 PEID 的 ASProtect 版本插件看是 Version: ASProtect 2.3 SKE build 06.26 Beta 这个版本应该是最新版本的ASProtect 。
既然是 ASProtect 2.X 当然用 OD 配合 VolX 大侠的 Aspr2.XX_IATfixer_v2.2s 脚本。用这个脱“爽”
OD 载入大头贴制作系统.exe 不分析,隐藏 OD运行脚本 (需要 ODBGScript 1.47) 运行结束。
02450247   55                  push ebp                        ; 000403831停在这里不要解释吧

在大头贴目录里已经有了un_大头贴制作系统.exe不需要我们再抓,如果没有自己抓吧。
打开 Script log Windows 窗口

启动 ImportREC   OEPRVA   SIZE按照上面的添(不要自动查找) 都给计算好了 呵呵 方便啊 、
获取输入表 显示无效(这个没有无效 有的ASProtect加壳需要剪切(可以利用插件跟踪ASProtect的特定函数)) 修复转储 退出 ImportREC。
试运行不能运行。
下面要进行补段
切换到 OD 界面 ALT+M00E80000 至 02700000 F2设置访问断点 这里下段地方比较多 需要有耐性。

记录下
最小地址   00E80000
最大地址   02700000
接下来F9 运行看看中断在哪里并把地址记录 请注意地址要按重小到大排列
F9直到运行 共记录了下面几处地址
012E0000
01340000
01470000
02450000
026F0000
02700000
下面我们要修复区段 工具 LordPE 选中 大头帖系统.EXE ->区域转存 找到上面地址 然后转存区域请记住文件名和区段地址一致一会还要用来增加区段。

可以关掉OD了 LordPE –>PE编辑器->载入ImportREC修复的大头帖程序->区段->从磁盘载入段
载入顺序要和中断顺序一至。

计算虚拟地址
012E0000 – 400000=EE0000
01340000 – 400000=F40000
01470000 – 400000=1070000
02450000 – 400000=2050000
026F0000 – 400000=22F0000
02700000 – 400000=2300000
修改一下虚拟地址
把刚才磁盘载入的区段都改一下。
再修复一下

OD再次载入修复过的文件
在载入段的地方 F2
3次 F9 中断后
F8直到出现
01304CEF   8B73 30             mov esi,dword ptr ds:   ; un_大头?0245252C
01304CF2   8B7B 14             mov edi,dword ptr ds:
01304CF5   A1 D02B3201         mov eax,dword ptr ds:
01304CFA   8B40 34             mov eax,dword ptr ds:   ; nop掉这里
01304CFD   FFD0                call eax                        ; nop掉这里
01304CFF   2945 0C             sub dword ptr ss:,eax      ; nop掉这里
01304D02   8B45 0C             mov eax,dword ptr ss:      ; sub eax,5
01304D05   2B43 18             sub eax,dword ptr ds:
01304D08   2B43 68             sub eax,dword ptr ds:
//----------------------------------------------------------------------------------------------------------------------------------------
修改后是这样
01304CF5   A1 D02B3201         mov eax,dword ptr ds:
01304CFA   90                  nop                               ; nop掉这里
01304CFB   90                  nop
01304CFC   90                  nop
01304CFD   8B4424 58         mov eax,dword ptr ss:   ; mov eax,dword ptr ss:
01304D01   90                  nop
01304D02   83E8 05             sub eax,5                         ; sub eax,5
01304D05   2B43 90             sub eax,dword ptr ds:
01304D08   2B43 68             sub eax,dword ptr ds:
01304D0B   8945 FC             mov dword ptr ss:,eax
然后选择部分保存到文件
运行

提示错误!!
这个东西是E语言的东西还要修复一下
用winhex 打开未脱壳文件从最下面开始搜索 16 进制 代码 000000000000
找到后定义块到文件结尾复制粘贴到脱壳后的文件尾部

运行后还是无反应。




【爆破篇】
完成 OD 再次载入
下断

这是易语言的东西。
几次F9后就退出了。
再次再入
最后一次F9-1次
堆栈
0012F64C   100B0940/CALL 到 CreateFileA 来自 krnln.100B093A
0012F650   02D87AC8|FileName = "C:\Program Files\大头贴制作系统\un_大头贴制作系统_un.exe"
0012F654   80000000|Access = GENERIC_READ
0012F658   00000001|ShareMode = FILE_SHARE_READ
0012F65C   0012F77C|pSecurity = 0012F77C
0012F660   00000003|Mode = OPEN_EXISTING
0012F664   00000080|Attributes = NORMAL
0012F668   00000000\hTemplateFile = NULL
CTRL+F9返回主程序段
00880872    C3            RETN   返回到这里
00880873    55            PUSH EBP
00880874    8BEC            MOV EBP,ESP
00880876    81EC 0C000000   SUB ESP,0C
0088087C    68 04000080   PUSH 80000004
00880881    6A 00         PUSH 0
00880883    A1 B003D902   MOV EAX,DWORD PTR DS:
00880888    85C0            TEST EAX,EAX
0088088A    75 05         JNZ SHORT 大头贴制.00880891
0088088C    B8 91B84000   MOV EAX,大头贴制.0040B891
F8
008C703F    55            PUSH EBP   
008C7040    8BEC            MOV EBP,ESP
008C7042    81EC 08000000   SUB ESP,8
008C7048    F9            STC
008C7049    72 01         JB SHORT 大头贴制.008C704C
F8
008C704C    E8 6896FBFF   CALL 大头贴制.008806B9//F7进去
008C7051    8945 FC         MOV DWORD PTR SS:,EAX
008C7054    EB 01         JMP SHORT 大头贴制.008C7057
008C7056^ 7D 83         JGE SHORT 大头贴制.008C6FDB
008C7058^ 7D FC         JGE SHORT 大头贴制.008C7056
008C705A    000F            ADD BYTE PTR DS:,CL
008C705C    850D 000000EB   TEST DWORD PTR DS:,ECX
008C7062    01B2 6A00E8CD   ADD DWORD PTR DS:,ESI
008C7068    C501            LDS EAX,FWORD PTR DS:               ; 修改段寄存器
008C706A    0083 C404EB01   ADD BYTE PTR DS:,AL
008C7070    74 6A         JE SHORT 大头贴制.008C70DC
:
0088083B   /E9 0D000000   JMP 大头贴制.0088084D                       到这里
00880840   |EB 01         JMP SHORT 大头贴制.00880843
00880842   |BC B8010000   MOV ESP,1B8
00880847   |00E9            ADD CL,CH
00880849   |0000            ADD BYTE PTR DS:,AL
0088084B   |0000            ADD BYTE PTR DS:,AL
0088084D   \50            PUSH EAX                  这里下断 以后用的到
0088084E    8B5D FC         MOV EBX,DWORD PTR SS:
00880851    85DB            TEST EBX,EBX
00880853    74 09         JE SHORT 大头贴制.0088085E
00880855    53            PUSH EBX
00880856    E8 F52D0600   CALL 大头贴制.008E3650
0088085B    83C4 04         ADD ESP,4
F8
008C7051    8945 FC         MOV DWORD PTR SS:,EAX   //注意这里
008C7054    EB 01         JMP SHORT un_大头?008C7057
008C7056^ 7D 83         JGE SHORT un_大头?008C6FDB
008C7058^ 7D FC         JGE SHORT un_大头?008C7056
008C705A    000F            ADD BYTE PTR DS:,CL
008C705C    850D 000000EB   TEST DWORD PTR DS:,ECX
008C7062    01B2 6A00E8CD   ADD DWORD PTR DS:,ESI
008C7068    C501            LDS EAX,FWORD PTR DS:               ; 段位寄存器修饰
008C706A    0083 C404EB01   ADD BYTE PTR DS:,AL
008C7070    74 6A         JE SHORT un_大头?008C70DC
008C7072    0068 01         ADD BYTE PTR DS:,CH
008C7075    0000            ADD BYTE PTR DS:,AL
008C7077    006A FF         ADD BYTE PTR DS:,CH
008C707A    6A 05         PUSH 5
008C707C    68 58070106   PUSH 6010758
008C7081    68 59070152   PUSH 52010759

008C7057    837D FC 00      CMP DWORD PTR SS:,0
008C705B    0F85 0D000000   JNZ un_大头?008C706E      //这里就跳死了
008C7061    EB 01         JMP SHORT un_大头?008C7064
008C7063    B2 6A         MOV DL,6A
008C7065    00E8            ADD AL,CH
//-------------------------
望上看找到这里
008C7042    81EC 08000000   SUB ESP,8                  我们在这里下断
008C7048    F9            STC
008C7049    72 01         JB SHORT un_大头?008C704C
008C704B    0FE868 96       PSUBSB MM5,QWORD PTR DS:
008C704F    FB            STI
008C7050    FF89 45FCEB01   DEC DWORD PTR DS:
008C7056^ 7D 83         JGE SHORT un_大头?008C6FDB
008C7058^ 7D FC         JGE SHORT un_大头?008C7056
008C705A    000F            ADD BYTE PTR DS:,CL
008C705C    850D 000000EB   TEST DWORD PTR DS:,ECX
008C7062    01B2 6A00E8CD   ADD DWORD PTR DS:,ESI
008C7068    C501            LDS EAX,FWORD PTR DS:               ; 段位寄存器修饰
008C706A    0083 C404EB01   ADD BYTE PTR DS:,AL
008C7070    74 6A         JE SHORT un_大头?008C70DC
008C7072    0068 01         ADD BYTE PTR DS:,CH
008C7075    0000            ADD BYTE PTR DS:,AL
008C7077    006A FF         ADD BYTE PTR DS:,CH
008C707A    6A 05         PUSH 5
008C707C    68 58070106   PUSH 6010758
008C7081    68 59070152   PUSH 52010759
008C7086    E8 D7C50100   CALL un_大头?008E3662
008C708B    83C4 18         ADD ESP,18

重新载入
008C704C    E8 6896FBFF   CALL un_大头?008806B9//这个CALL 进去
008C7051    8945 FC         MOV DWORD PTR SS:,EAX
008C7054    EB 01         JMP SHORT un_大头?008C7057
008C7056^ 7D 83         JGE SHORT un_大头?008C6FDB
008C7058^ 7D FC         JGE SHORT un_大头?008C7056
008C705A    000F            ADD BYTE PTR DS:,CL
008C705C    850D 000000EB   TEST DWORD PTR DS:,ECX
008C7062    01B2 6A00E8CD   ADD DWORD PTR DS:,ESI
008C7068    C501            LDS EAX,FWORD PTR DS:               ; 段位寄存器修饰

00880836    B8 00000000   MOV EAX,0到这里修改成 MOV EAX,1
0088083B    E9 0D000000   JMP un_大头?0088084D
00880840    EB 01         JMP SHORT un_大头?00880843
00880842    BC B8010000   MOV ESP,1B8
00880847    00E9            ADD CL,CH
00880849    0000            ADD BYTE PTR DS:,AL
0088084B    0000            ADD BYTE PTR DS:,AL
0088084D    50            PUSH EAX
0088084E    8B5D FC         MOV EBX,DWORD PTR SS:
00880851    85DB            TEST EBX,EBX
00880853    74 09         JE SHORT un_大头?0088085E
00880855    53            PUSH EBX
00880856    E8 F52D0600   CALL un_大头?008E3650
0088085B    83C4 04         ADD ESP,4
0088085E    8B5D F8         MOV EBX,DWORD PTR SS:
00880861    85DB            TEST EBX,EBX
00880863    74 09         JE SHORT un_大头?0088086E
00880865    53            PUSH EBX
00880866    E8 E52D0600   CALL un_大头?008E3650
0088086B    83C4 04         ADD ESP,4
0088086E    58            POP EAX
0088086F    8BE5            MOV ESP,EBP
00880871    5D            POP EBP
00880872    C3            RETN
00880873    55            PUSH EBP
00880874    8BEC            MOV EBP,ESP
00880876    81EC 0C000000   SUB ESP,0C
0088087C    68 04000080   PUSH 80000004
00880881    6A 00         PUSH 0
修改EXE用WINHEX修改
搜索
B800000000E90D000000EB01BCB801000000E9
改成
B801000000E90D000000EB01BCB801000000E9
保存这下子可以启动了
现在我们要把他变成注册版
这个程序很多地方要自校验看看是不是被人家脱壳。
我们注册的时候他也看 正好我们利用这个下断
还是在
00880941    35 2D060083   XOR EAX,8300062D
00880946    C43489          LES ESI,FWORD PTR DS:         ; 修改段寄存器
00880949    45            INC EBP
0088094A    F4            HLT                                    ; 特权级命令
0088094B    8B5D FC         MOV EBX,DWORD PTR SS:
0088094E    85DB            TEST EBX,EBX
00880950    74 09         JE SHORT 大头贴制.0088095B
00880952    53            PUSH EBX
00880953    E8 F82C0600   CALL 大头贴制.008E3650
00880958    83C4 04         ADD ESP,4
0088095B    8B5D F8         MOV EBX,DWORD PTR SS:
0088095E    85DB            TEST EBX,EBX
00880960    74 09         JE SHORT 大头贴制.0088096B
00880962    53            PUSH EBX
00880963    E8 E82C0600   CALL 大头贴制.008E3650
00880968    83C4 04         ADD ESP,4
0088096B    837D F4 01      CMP DWORD PTR SS:,0// CMP DWORD PTR SS:,1这里改下就OK了哦
0088096F    0F84 13000000   JE 大头贴制.00880988
一样道理Winhex查找修改JMP也可以呵呵!~
这个程序不能用反汇编工具修改!~
感觉易语言是编译了一个文件头然后把易语言的 代码解压缩 后在执行所以反汇编只能出来文件执行部
分。//0088084D   \50            PUSH EAX                  这里下断 以后用的到


00880975    F8            CLC
00880976    73 01         JNB SHORT 大头贴制.00880979
00880978    0FB8            ???                                    ; 未知命令
0088097A    0100            ADD DWORD PTR DS:,EAX
0088097C    0000            ADD BYTE PTR DS:,AL
0088097E    E9 12000000   JMP 大头贴制.00880995
00880983    E9 0D000000   JMP 大头贴制.00880995
00880988    EB 01         JMP SHORT 大头贴制.0088098B
0088098A    0FB8            ???                                    ; 未知命令
0088098C    0000            ADD BYTE PTR DS:,AL
0088098E    0000            ADD BYTE PTR DS:,AL
00880990    E9 00000000   JMP 大头贴制.00880995
00880995    8BE5            MOV ESP,EBP
00880997    5D            POP EBP
00880998    C3            RETN
00880999    55            PUSH EBP
0088099A    8BEC            MOV EBP,ESP
0088099C    F8            CLC
0088099D    73 01         JNB SHORT 大头贴制.008809A0
很多东西只能跟过才有感觉,水平有限只能做不会说呵呵!~(这里说的比较乱呵呵!~没整理不好意思大概意思出来了只要跟下就可以明白,也是介绍一个方法)


这样的帖子不要打包上传,直接贴上即可...另外申请PYG不是在这里发贴,到申请区去!:L

avel 发表于 2006-11-20 19:56:31

好文章
不过看的有点迷糊
自己能力不够~!

易之侠 发表于 2007-1-4 23:55:51

先看看,学习一下。

坏づ铥铥 发表于 2008-4-25 19:37:58

慢慢消化。谢谢/:014

siaoxing 发表于 2008-4-30 14:11:46

楼主写的真是好东东呀,是否把Aspr2.XX_IATfixer_v2.2s 脚本文件给发上来,我在百度搜了一下,都没没有,也可以有加QQ:825236088共同讨论。

zouhaosx 发表于 2008-5-1 11:20:21

顶一下/:good /:good

秋之雁 发表于 2009-6-15 17:51:33

谢谢学习了~

ryz0088 发表于 2009-6-23 12:32:09

这个学习研究中~~今天又学习一下~~/:001
页: [1] 2
查看完整版本: 大头贴制作系统 V4.8 脱壳 爆破 (易语言)