首页
社区
课程
招聘
ABC Amber Excel Converter 2.05 多国语言两种脱壳分析
发表于: 2006-4-23 23:01 5775

ABC Amber Excel Converter 2.05 多国语言两种脱壳分析

2006-4-23 23:01
5775

【破文标题】ABC Amber Excel Converter 2.05 多国语言两种脱壳分析
【破文作者】HBQJXHW
【破解工具】PEID,OD,LordPE,ImportREC
【破解平台】Winxp-sp2
【软件名称】ABC Amber Excel Converter 2.05 多国语言
【软件大小】1389KB
【原版下载】http://www.onlinedown.net/soft/28806.htm
【保护方式】壳
【软件简介】ABC Amber Excel Converter是一个可以帮助你快速方便的将XLS文件 (MS Excel)很多格式(DBF, CSV, XML, PDF, HTML, CHM,

RTF, HLP, DOC等),方便你保存收藏,程序内置了对近50种语言的支持,其中包括简体中文和繁体中文!  

【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
参照了fly、lchhome 、weiyi75[Dfcg]等等。在此谢谢了。

------------------------------------------------------------------------

第一步:用PEID载入软件为ASProtect 1.2 / 1.2c-> Alexey Solodovnikov [Overlay]。

第二步:OD不忽略内存访问异常,其余全忽略,隐藏OD,载入程序:
00401000 >  68 01F06F00     PUSH abcexcel.006FF001                   ;停在此处
00401005    C3              RETN
00401006    A2 8034479C     MOV BYTE PTR DS:[9C473480],AL
0040100B    E7 9E           OUT 9E,EAX                               ; I/O 命令
0040100D    49              DEC ECX
0040100E    3C 90           CMP AL,90

按Shift+F9运行、第一次停在这里。
010C009D    3100            XOR DWORD PTR DS:[EAX],EAX                    ;异常在这里
010C009F    EB 01           JMP SHORT 010C00A2
010C00A1    68 648F0500     PUSH 58F64
010C00A6    0000            ADD BYTE PTR DS:[EAX],AL

继续按Shift+F9运行,注意观察堆栈区
我按了十七次,看堆栈区
0012D738   0012D740  指向下一个 SEH 记录的指针
0012D73C   010C0217  SE处理程序
0012D740   0012FFE0  指向下一个 SEH 记录的指针
0012D744   010C0A6F  SE处理程序
0012D748   0012FF90
0012D74C   010B0000
0012D750   01090000
0012D754   010C0038
0012D758   00000000
0012D75C   010D737C  ASCII "Aw8xPQBAGNw="                          ;出现硬盘指纹

继续按Shift+F9运行一次 ,再看堆栈区
0012D738   0012D740  指向下一个 SEH 记录的指针
0012D73C   010C09E2  SE处理程序
0012D740   0012FFE0  指向下一个 SEH 记录的指针
0012D744   010C0A6F  SE处理程序
0012D748   0012FF90
0012D74C   010B0000
0012D750   01090000
0012D754   010C0038
0012D758   00000000
0012D75C   010D73D8  ASCII "SOFTWARE\ProcessText Group\Excel Converter"硬盘指纹消失
0012D760   00000000

此时注意了:
010C0A2B    3100            XOR DWORD PTR DS:[EAX],EAX                    ;异常停在此处
010C0A2D    EB 01           JMP SHORT 010C0A30
010C0A2F    68 648F0500     PUSH 58F64
010C0A34    0000            ADD BYTE PTR DS:[EAX],AL
010C0A36    00EB            ADD BL,CH
010C0A38    02E8            ADD CH,AL
010C0A3A    0158 33         ADD DWORD PTR DS:[EAX+33],EBX
010C0A3D    C05A 59 59      RCR BYTE PTR DS:[EDX+59],59              ; 移位常量超出 1..31 的范围
010C0A41    64:8910         MOV DWORD PTR FS:[EAX],EDX
010C0A44    68 760A0C01     PUSH 10C0A76
010C0A49    8D85 C8D7FFFF   LEA EAX,DWORD PTR SS:[EBP-2838]
010C0A4F    BA 02000000     MOV EDX,2
010C0A54    E8 5727FFFF     CALL 010B31B0
010C0A59    8D45 C8         LEA EAX,DWORD PTR SS:[EBP-38]
010C0A5C    E8 2F27FFFF     CALL 010B3190
010C0A61    8D45 D0         LEA EAX,DWORD PTR SS:[EBP-30]
010C0A64    BA 02000000     MOV EDX,2
010C0A69    E8 4227FFFF     CALL 010B31B0
010C0A6E    C3              RETN
010C0A6F  ^ E9 7423FFFF     JMP 010B2DE8
010C0A74  ^ EB D3           JMP SHORT 010C0A49
010C0A76    5F              POP EDI
010C0A77    5E              POP ESI
010C0A78    5B              POP EBX
010C0A79    8BE5            MOV ESP,EBP
010C0A7B    5D              POP EBP
010C0A7C    C3              RETN                在此下断,Shift+F9运行,中断了,F7返回010BDFB0

