标题:手动脱壳入门第十二篇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重建输入表后程序可直接运行。 "手动脱壳入门第十二篇"脱壳动画! |