飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 19335|回复: 15

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

[复制链接]

该用户从未签到

发表于 2006-11-13 18:53:11 | 显示全部楼层 |阅读模式
【破文标题】 大头贴制作系统 V4.8 脱壳 爆破

申请 PYG 成员:lol:

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

大头贴制作系统 V4.8 脱壳 爆破.part1.rar

195.31 KB, 下载次数: 11423, 下载积分: 飘云币 -2 枚

大头贴制作系统 V4.8 脱壳 爆破.part1.rar

大头贴制作系统 V4.8 脱壳 爆破.part2.rar

84.47 KB, 下载次数: 11440, 下载积分: 飘云币 -2 枚

大头贴制作系统 V4.8 脱壳 爆破.part2.rar

评分

参与人数 1威望 +20 收起 理由
tigerisme + 20 好文,鼓励

查看全部评分

PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2006-11-13 18:56:22 | 显示全部楼层
刚看见下面有 3.9 的破文!~
呵呵!~方法不一样
大家共勉
PYG19周年生日快乐!

该用户从未签到

发表于 2006-11-13 21:42:07 | 显示全部楼层
【破文标题】 大头贴制作系统 V4.8 脱壳 爆破

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

【作者邮箱】 [email protected]

 【使用工具】PEiD 0.94  ImportREC   LordPE Deluxe  WinHex

【脱壳平台】 Windows xp sp2

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

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

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

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

【脱壳篇】
        废话少说老规矩先PEID看看 结果显示 ASProtect V2.X Registered -> Alexey Solodovnikov [Overlay] * 用 PEID 的 ASProtect 版本插件看是 Version: ASProtect 2.3 SKE build 06.26 Beta [Extract] 这个版本应该是最新版本的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   OEP  RVA   SIZE  按照上面的添(不要自动查找) 都给计算好了 呵呵 方便啊 、
获取输入表 显示无效(这个没有无效 有的ASProtect加壳需要剪切(可以利用插件跟踪ASProtect的特定函数)) 修复转储 退出 ImportREC。
试运行不能运行。
下面要进行补段
切换到 OD 界面 ALT+M  00E80000 至 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:[ebx+30]     ; un_大头?0245252C
01304CF2     8B7B 14             mov edi,dword ptr ds:[ebx+14]
01304CF5     A1 D02B3201         mov eax,dword ptr ds:[1322BD0]
01304CFA     8B40 34             mov eax,dword ptr ds:[eax+34]     ; nop掉这里
01304CFD     FFD0                call eax                          ; nop掉这里
01304CFF     2945 0C             sub dword ptr ss:[ebp+C],eax      ; nop掉这里
01304D02     8B45 0C             mov eax,dword ptr ss:[ebp+C]      ; sub eax,5
01304D05     2B43 18             sub eax,dword ptr ds:[ebx+18]
01304D08     2B43 68             sub eax,dword ptr ds:[ebx+68]
//----------------------------------------------------------------------------------------------------------------------------------------
修改后是这样
01304CF5     A1 D02B3201         mov eax,dword ptr ds:[1322BD0]
01304CFA     90                  nop                               ; nop掉这里
01304CFB     90                  nop
01304CFC     90                  nop
01304CFD     8B4424 58           mov eax,dword ptr ss:[esp+58]     ; mov eax,dword ptr ss:[esp+58]
01304D01     90                  nop
01304D02     83E8 05             sub eax,5                         ; sub eax,5
01304D05     2B43 90             sub eax,dword ptr ds:[ebx-70]
01304D08     2B43 68             sub eax,dword ptr ds:[ebx+68]
01304D0B     8945 FC             mov dword ptr ss:[ebp-4],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:[2D903B0]
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:[EBP-4],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:[EDI],CL
008C705C    850D 000000EB   TEST DWORD PTR DS:[EB000000],ECX
008C7062    01B2 6A00E8CD   ADD DWORD PTR DS:[EDX+CDE8006A],ESI
008C7068    C501            LDS EAX,FWORD PTR DS:[ECX]               ; 修改段寄存器
008C706A    0083 C404EB01   ADD BYTE PTR DS:[EBX+1EB04C4],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:[EAX],AL
0088084B   |0000            ADD BYTE PTR DS:[EAX],AL
0088084D   \50              PUSH EAX                    这里下断 以后用的到
0088084E    8B5D FC         MOV EBX,DWORD PTR SS:[EBP-4]
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:[EBP-4],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:[EDI],CL
008C705C    850D 000000EB   TEST DWORD PTR DS:[EB000000],ECX
008C7062    01B2 6A00E8CD   ADD DWORD PTR DS:[EDX+CDE8006A],ESI
008C7068    C501            LDS EAX,FWORD PTR DS:[ECX]               ; 段位寄存器修饰
008C706A    0083 C404EB01   ADD BYTE PTR DS:[EBX+1EB04C4],AL
008C7070    74 6A           JE SHORT un_大头?008C70DC
008C7072    0068 01         ADD BYTE PTR DS:[EAX+1],CH
008C7075    0000            ADD BYTE PTR DS:[EAX],AL
008C7077    006A FF         ADD BYTE PTR DS:[EDX-1],CH
008C707A    6A 05           PUSH 5
008C707C    68 58070106     PUSH 6010758
008C7081    68 59070152     PUSH 52010759

