标题:手动脱壳入门第十二篇Dxpack 0.86

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

时间:2006/8/28 17:20:28

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

内容:

xTiNt
 手动脱壳入门第十二篇Dxpack 0.86  
手动脱壳入门第十二篇Dxpack 0.86
【脱文标题】 手动脱壳入门第十二篇Dxpack 0.86
【脱文作者】 weiyi75[Dfcg] 
【作者邮箱】 weiyi75@sohu.com 
【作者主页】 Dfcg官方大本营 
【使用工具】 Peid,Ollydbg
【脱壳平台】 Win2K/XP
【软件名称】 Dxpack 0.86加壳的一个Win98的记事本
【软件简介】 Dxpack 是一Win32PE格式可执行文件压缩程序,程序界面有中英文两种。可以压缩资源,输入输出表。打开文件可以用三种方法,1:用界面上的打开按钮,2:直接拖放文件,3:右健菜单或命令行。主要目的是减少可执行文件的体积。兼可起到加密可执行文件的目的。程序压缩过后执行速度不会减慢,对于大的文件,甚至有所改善。由于时间有限,压缩算法采用Joergen Ibsen'"aPLib"库。没有自行研究压缩算法Joergen Ibsen'"aPLib"库可以免费用于个人用户,本程序及可免费用于个人用户。
【软件大小】 17.6 KB
【加壳方式】 未知壳
【保护方式】 Dxpack
【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:
软件截图。
 