010BDFB0    68 952D21FD     PUSH FD212D95                        ;返回在此
010BDFB5    68 680F0000     PUSH 0F68
010BDFBA    68 44D00000     PUSH 0D044
010BDFBF    68 00600100     PUSH 16000
010BDFC4    FF35 14300C01   PUSH DWORD PTR DS:[10C3014]
010BDFCA    E8 71E8FFFF     CALL 010BC840
010BDFCF    310424          XOR DWORD PTR SS:[ESP],EAX
010BDFD2    8B05 14300C01   MOV EAX,DWORD PTR DS:[10C3014]
010BDFD8    010424          ADD DWORD PTR SS:[ESP],EAX
010BDFDB    C3              RETN
010BDFDC    C3              RETN

AIT+M,找到00401000句,按F2下断
内存映射, 条目 23
地址=00401000
大小=0025D000 (2478080.)
属主=abcexcel 00400000
区段=
包含=代码
类型=Imag 01001002
访问=R
初始访问=RWE

Shift+f9运行三次,来到OEP处
0065DBC4    55              PUSH EBP              来到此处,为OEP
0065DBC5    8BEC            MOV EBP,ESP
0065DBC7    81C4 E8FEFFFF   ADD ESP,-118
0065DBCD    53              PUSH EBX
0065DBCE    56              PUSH ESI
0065DBCF    33C0            XOR EAX,EAX
0065DBD1    8945 E8         MOV DWORD PTR SS:[EBP-18],EAX
0065DBD4    8945 F0         MOV DWORD PTR SS:[EBP-10],EAX
0065DBD7    8945 EC         MOV DWORD PTR SS:[EBP-14],EAX
0065DBDA    B8 4CD46500     MOV EAX,abcexcel.0065D44C
0065DBDF    E8 54A6DAFF     CALL abcexcel.00408238
0065DBE4    33C0            XOR EAX,EAX
0065DBE6    55              PUSH EBP
0065DBE7    68 AEDC6500     PUSH abcexcel.0065DCAE
0065DBEC    64:FF30         PUSH DWORD PTR FS:[EAX]
0065DBEF    64:8920         MOV DWORD PTR FS:[EAX],ESP
0065DBF2    8D55 EC         LEA EDX,DWORD PTR SS:[EBP-14]
0065DBF5    33C0            XOR EAX,EAX
0065DBF7    E8 1C50DAFF     CALL abcexcel.00402C18
0065DBFC    8B45 EC         MOV EAX,DWORD PTR SS:[EBP-14]
0065DBFF    8D4D F0         LEA ECX,DWORD PTR SS:[EBP-10]
0065DC02    BA C4DC6500     MOV EDX,abcexcel.0065DCC4                ; ASCII ".INI"
0065DC07    E8 B4D2DAFF     CALL abcexcel.0040AEC0
0065DC0C    8B4D F0         MOV ECX,DWORD PTR SS:[EBP-10]
0065DC0F    B2 01           MOV DL,1
0065DC11    A1 7C024600     MOV EAX,DWORD PTR DS:[46027C]
0065DC16    E8 0927E0FF     CALL abcexcel.00460324
0065DC1B    8BD8            MOV EBX,EAX
0065DC1D    6A 00           PUSH 0
0065DC1F    B9 D4DC6500     MOV ECX,abcexcel.0065DCD4                ; ASCII "MultipleInstances"
0065DC24    BA F0DC6500     MOV EDX,abcexcel.0065DCF0                ; ASCII "Application"
0065DC29    8BC3            MOV EAX,EBX
0065DC2B    8B30            MOV ESI,DWORD PTR DS:[EAX]
0065DC2D    FF56 10         CALL DWORD PTR DS:[ESI+10]
0065DC30    8B15 EC826600   MOV EDX,DWORD PTR DS:[6682EC]            ; abcexcel.0066A681
0065DC36    8802            MOV BYTE PTR DS:[EDX],AL
0065DC38    8BC3            MOV EAX,EBX
0065DC3A    E8 2957DAFF     CALL abcexcel.00403368
0065DC3F    A1 EC826600     MOV EAX,DWORD PTR DS:[6682EC]
0065DC44    8038 00         CMP BYTE PTR DS:[EAX],0
0065DC47    75 2C           JNZ SHORT abcexcel.0065DC75
0065DC49    8D95 E8FEFFFF   LEA EDX,DWORD PTR SS:[EBP-118]
0065DC4F    A1 ECCD6400     MOV EAX,DWORD PTR DS:[64CDEC]
0065DC54    E8 5756DAFF     CALL abcexcel.004032B0
0065DC59    8D95 E8FEFFFF   LEA EDX,DWORD PTR SS:[EBP-118]
0065DC5F    8D45 E8         LEA EAX,DWORD PTR SS:[EBP-18]
0065DC62    E8 6967DAFF     CALL abcexcel.004043D0
0065DC67    8B45 E8         MOV EAX,DWORD PTR SS:[EBP-18]
0065DC6A    33D2            XOR EDX,EDX
0065DC6C    E8 8B22E0FF     CALL abcexcel.0045FEFC
0065DC71    84C0            TEST AL,AL
0065DC73    75 1E           JNZ SHORT abcexcel.0065DC93
0065DC75    A1 30856600     MOV EAX,DWORD PTR DS:[668530]
0065DC7A    8B00            MOV EAX,DWORD PTR DS:[EAX]
0065DC7C    E8 9BA4DFFF     CALL abcexcel.0045811C
0065DC81    FF15 247C6600   CALL DWORD PTR DS:[667C24]                                ;这个地方要注意,以后有用。
0065DC87    A1 30856600     MOV EAX,DWORD PTR DS:[668530]
0065DC8C    8B00            MOV EAX,DWORD PTR DS:[EAX]
0065DC8E    E8 21A5DFFF     CALL abcexcel.004581B4
0065DC93    33C0            XOR EAX,EAX
0065DC95    5A              POP EDX
0065DC96    59              POP ECX
0065DC97    59              POP ECX
0065DC98    64:8910         MOV DWORD PTR FS:[EAX],EDX
0065DC9B    68 B5DC6500     PUSH abcexcel.0065DCB5
0065DCA0    8D45 E8         LEA EAX,DWORD PTR SS:[EBP-18]
0065DCA3    BA 03000000     MOV EDX,3
0065DCA8    E8 2365DAFF     CALL abcexcel.004041D0
0065DCAD    C3              RETN

