骷髅0 发表于 2008-11-2 18:33:34

关于高手讲解OLLYDBG脱ASPACK.2.12壳

首先我要感谢提供破壳教程的各位高手们.很感谢你们为我们新手提供的教程.你们 辛苦了
由于我是新手我还是有些东西不明白所以粘贴了一些教程内容;
内容如下;



用ollydbg脱aspack2.12的壳
===============================================
    首先, 用aspack2.12把记事本加壳, 用PEiD看了一下, 说是"ASPack 2.x modified - DAMN"
    打开Ollydbg, 加载notepad.exe, 弹出一个对话窗. 不用管他, 按确定. 接着弹出另一个对话窗告诉你程序可能被压缩过, 是否继续, 当然按“确定”咯!
    程序停在入口处, 按F8单步执行:

01010001 > 60            PUSHAD //入口
01010002E8 03000000      CALL notepad.0101000A //进去, 过了这个Call程序就执行了
01010007-E9 EB045D45      JMP 465E04F7
0101000C55            PUSH EBP
0101000DC3            RETN
0101000EE8 01000000      CALL notepad.01010014

0101000A5D            POP EBP
0101000B45            INC EBP                                  ; notepad.01010007
0101000C55            PUSH EBP
0101000DC3            RETN
0101000EE8 01000000      CALL notepad.01010014 //进去~

    一路F8, 直到:

0101012D0BC9            OR ECX,ECX
0101012F74 2E            JE SHORT notepad.0101015F
0101013178 2C            JS SHORT notepad.0101015F
01010133AC            LODS BYTE PTR DS:
010101343C E8            CMP AL,0E8
0101013674 0A            JE SHORT notepad.01010142
01010138EB 00            JMP SHORT notepad.0101013A
0101013A3C E9            CMP AL,0E9
0101013C74 04            JE SHORT notepad.01010142
0101013E43            INC EBX
0101013F49            DEC ECX
01010140^EB EB            JMP SHORT notepad.0101012D
010101428B06            MOV EAX,DWORD PTR DS:
01010144EB 00            JMP SHORT notepad.01010146
01010146803E 07          CMP BYTE PTR DS:,7
01010149^75 F3            JNZ SHORT notepad.0101013E
0101014B24 00            AND AL,0
0101014DC1C0 18          ROL EAX,18
010101502BC3            SUB EAX,EBX


    程序在这里循坏, 我们可没时间等, 看来最远的地方就是0101015F, 在0101015F按F2下断, F9跳过后继续疯狂的F8:

010102B68B95 22040000    MOV EDX,DWORD PTR SS:          ; notepad.01000000
010102BC8B06            MOV EAX,DWORD PTR DS:
010102BE85C0            TEST EAX,EAX
010102C075 03            JNZ SHORT notepad.010102C5
010102C28B46 10          MOV EAX,DWORD PTR DS:
010102C503C2            ADD EAX,EDX                              ; notepad.01000000
010102C70385 49050000    ADD EAX,DWORD PTR SS:
010102CD8B18            MOV EBX,DWORD PTR DS:
010102CF8B7E 10          MOV EDI,DWORD PTR DS:
010102D203FA            ADD EDI,EDX
010102D403BD 49050000    ADD EDI,DWORD PTR SS:
010102DA85DB            TEST EBX,EBX
010102DC0F84 A2000000    JE notepad.01010384
010102E2F7C3 00000080    TEST EBX,80000000
010102E875 04            JNZ SHORT notepad.010102EE
010102EA03DA            ADD EBX,EDX
010102EC43            INC EBX
010102ED43            INC EBX
010102EE53            PUSH EBX
010102EF81E3 FFFFFF7F    AND EBX,7FFFFFFF
010102F553            PUSH EBX
010102F6FFB5 45050000    PUSH DWORD PTR SS:
010102FCFF95 490F0000    CALL DWORD PTR SS:
0101030285C0            TEST EAX,EAX
010103045B            POP EBX
0101030575 6F            JNZ SHORT notepad.01010376 //下去
01010307F7C3 00000080    TEST EBX,80000000
0101030D75 19            JNZ SHORT notepad.01010328
0101030F57            PUSH EDI
010103768907            MOV DWORD PTR DS:,EAX            ; msvcrt._wtol
010103788385 49050000 04 ADD DWORD PTR SS:,4
0101037F^E9 32FFFFFF      JMP notepad.010102B6 // 又回去了
看看这次是到什么地方? 可以走到01010384 :

010103848906            MOV DWORD PTR DS:,EAX
010103868946 0C          MOV DWORD PTR DS:,EAX
010103898946 10          MOV DWORD PTR DS:,EAX
0101038C83C6 14          ADD ESI,14
0101038F8B95 22040000    MOV EDX,DWORD PTR SS:
01010395^E9 EBFEFFFF      JMP notepad.01010285 //还是要回去继续循环
0101039AB8 20640000      MOV EAX,6420

    那我们就大胆一点, 在0101039A下断, F9..... 拦住了. 继续F8(这里就不能像刚才那么疯狂了, 因为马上我们就要到达真正的入口)