程序下载地址
本地下载
首先必须的工具要准备好
脱壳目标,Dxpack0.86加壳的记事本。
本地下载
用Peid或FI测NOTEPAD.EXE都不能识别,因为它是国产的壳,名气也不高,著名的终极上网提速软件就是用这个软件加的壳,并略作修改使Peid查不出Oep。两大查壳软件数据库中无它的特征码,不过在加壳目标用Peid查看Ep区段可看到.dxpack的加壳标志。看截图压缩选项和软件名可知道这个软件非加密壳,以压缩为目的.
手动脱壳建议大家用Ollydbg,工作平台Win2000,WinXp,Win9x不推荐。
手动脱壳时,用Olldbg载入程序,脱壳程序里面会有有好多循环。对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。不要用Peid查入口,单步跟踪,提高手动找入口能力。
用OD载入程序后。
确定一个入口警告,然后Od提示程序加壳,选不继续分析。
停在这里
0040D000 > 60 PUSHAD 通过前面的文章是不是很熟悉这个指令了,出口处会有PopAd指令与它对应。
0040D001 E8 00000000 CALL NOTEPAD.0040D006 变形jmp
0040D006 5D POP EBP
0040D007 8BFD MOV EDI,EBP
0040D009 81ED 06104000 SUB EBP,NOTEPAD.00401006
0040D00F 2BBD 94124000 SUB EDI,DWORD PTR SS:[EBP+401294]
0040D015 81EF 06000000 SUB EDI,6
0040D01B 83BD 14134000 0>CMP DWORD PTR SS:[EBP+401314],1
0040D022 /0F84 2F010000 JE NOTEPAD.0040D157 这里没跳走,让我们到40D157看看
0040D028 |C785 14134000 0>MOV DWORD PTR SS:[EBP+401314],1
0040D032 |89BD 1C134000 MOV DWORD PTR SS:[EBP+40131C],EDI
0040D038 |8D9D B2114000 LEA EBX,DWORD PTR SS:[EBP+4011B2]
0040D03E |8DB5 65114000 LEA ESI,DWORD PTR SS:[EBP+401165]
0040D044 |46 INC ESI
0040D045 |803E 00 CMP BYTE PTR DS:[ESI],0
0040D048 |74 24 JE SHORT NOTEPAD.0040D06E
0040D04A |56 PUSH ESI
0040D04B |FF95 34124000 CALL DWORD PTR SS:[EBP+401234]
0040D051 |46 INC ESI
0040D052 |803E 00 CMP BYTE PTR DS:[ESI],0
0040D055 ^|75 FA JNZ SHORT NOTEPAD.0040D051 中间的全是解压过程循环.
0040D057 |46 INC ESI
0040D058 |803E 00 CMP BYTE PTR DS:[ESI],0
0040D05B ^|74 E7 JE SHORT NOTEPAD.0040D044
0040D05D |50 PUSH EAX
0040D05E |56 PUSH ESI
0040D05F |50 PUSH EAX
0040D060 |FF95 38124000 CALL DWORD PTR SS:[EBP+401238]
0040D066 |8903 MOV DWORD PTR DS:[EBX],EAX
0040D068 |58 POP EAX
0040D069 |83C3 04 ADD EBX,4
0040D06C ^|EB E3 JMP SHORT NOTEPAD.0040D051
0040D06E |8DB5 A4124000 LEA ESI,DWORD PTR SS:[EBP+4012A4]
0040D074 |8B46 04 MOV EAX,DWORD PTR DS:[ESI+4]
0040D077 |6A 04 PUSH 4
0040D079 |68 00300000 PUSH 3000
0040D07E |50 PUSH EAX
0040D07F |6A 00 PUSH 0
0040D081 |FF95 B2114000 CALL DWORD PTR SS:[EBP+4011B2]
0040D087 |8985 61124000 MOV DWORD PTR SS:[EBP+401261],EAX
0040D08D |56 PUSH ESI
0040D08E |8B1E MOV EBX,DWORD PTR DS:[ESI]
0040D090 |039D 1C134000 ADD EBX,DWORD PTR SS:[EBP+40131C]
0040D096 |50 PUSH EAX
0040D097 |53 PUSH EBX
0040D098 |E8 13030000 CALL NOTEPAD.0040D3B0
0040D09D |83C4 08 ADD ESP,8
0040D0A0 |8B4E 04 MOV ECX,DWORD PTR DS:[ESI+4]
0040D0A3 |8B3E MOV EDI,DWORD PTR DS:[ESI]
0040D0A5 |03BD 1C134000 ADD EDI,DWORD PTR SS:[EBP+40131C]
0040D0AB |8BB5 61124000 MOV ESI,DWORD PTR SS:[EBP+401261]
0040D0B1 |F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
0040D0B3 |5E POP ESI
0040D0B4 |8B85 61124000 MOV EAX,DWORD PTR SS:[EBP+401261]
0040D0BA |68 00800000 PUSH 8000
0040D0BF |6A 00 PUSH 0
0040D0C1 |50 PUSH EAX
0040D0C2 |FF95 B6114000 CALL DWORD PTR SS:[EBP+4011B6]
0040D0C8 |83C6 08 ADD ESI,8
0040D0CB |833E 00 CMP DWORD PTR DS:[ESI],0
0040D0CE ^|75 A4 JNZ SHORT NOTEPAD.0040D074
0040D0D0 |E8 4F020000 CALL NOTEPAD.0040D324
0040D0D5 |8BB5 98124000 MOV ESI,DWORD PTR SS:[EBP+401298]
0040D0DB |8BBD 1C134000 MOV EDI,DWORD PTR SS:[EBP+40131C]
0040D0E1 |8B443E 0C MOV EAX,DWORD PTR DS:[ESI+EDI+C]
0040D0E5 |0BC0 OR EAX,EAX
0040D0E7 |74 6E JE SHORT NOTEPAD.0040D157
0040D0E9 |03C7 ADD EAX,EDI
0040D0EB |50 PUSH EAX
0040D0EC |FF95 34124000 CALL DWORD PTR SS:[EBP+401234]
0040D0F2 |0BC0 OR EAX,EAX
0040D0F4 |74 43 JE SHORT NOTEPAD.0040D139
0040D0F6 |8B1C3E MOV EBX,DWORD PTR DS:[ESI+EDI]
0040D0F9 |8B4C3E 10 MOV ECX,DWORD PTR DS:[ESI+EDI+10]
0040D0FD |83C6 14 ADD ESI,14
0040D100 |0BDB OR EBX,EBX
0040D102 |75 02 JNZ SHORT NOTEPAD.0040D106
0040D104 |8BD9 MOV EBX,ECX
0040D106 |8B143B MOV EDX,DWORD PTR DS:[EBX+EDI]
0040D109 |83C3 04 ADD EBX,4
0040D10C |0BD2 OR EDX,EDX
0040D10E ^|74 D1 JE SHORT NOTEPAD.0040D0E1
0040D110 |F7C2 00000080 TEST EDX,80000000
0040D116 |74 05 JE SHORT NOTEPAD.0040D11D
0040D118 |0FB7D2 MOVZX EDX,DX
0040D11B |EB 04 JMP SHORT NOTEPAD.0040D121
0040D11D |8D543A 02 LEA EDX,DWORD PTR DS:[EDX+EDI+2]
0040D121 |50 PUSH EAX
0040D122 |51 PUSH ECX
0040D123 |52 PUSH EDX
0040D124 |50 PUSH EAX
0040D125 |FF95 38124000 CALL DWORD PTR SS:[EBP+401238]
0040D12B |59 POP ECX
0040D12C |0BC0 OR EAX,EAX
0040D12E |74 09 JE SHORT NOTEPAD.0040D139
0040D130 |890439 MOV DWORD PTR DS:[ECX+EDI],EAX
0040D133 |58 POP EAX
0040D134 |83C1 04 ADD ECX,4
0040D137 ^|EB CD JMP SHORT NOTEPAD.0040D106 往回跳
0040D139 |8D8D 65124000 LEA ECX,DWORD PTR SS:[EBP+401265]
0040D13F |8D85 84124000 LEA EAX,DWORD PTR SS:[EBP+401284]
0040D145 |6A 00 PUSH 0
0040D147 |50 PUSH EAX
0040D148 |51 PUSH ECX
0040D149 |6A 00 PUSH 0
0040D14B |FF95 BE114000 CALL DWORD PTR SS:[EBP+4011BE]
0040D151 |FFA5 BA114000 JMP DWORD PTR SS:[EBP+4011BA] 
0040D157 \8B85 9C124000 MOV EAX,DWORD PTR SS:[EBP+40129C] 到这里看看.
0040D15D 03C7 ADD EAX,EDI
0040D15F 894424 1C MOV DWORD PTR SS:[ESP+1C],EAX
0040D163 61 POPAD 这个是什么,关键字与入口处对称.中间代码也没有Popad指令,不用怀疑,这里就是解压后的出口.让我们直接F2在这里下断点,F9运行到这里后再F2取消断点.
0040D164 FFE0 JMP EAX 这个就是跨段跳跃,F8到达Oep处.
004010CC 55 PUSH EBP
经过Popad关键字,并跨段跳跃到入口,我们在这里用Od的Dump插件直接脱壳。
004010CD 8BEC MOV EBP,ESP
004010CF 83EC 44 SUB ESP,44
004010D2 56 PUSH ESI
004010D3 FF15 E4634000 CALL DWORD PTR DS:[4063E4] ; KERNEL32.GetCommandLineA
004010D9 8BF0 MOV ESI,EAX
004010DB 8A00 MOV AL,BYTE PTR DS:[EAX]
004010DD 3C 22 CMP AL,22
004010DF 75 1B JNZ SHORT NOTEPAD.004010FC
004010E1 56 PUSH ESI
重建输入表时,插件有两个选项。Method2重建输入表很快,脱壳后运行率高。Method1重建输入表慢,脱壳后运行率较低。不过本程序用Method2重建输入表无法运行,Method1重建输入表后程序可直接运行。
"手动脱壳入门第十二篇"脱壳动画!

  
 

  