第三步:用OD插件DUMP它。程序不能运行,再用ImportREC 载入程序,OEP=25DBC4,点“IAT自动搜索”
――“获得输入信息”,有很多无效指针,先用“追踪等级1级”修复,再用插件ASProtect 1.22追踪,OK全部为有效指针,修复它吧!
第四步:运行修复后的程序还是不能正常运行,用OD载入修复后的程序,F9运行,出现异常
注意堆栈区
0012FE90   0065DC87  返回到 dumped_.<模块入口点>+0C3 来自 010BC784   注意这行
0012FE94   0012FFB4  指向下一个 SEH 记录的指针
0012FE98   0065DCAE  SE处理程序
0012FE9C   0012FFC0
---------------------------------------
0065DBC4 >/$  55            PUSH EBP
0065DBC5  |.  8BEC          MOV EBP,ESP
0065DBC7  |.  81C4 E8FEFFFF ADD ESP,-118
0065DBCD  |.  53            PUSH EBX
0065DBCE  |.  56            PUSH ESI
0065DBCF  |.  33C0          XOR EAX,EAX
0065DBD1  |.  8945 E8       MOV DWORD PTR SS:[EBP-18],EAX
0065DBD4  |.  8945 F0       MOV DWORD PTR SS:[EBP-10],EAX
0065DBD7  |.  8945 EC       MOV DWORD PTR SS:[EBP-14],EAX
0065DBDA  |.  B8 4CD46500   MOV EAX,dumped_.0065D44C
0065DBDF  |.  E8 54A6DAFF   CALL dumped_.00408238
0065DBE4  |.  33C0          XOR EAX,EAX
0065DBE6  |.  55            PUSH EBP
0065DBE7  |.  68 AEDC6500   PUSH dumped_.0065DCAE
0065DBEC  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
0065DBEF  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
0065DBF2  |.  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
0065DBF5  |.  33C0          XOR EAX,EAX
0065DBF7  |.  E8 1C50DAFF   CALL dumped_.00402C18
0065DBFC  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]
0065DBFF  |.  8D4D F0       LEA ECX,DWORD PTR SS:[EBP-10]
0065DC02  |.  BA C4DC6500   MOV EDX,dumped_.0065DCC4                 ;  ASCII ".INI"
0065DC07  |.  E8 B4D2DAFF   CALL dumped_.0040AEC0
0065DC0C  |.  8B4D F0       MOV ECX,DWORD PTR SS:[EBP-10]
0065DC0F  |.  B2 01         MOV DL,1
0065DC11  |.  A1 7C024600   MOV EAX,DWORD PTR DS:[46027C]
0065DC16  |.  E8 0927E0FF   CALL dumped_.00460324
0065DC1B  |.  8BD8          MOV EBX,EAX
0065DC1D  |.  6A 00         PUSH 0
0065DC1F  |.  B9 D4DC6500   MOV ECX,dumped_.0065DCD4                 ;  ASCII "MultipleInstances"
0065DC24  |.  BA F0DC6500   MOV EDX,dumped_.0065DCF0                 ;  ASCII "Application"
0065DC29  |.  8BC3          MOV EAX,EBX
0065DC2B  |.  8B30          MOV ESI,DWORD PTR DS:[EAX]
0065DC2D  |.  FF56 10       CALL DWORD PTR DS:[ESI+10]
0065DC30  |.  8B15 EC826600 MOV EDX,DWORD PTR DS:[6682EC]            ;  dumped_.0066A681
0065DC36  |.  8802          MOV BYTE PTR DS:[EDX],AL
0065DC38  |.  8BC3          MOV EAX,EBX
0065DC3A  |.  E8 2957DAFF   CALL dumped_.00403368
0065DC3F  |.  A1 EC826600   MOV EAX,DWORD PTR DS:[6682EC]
0065DC44  |.  8038 00       CMP BYTE PTR DS:[EAX],0
0065DC47  |.  75 2C         JNZ SHORT dumped_.0065DC75
0065DC49  |.  8D95 E8FEFFFF LEA EDX,DWORD PTR SS:[EBP-118]
0065DC4F  |.  A1 ECCD6400   MOV EAX,DWORD PTR DS:[64CDEC]
0065DC54  |.  E8 5756DAFF   CALL dumped_.004032B0
0065DC59  |.  8D95 E8FEFFFF LEA EDX,DWORD PTR SS:[EBP-118]
0065DC5F  |.  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
0065DC62  |.  E8 6967DAFF   CALL dumped_.004043D0
0065DC67  |.  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]
0065DC6A  |.  33D2          XOR EDX,EDX
0065DC6C  |.  E8 8B22E0FF   CALL dumped_.0045FEFC
0065DC71  |.  84C0          TEST AL,AL
0065DC73  |.  75 1E         JNZ SHORT dumped_.0065DC93
0065DC75  |>  A1 30856600   MOV EAX,DWORD PTR DS:[668530]
0065DC7A  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
0065DC7C  |.  E8 9BA4DFFF   CALL dumped_.0045811C
0065DC81  |.  FF15 247C6600 CALL DWORD PTR DS:[667C24]                        ;这个Call出错了,在此下断。
0065DC87  |.  A1 30856600   MOV EAX,DWORD PTR DS:[668530]                ;<模块入口点>+0C3。
0065DC8C  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
0065DC8E  |.  E8 21A5DFFF   CALL dumped_.004581B4
0065DC93  |>  33C0          XOR EAX,EAX
0065DC95  |.  5A            POP EDX
0065DC96  |.  59            POP ECX
0065DC97  |.  59            POP ECX
0065DC98  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
0065DC9B  |.  68 B5DC6500   PUSH dumped_.0065DCB5
0065DCA0  |>  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
0065DCA3  |.  BA 03000000   MOV EDX,3
0065DCA8  |.  E8 2365DAFF   CALL dumped_.004041D0
0065DCAD  \.  C3            RETN
-----------------------------------

