峰云星炫 发表于 2008-7-2 12:56:17

DLL脱壳UPX

这个我让别人脱完以后传给我了。

我自己脱了几次 入口点 和他的都对不上。

简单说一下我的步骤。




然后OD。 隐藏载入 这个DLL文件

00903000 >E8 00000000   CALL XYQ.00903005   //载入后停在这个位置
00903005    5D            POP EBP
00903006    81ED 05304800   SUB EBP,483005
0090300C    81C5 01004800   ADD EBP,480001
00903012    55            PUSH EBP
00903013    58            POP EAX
00903014    FFE0            JMP EAX
00903016    8BC2            MOV EAX,EDX
00903018    C3            RETN

然后F9运行弹出 错误框 模块 LOADDLL 具有空代码段我点的确定.

00881000   /04108800      DD XYQ.00881004// F9运行 错误确定后 停在这个位置
00881004   \03            DB 03
00881005   .07            DB 07
00881006   .42 6F 6F 6C 6>ASCII "Boolean"
0088100D      01            DB 01
0088100E      00            DB 00
0088100F      00            DB 00

F8向下走

00410277    A1 CC004200   MOV EAX,DWORD PTR DS:
0041027C    83F8 12         CMP EAX,12
0041027F^ 0F85 C4FEFFFF   JNZ LOADDLL.00410149      // F8 走到这个位置 (跳转实现)
00410285    6A 00         PUSH 0                      // 在这个位置F4然后关掉 ollydbg dll loader
00410287    E8 18080000   CALL <JMP.&KERNEL32.ExitProcess>

然后继续 F8 向下走

00900001    60            PUSHAD
00900002    E8 03000000   CALL XYQ.0090000A      // F8 走到这个位置 F7 进入
00900007- E9 EB045D45   JMP 45ED04F7
0090000C    55            PUSH EBP
0090000D    C3            RETN

继续F8 向下走

00900008   /EB 04         JMP SHORT XYQ.0090000E   // 在这里跳转实现
0090000A   |5D            POP EBP
0090000B   |45            INC EBP
0090000C   |55            PUSH EBP
0090000D   |C3            RETN
0090000E   \E8 01000000   CALL XYQ.00900014      // JMP 跳转到这里   F7 进入
00900013    EB 5D         JMP SHORT XYQ.00900072
00900015    BB EDFFFFFF   MOV EBX,-13

继续 F8 向下走

008E883C      55            DB 55                  // 停在这里然后 从模块删除分析
008E883D      8B            DB 8B
008E883E      EC            DB EC
008E883F      83            DB 83
008E8840      C4            DB C4

删除分析后 显示为

008E883C    55            PUSH EBP                        // 我个人觉得这个位置就是 OEP
008E883D    8BEC            MOV EBP,ESP
008E883F    83C4 C4         ADD ESP,-3C
008E8842    B8 EC858E00   MOV EAX,XYQ.008E85EC
008E8847    E8 BCE1F9FF   CALL XYQ.00886A08
008E884C    E8 03BEF9FF   CALL XYQ.00884654
008E8851    8D40 00         LEA EAX,DWORD PTR DS:
008E8854    0000            ADD BYTE PTR DS:,AL

然后用 LordPE 脱壳 (选DLL 文件)

ImportREC 选DLL文件 修复 (选项里只保留了 修正EP到OEP 和 启用调试权限)

到修复这里 就卡壳了 试了好几种方法, 即使是修复了 出来后查到的 入口点 也和他给我传过来的对不上.

不是软件版本问题 OD我用了五个版本的 (DYK 第二版 第三版 fly 野猪Dbg)
LordPE 我用了两个版本的(包括英文版)
ImportREC 我也用了三个版本的(1.6版 1.7版 和 Fly 的修正美化版)

[ 本帖最后由 峰云星炫 于 2008-7-2 13:02 编辑 ]

峰云星炫 发表于 2008-7-2 13:00:57

这个是他脱掉后 PEID 查到的信息





OD 载入后

008E883C > $ /E9 49010000   JMP XYQ_112.008E898A    // 载入后 停在这个位置
008E8841   |90            NOP
008E8842   |90            NOP
008E8843   |90            NOP
008E8844   |90            NOP
008E8845   |D8            DB D8
008E8846   |90            NOP
008E8847   |90            NOP
008E8848   |90            NOP
008E8849   |90            NOP

glts 发表于 2008-7-2 13:43:14

你把DLL基址弄错了吧应该是:870000

askyer 发表于 2008-7-30 14:37:48

小生我怕怕 发表于 2008-7-30 17:26:39

你试试这个,我发觉这个是ASPACK的壳,不是UPX啊!
页: [1]
查看完整版本: DLL脱壳UPX