xTiNt
 手动脱壳入门第十二篇Dxpack 0.86  
手动脱壳入门第十二篇Dxpack 0.86
【脱文标题】 手动脱壳入门第十二篇Dxpack 0.86
【脱文作者】 weiyi75[Dfcg] 
【作者邮箱】 weiyi75@sohu.com 
【作者主页】 Dfcg官方大本营 
【使用工具】 Peid,Ollydbg
【脱壳平台】 Win2K/XP
【软件名称】 Dxpack 0.86加壳的一个Win98的记事本
【软件简介】 Dxpack 是一Win32PE格式可执行文件压缩程序,程序界面有中英文两种。可以压缩资源,输入输出表。打开文件可以用三种方法,1:用界面上的打开按钮,2:直接拖放文件,3:右健菜单或命令行。主要目的是减少可执行文件的体积。兼可起到加密可执行文件的目的。程序压缩过后执行速度不会减慢,对于大的文件,甚至有所改善。由于时间有限,压缩算法采用Joergen Ibsen'"aPLib"库。没有自行研究压缩算法Joergen Ibsen'"aPLib"库可以免费用于个人用户,本程序及可免费用于个人用户。
【软件大小】 17.6 KB
【加壳方式】 未知壳
【保护方式】 Dxpack
【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:
软件截图。
 