OD不忽略内存访问异常,其余全忽略,隐藏OD,载入未脱壳的程序,运行到原先注意的地方。
//0065DC81    FF15 247C6600   CALL DWORD PTR DS:[667C24]  ;这个地方要注意,以后有用。//

在命令行下“d 00667c24”,在数据窗口可看到
00667C24  010BC784
00667C28  0049E438  abcexcel.0049E438
00667C2C  0049E458  abcexcel.0049E458
00667C30  006634C0  abcexcel.006634C0

F7进入CALL,
010BC784    833D A8350C01 0>CMP DWORD PTR DS:[10C35A8],0
010BC78B    74 06           JE SHORT 010BC793
010BC78D    FF15 A8350C01   CALL DWORD PTR DS:[10C35A8]              ; abcexcel.0065D3DC
010BC793    C3              RETN
在命令行下“d 10C35A8”,在数据窗口可看到
010C35A8  0065D3DC  abcexcel.0065D3DC
010C35AC  00000000
010C35B0  00000000
010C35B4  00000000
010C35B8  00000000
010C35BC  010D737C  ASCII "Aw8xPQBAGNw="
好了收工。

载入脱壳后的程序
//0065DC81  |.  FF15 247C6600 CALL DWORD PTR DS:[667C24]  ;这个Call出错了,在此下断。//
在命令行下“d 00667c24”,在数据窗口可看到
00667C24  010BC784                这个值要修改 ,修改为“0065D3DC”
00667C28  0049E438  dumped_.0049E438
00667C2C  0049E458  dumped_.0049E458
00667C30  006634C0  dumped_.006634C0