0101039AB8 20640000      MOV EAX,6420
0101039F50            PUSH EAX
010103A00385 22040000    ADD EAX,DWORD PTR SS:
010103A659            POP ECX
010103A70BC9            OR ECX,ECX
010103A98985 A8030000    MOV DWORD PTR SS:,EAX
010103AF61            POPAD
010103B075 08            JNZ SHORT notepad.010103BA
010103B2B8 01000000      MOV EAX,1
010103B7C2 0C00          RETN 0C
010103BA68 20640001      PUSH notepad.01006420 //这是什么?
010103BFC3            RETN//过了这里, 你会看到....

   当执行到010103BF的时候, 我们就可以打开LoadPe, 找到notepad.exe的进程, 选择dump full, 保存为dumped.exe, 再用PEiD看看: 还是"ASPack 2.x modified - DAMN". 怎么回事呢?不要急,看下面的:
    把Ollydbg关闭掉, 运行加了壳的notepad.exe, 然后打开Import REConstructor, 选择notepad.exe进程. 这时候显示程序的OEP是00010001, 填入我们刚才找到的00006420(因为ImageBase是01000000, 所以要减去). 按IAT AutoSearch按钮, 出现对话窗Found Something, 确定后再按Get Imports修复. 看来我们运气不错, 都自动完成了. 那么就按Fix Dump, 选择刚才保存的dumped.exe. 然后就可以退出Import REConstructor了.
    再用PEiD一看dumped_.exe: "Microsoft Visual C++ 5.0". 哈哈! 运行一下呢? 也很正常. 最后用LoadPe的Rebuild PE 重建一下, 这时候文件的大小是69.6K, 算是完美脱壳了!


文中有段是;一路F8, 直到:

0101012D0BC9            OR ECX,ECX
0101012F74 2E            JE SHORT notepad.0101015F
0101013178 2C            JS SHORT notepad.0101015F
01010133AC            LODS BYTE PTR DS:
010101343C E8            CMP AL,0E8
0101013674 0A            JE SHORT notepad.01010142
01010138EB 00            JMP SHORT notepad.0101013A
0101013A3C E9            CMP AL,0E9
0101013C74 04            JE SHORT notepad.01010142
0101013E43            INC EBX
0101013F49            DEC ECX
01010140^EB EB            JMP SHORT notepad.0101012D
010101428B06            MOV EAX,DWORD PTR DS:
01010144EB 00            JMP SHORT notepad.01010146
01010146803E 07          CMP BYTE PTR DS:,7
01010149^75 F3            JNZ SHORT notepad.0101013E
0101014B24 00            AND AL,0
0101014DC1C0 18          ROL EAX,18
010101502BC3            SUB EAX,EBX
还有就是; 0101015F, 在0101015F按F2下断, F9跳过后继续疯狂的F8
我想问的是为什么开始Ollydbg介入就要一路F8为什么要在0101015F按F2下断, F9跳过后继续疯狂的F8
可以请各位高手说明下为什么吗?对于我们这些新手那些内容只有高手知道的东西。但对于我们为什么要这么做就不清楚了。对于我们这些新手来说我想只有借助原有的视频教程原有的文件材料一样画葫芦的照步就搬。换了其他的文件破壳又是一头雾水。所以我想请各位高手可以帮我们这些新手更进一步的把步奏写的再详细点吗?
再次感谢为我们这些新手提供教程的高手们

傻人有傻福 发表于 2008-11-2 18:58:00

一直F8单步目的是要单步走到OEP 脱壳的一般方法有很多种 像ESP定律 内存镜像 单步等等 文章中用的就是单步法,在某个地方F2下断是因为有时候程序处理时要循环,那我们也单步跟着程序循环岂不是很累吗?所以我们就在某个循环外的、程序会执行到的地方下F2然后F9把循环过程交给OD去处理而让我们继续往下走。
楼主多练几个壳就能明白了/:001

coolfire1983 发表于 2008-11-4 10:55:46

学习了!/:014

老海 发表于 2008-11-4 20:40:58

如果是单步跟踪,遇到往回跳的就选中它下一行F4跟随到所选地方就可以不循环了。

骷髅0 发表于 2008-11-5 09:39:43

谢谢拉貌似现在大概都知道怎么走了
貌似单步走的话
阻止他向上跳F4就可以
在继续往下走
另外还有其他的几种办法
现在努力学习中

洞庭风 发表于 2008-11-5 20:51:27

支持新手,相信不久的将来就是老鸟!!

含蕊 发表于 2008-11-5 21:49:28

看看呀!!正要那个东西啊
页: [1]
查看完整版本: 关于高手讲解OLLYDBG脱ASPACK.2.12壳