程序下载地址
本地下载
首先必须的工具要准备好
脱壳目标,Dxpack0.86加壳的记事本。
本地下载
用Peid或FI测NOTEPAD.EXE都不能识别,因为它是国产的壳,名气也不高,著名的终极上网提速软件就是用这个软件加的壳,并略作修改使Peid查不出Oep。两大查壳软件数据库中无它的特征码,不过在加壳目标用Peid查看Ep区段可看到.dxpack的加壳标志。看截图压缩选项和软件名可知道这个软件非加密壳,以压缩为目的.
手动脱壳建议大家用Ollydbg,工作平台Win2000,WinXp,Win9x不推荐。
手动脱壳时,用Olldbg载入程序,脱壳程序里面会有有好多循环。对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。不要用Peid查入口,单步跟踪,提高手动找入口能力。
用OD载入程序后。
确定一个入口警告,然后Od提示程序加壳,选不继续分析。
停在这里
0040D000 > 60 PUSHAD 通过前面的文章是不是很熟悉这个指令了,出口处会有PopAd指令与它对应。
0040D001 E8 00000000 CALL NOTEPAD.0040D006 变形jmp
0040D006 5D POP EBP
0040D007 8BFD MOV EDI,EBP
0040D009 81ED 06104000 SUB EBP,NOTEPAD.00401006
0040D00F 2BBD 94124000 SUB EDI,DWORD PTR SS:[EBP+401294]
0040D015 81EF 06000000 SUB EDI,6
0040D01B 83BD 14134000 0>CMP DWORD PTR SS:[EBP+401314],1
0040D022 /0F84 2F010000 JE NOTEPAD.0040D157 这里没跳走,让我们到40D157看看
0040D028 |C785 14134000 0>MOV DWORD PTR SS:[EBP+401314],1
0040D032 |89BD 1C134000 MOV DWORD PTR SS:[EBP+40131C],EDI
0040D038 |8D9D B2114000 LEA EBX,DWORD PTR SS:[EBP+4011B2]
0040D03E |8DB5 65114000 LEA ESI,DWORD PTR SS:[EBP+401165]
0040D044 |46 INC ESI
0040D045 |803E 00 CMP BYTE PTR DS:[ESI],0
0040D048 |74 24 JE SHORT NOTEPAD.0040D06E
0040D04A |56 PUSH ESI
0040D04B |FF95 34124000 CALL DWORD PTR SS:[EBP+401234]
0040D051 |46 INC ESI
0040D052 |803E 00 CMP BYTE PTR DS:[ESI],0
0040D055 ^|75 FA JNZ SHORT NOTEPAD.0040D051 中间的全是解压过程循环.
0040D057 |46 INC ESI
0040D058 |803E 00 CMP BYTE PTR DS:[ESI],0
0040D05B ^|74 E7 JE SHORT NOTEPAD.0040D044
0040D05D |50 PUSH EAX
0040D05E |56 PUSH ESI
0040D05F |50 PUSH EAX
0040D060 |FF95 38124000 CALL DWORD PTR SS:[EBP+401238]
0040D066 |8903 MOV DWORD PTR DS:[EBX],EAX
0040D068 |58 POP EAX
0040D069 |83C3 04 ADD EBX,4
0040D06C ^|EB E3 JMP SHORT NOTEPAD.0040D051
0040D06E |8DB5 A4124000 LEA ESI,DWORD PTR SS:[EBP+4012A4]
0040D074 |8B46 04 MOV EAX,DWORD PTR DS:[ESI+4]
0040D077 |6A 04 PUSH 4
0040D079 |68 00300000 PUSH 3000
0040D07E |50 PUSH EAX
0040D07F |6A 00 PUSH 0
0040D081 |FF95 B2114000 CALL DWORD PTR SS:[EBP+4011B2]
0040D087 |8985 61124000 MOV DWORD PTR SS:[EBP+401261],EAX
0040D08D |56 PUSH ESI
0040D08E |8B1E MOV EBX,DWORD PTR DS:[ESI]
0040D090 |039D 1C134000 ADD EBX,DWORD PTR SS:[EBP+40131C]
0040D096 |50 PUSH EAX
0040D097 |53 PUSH EBX
0040D098 |E8 13030000 CALL NOTEPAD.0040D3B0
0040D09D |83C4 08 ADD ESP,8
0040D0A0 |8B4E 04 MOV ECX,DWORD PTR DS:[ESI+4]
0040D0A3 |8B3E MOV EDI,DWORD PTR DS:[ESI]
0040D0A5 |03BD 1C134000 ADD EDI,DWORD PTR SS:[EBP+40131C]
0040D0AB |8BB5 61124000 MOV ESI,DWORD PTR SS:[EBP+401261]
0040D0B1 |F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
0040D0B3 |5E POP ESI
0040D0B4 |8B85 61124000 MOV EAX,DWORD PTR SS:[EBP+401261]
0040D0BA |68 00800000 PUSH 8000
0040D0BF |6A 00 PUSH 0
0040D0C1 |50 PUSH EAX
0040D0C2 |FF95 B6114000 CALL DWORD PTR SS:[EBP+4011B6]
0040D0C8 |83C6 08 ADD ESI,8
0040D0CB |833E 00 CMP DWORD PTR DS:[ESI],0
0040D0CE ^|75 A4 JNZ SHORT NOTEPAD.0040D074
0040D0D0 |E8 4F020000 CALL NOTEPAD.0040D324
0040D0D5 |8BB5 98124000 MOV ESI,DWORD PTR SS:[EBP+401298]
0040D0DB |8BBD 1C134000 MOV EDI,DWORD PTR SS:[EBP+40131C]
0040D0E1 |8B443E 0C MOV EAX,DWORD PTR DS:[ESI+EDI+C]
0040D0E5 |0BC0 OR EAX,EAX
0040D0E7 |74 6E JE SHORT NOTEPAD.0040D157
0040D0E9 |03C7 ADD EAX,EDI
0040D0EB |50 PUSH EAX
0040D0EC |FF95 34124000 CALL DWORD PTR SS:[EBP+401234]
0040D0F2 |0BC0 OR EAX,EAX
0040D0F4 |74 43 JE SHORT NOTEPAD.0040D139
0040D0F6 |8B1C3E MOV EBX,DWORD PTR DS:[ESI+EDI]
0040D0F9 |8B4C3E 10 MOV ECX,DWORD PTR DS:[ESI+EDI+10]
0040D0FD |83C6 14 ADD ESI,14
0040D100 |0BDB OR EBX,EBX
0040D102 |75 02 JNZ SHORT NOTEPAD.0040D106
0040D104 |8BD9 MOV EBX,ECX
0040D106 |8B143B MOV EDX,DWORD PTR DS:[EBX+EDI]
0040D109 |83C3 04 ADD EBX,4
0040D10C |0BD2 OR EDX,EDX
0040D10E ^|74 D1 JE SHORT NOTEPAD.0040D0E1
0040D110 |F7C2 00000080 TEST EDX,80000000
0040D116 |74 05 JE SHORT NOTEPAD.0040D11D
0040D118 |0FB7D2 MOVZX EDX,DX
0040D11B |EB 04 JMP SHORT NOTEPAD.0040D121
0040D11D |8D543A 02 LEA EDX,DWORD PTR DS:[EDX+EDI+2]
0040D121 |50 PUSH EAX
0040D122 |51 PUSH ECX
0040D123 |52 PUSH EDX
0040D124 |50 PUSH EAX
0040D125 |FF95 38124000 CALL DWORD PTR SS:[EBP+401238]
0040D12B |59 POP ECX
0040D12C |0BC0 OR EAX,EAX
0040D12E |74 09 JE SHORT NOTEPAD.0040D139
0040D130 |890439 MOV DWORD PTR DS:[ECX+EDI],EAX
0040D133 |58 POP EAX
0040D134 |83C1 04 ADD ECX,4
0040D137 ^|EB CD JMP SHORT NOTEPAD.0040D106 往回跳
0040D139 |8D8D 65124000 LEA ECX,DWORD PTR SS:[EBP+401265]
0040D13F |8D85 84124000 LEA EAX,DWORD PTR SS:[EBP+401284]
0040D145 |6A 00 PUSH 0
0040D147 |50 PUSH EAX
0040D148 |51 PUSH ECX
0040D149 |6A 00 PUSH 0
0040D14B |FF95 BE114000 CALL DWORD PTR SS:[EBP+4011BE]
0040D151 |FFA5 BA114000 JMP DWORD PTR SS:[EBP+4011BA] 
0040D157 \8B85 9C124000 MOV EAX,DWORD PTR SS:[EBP+40129C] 到这里看看.
0040D15D 03C7 ADD EAX,EDI
0040D15F 894424 1C MOV DWORD PTR SS:[ESP+1C],EAX
0040D163 61 POPAD 这个是什么,关键字与入口处对称.中间代码也没有Popad指令,不用怀疑,这里就是解压后的出口.让我们直接F2在这里下断点,F9运行到这里后再F2取消断点.
0040D164 FFE0 JMP EAX 这个就是跨段跳跃,F8到达Oep处.
004010CC 55 PUSH EBP
经过Popad关键字,并跨段跳跃到入口,我们在这里用Od的Dump插件直接脱壳。
004010CD 8BEC MOV EBP,ESP
004010CF 83EC 44 SUB ESP,44
004010D2 56 PUSH ESI
004010D3 FF15 E4634000 CALL DWORD PTR DS:[4063E4] ; KERNEL32.GetCommandLineA
004010D9 8BF0 MOV ESI,EAX
004010DB 8A00 MOV AL,BYTE PTR DS:[EAX]
004010DD 3C 22 CMP AL,22
004010DF 75 1B JNZ SHORT NOTEPAD.004010FC
004010E1 56 PUSH ESI
重建输入表时,插件有两个选项。Method2重建输入表很快,脱壳后运行率高。Method1重建输入表慢,脱壳后运行率较低。不过本程序用Method2重建输入表无法运行,Method1重建输入表后程序可直接运行。
"手动脱壳入门第十二篇"脱壳动画!