然后复制到可执行文件,保存!

运行,OK了!

===========================================================================================

另一种方法达到OEP

第一步:用PEID载入软件为ASProtect 1.2 / 1.2c-> Alexey Solodovnikov [Overlay]。

第二步:OD不忽略内存访问异常,其余全忽略,隐藏OD,载入程序:
00401000 >  68 01F06F00     PUSH abcexcel.006FF001                   ;停在此处
00401005    C3              RETN
00401006    A2 8034479C     MOV BYTE PTR DS:[9C473480],AL
0040100B    E7 9E           OUT 9E,EAX                               ; I/O 命令
0040100D    49              DEC ECX
0040100E    3C 90           CMP AL,90

按Shift+F9,21下之后程序运行。好重来一下,按Shift+F9,20下。

AIT+M,找到00401000句,按F2下断
内存映射, 条目 23
地址=00401000
大小=0025D000 (2478080.)
属主=abcexcel 00400000
区段=
包含=代码
类型=Imag 01001002
访问=R
初始访问=RWE

来到OEP处
0065DBC4    55              PUSH EBP              来到此处,为OEP
0065DBC5    8BEC            MOV EBP,ESP
0065DBC7    81C4 E8FEFFFF   ADD ESP,-118
0065DBCD    53              PUSH EBX
0065DBCE    56              PUSH ESI
0065DBCF    33C0            XOR EAX,EAX
0065DBD1    8945 E8         MOV DWORD PTR SS:[EBP-18],EAX
0065DBD4    8945 F0         MOV DWORD PTR SS:[EBP-10],EAX
0065DBD7    8945 EC         MOV DWORD PTR SS:[EBP-14],EAX

第三步:用OD插件DUMP它。程序不能运行,再用ImportREC 载入程序,OEP=25DBC4,点“IAT自动搜索”
――“获得输入信息”,有很多无效指针,先用“追踪等级1级”修复,再用插件ASProtect 1.22追踪。
最后只有一个无效指针。

当前输入函数信息:
16 (十进制:22)  增加: +1
25C (十进制:604) 输入函数
(1 (十进制:1)  无效指针(s)  增加: -1
使用反汇编/十六制为有用。
看到第一个为//=kernel32.dll/0198/GetProcAddress
好了把它改为GetProcAddress。修复它吧!

余下的与上面的第四步一样哟。省略 ...  ...

------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (2)
雪    币: 146
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
支持一下
2006-4-24 02:02
0
雪    币: 333
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wan
3
好文```学习了````
2006-4-24 13:35
0
游客
登录 | 注册 方可回帖
返回
//