008C7057    837D FC 00      CMP DWORD PTR SS:[EBP-4],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:[EAX-6A]
008C704F    FB              STI
008C7050    FF89 45FCEB01   DEC DWORD PTR DS:[ECX+1EBFC45]
008C7056  ^ 7D 83           JGE SHORT un_大头?008C6FDB
008C7058  ^ 7D FC           JGE SHORT un_大头?008C7056
008C705A    000F            ADD BYTE PTR DS:[EDI],CL
008C705C    850D 000000EB   TEST DWORD PTR DS:[EB000000],ECX
008C7062    01B2 6A00E8CD   ADD DWORD PTR DS:[EDX+CDE8006A],ESI
008C7068    C501            LDS EAX,FWORD PTR DS:[ECX]               ; 段位寄存器修饰
008C706A    0083 C404EB01   ADD BYTE PTR DS:[EBX+1EB04C4],AL
008C7070    74 6A           JE SHORT un_大头?008C70DC
008C7072    0068 01         ADD BYTE PTR DS:[EAX+1],CH
008C7075    0000            ADD BYTE PTR DS:[EAX],AL
008C7077    006A FF         ADD BYTE PTR DS:[EDX-1],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:[EBP-4],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:[EDI],CL
008C705C    850D 000000EB   TEST DWORD PTR DS:[EB000000],ECX
008C7062    01B2 6A00E8CD   ADD DWORD PTR DS:[EDX+CDE8006A],ESI
008C7068    C501            LDS EAX,FWORD PTR DS:[ECX]               ; 段位寄存器修饰

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:[EAX],AL
0088084B    0000            ADD BYTE PTR DS:[EAX],AL
0088084D    50              PUSH EAX
0088084E    8B5D FC         MOV EBX,DWORD PTR SS:[EBP-4]
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:[EBP-8]
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:[ECX+ECX*4]         ; 修改段寄存器
00880949    45              INC EBP
0088094A    F4              HLT                                      ; 特权级命令
0088094B    8B5D FC         MOV EBX,DWORD PTR SS:[EBP-4]
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:[EBP-8]
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:[EBP-C],0  // CMP DWORD PTR SS:[EBP-C],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],EAX
0088097C    0000            ADD BYTE PTR DS:[EAX],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:[EAX],AL
0088098E    0000            ADD BYTE PTR DS:[EAX],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
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-5-3 19:45
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2006-11-20 19:56:31 | 显示全部楼层
    好文章
    不过看的有点迷糊
    自己能力不够~!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2025-1-7 13:59
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2007-1-4 23:55:51 | 显示全部楼层
    先看看,学习一下。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2021-10-13 21:08
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-4-25 19:37:58 | 显示全部楼层
    慢慢消化。谢谢/:014
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-4-30 14:11:46 | 显示全部楼层
    楼主写的真是好东东呀,是否把Aspr2.XX_IATfixer_v2.2s 脚本文件给发上来,我在百度搜了一下,都没没有,也可以有加QQ:825236088共同讨论。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-5-1 11:20:21 | 显示全部楼层
    顶一下/:good /:good
    PYG19周年生日快乐!
  • TA的每日心情

    2024-7-20 10:25
  • 签到天数: 36 天

    [LV.5]常住居民I

    发表于 2009-6-15 17:51:33 | 显示全部楼层
    谢谢学习了~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-6-23 12:32:09 | 显示全部楼层
    这个学习研究中~~今天又学习一下~~/:001
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表