wuhanqi 发表于 2009-7-25 15:18

菜鸟手脱Enigma 1.61 加壳的记事本

菜鸟最近才开始研究Enigma这个壳子~

这个保护MS不强.应该是默认保护.

目标程序是我从国外论坛下载下来的~

先搞个简单的.有空了再玩难的~

嘿嘿.



下载地址.**** Hidden Message *****



希望大家支持啊~



下面是笔记..

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



大家好。今天给大家带来一个脱Enigma 1.61默认保护加壳的记事本的动画~
废话不多说,OD载入程序。
一进入OD。我们就可以看到这条命令
01003AAC    9A 83C4108B E55>CALL FAR 5DE5:8B10C483

一个跳到乱七八糟地址的远CALL。
我们不能步过这条命令。否则会引起异常退出程序。直接在下面一行F4
接下来F8单步走。
这个retn比较关键。我们先下个硬件断点。
如果以后出错了。可以少走几步~
走到这里的时候我们要搜索一条命令。
mov dword ptr ds:,ecx
这条命令就是处理IAT的关键指令。我也是看了前辈们的文章学习的。
如果你想知道为什么。那么请你充分利用网络的搜索功能~
好。继续单步走~

01145F72    68 8E5F1401   PUSH 01145F8E
01145F77    64:FF35 0000000>PUSH DWORD PTR FS:
01145F7E    64:8925 0000000>MOV DWORD PTR FS:,ESP
01145F85    31C0            XOR EAX,EAX
01145F87    3100            XOR DWORD PTR DS:,EAX
01145F89^ E9 9E61FDFF   JMP 0111C12C
01145F8E    8B4424 0C       MOV EAX,DWORD PTR SS:
01145F92    8B4C24 04       MOV ECX,DWORD PTR SS:
01145F96    C740 04 0000000>MOV DWORD PTR DS:,0
01145F9D    C740 08 0000000>MOV DWORD PTR DS:,0

01145F85    31C0            XOR EAX,EAX
01145F87    3100            XOR DWORD PTR DS:,EAX
一个明显的陷阱。。。。。。。
我们不能往里面跳。看看下面的代码
看到没?地址都是一一对应的。
我们就这样找到下面的一个enter指令~
F4
。。。不小心就程序跑飞。。。
再来过
我们注意一下程序返回的地址~
Return to 011460AF (notepad_.011460AF)
再看看上面的命令~
01146071    B8 AF601401   MOV EAX,011460AF
地址是相同的。这里需要注意哦~上面的call就应该是压栈用的。。
可是不知道是系统从XP变成Vsita的缘故还是单核变成双核的缘故。
现在我再走。。后面好几条RET指令都跑到乱七八糟的地址去。OD就不能继续走。
所以要不停的修改地址。。
大家看我操作。。

00E44048    6A 70         PUSH 70                                  ; 应该是跳到这里的。。

6A 70 68 98 18 00 01 E8 14 35 1C 00 33 DB 53 8B 3D CC 10 00 01 FF D7 66 81 38 4D 5A 0F 85 30 00
00 00 8B 48 3C 03 C8 81 39 50 45 00 00 0F 85 1F 00 00 00 0F B7 81 18 00 00 00 81 F8 0B 01 00 00
0F 84 34 00 00 00 81 F8 0B 02 00 00 0F 84 0B 00 00 00 89 9D E4 FF FF FF E9 3E 00 00 00 81 B9 84
00 00 00 0E 00 00 00 0F 86 E5 FF FF FF 33 C0 39 99 F8 00 00 00 E9 18 00 00 00 81 B9 74 00 00 00
0E 00 00 00 0F 86 C8 FF FF FF 33 C0 39 99 E8 00 00 00 0F 95 C0 89 85 E4 FF FF FF 89 9D FC FF FF
FF 6A 02 FF 15 38 13 00 01 59 81 0D 9C AB 00 01 FF FF FF FF 81 0D A0 AB 00 01 FF FF FF FF FF 15
34 13 00 01 8B 0D B8 9A 00 01 89 08 FF 15 30 13 00 01 8B 0D B4 9A 00 01 89 08 8B 05 2C 13 00 01
8B 40 00 89 05 A4 AB 00 01 E8 BE 34 1C 00 39 1D 08 96 00 01 0F 85 0C 00 00 00 68 F4 75 00 01 FF
15 28 13 00 01 59 E8 8A 34 1C 00 68 10 90 00 01 68 0C 90 00 01 E8 70 34 1C 00 8B 05 B0 9A 00 01
89 85 DC FF FF FF 8D 45 DC 50 FF 35 AC 9A 00 01 8D 45 D4 50 8D 45 D0 50 8D 45 CC 50 FF 15 20 13
00 01 89 85 C8 FF FF FF 68 08 90 00 01 68 00 90 00 01 E8 33 34 1C 00 83 C4 24 8B 05 1C 13 00 01
8B 70 00 89 B5 E0 FF FF FF 80 BE 00 00 00 00 22 0F 85 6A 00 00 00 46 89 B5 E0 FF FF FF 8A 06 3A
C3 0F 84 09 00 00 00 80 F8 22 0F 85 E6 FF FF FF 80 BE 00 00 00 00 22 0F 85 07 00 00 00 46 89 B5
E0 FF FF FF 8A 06 3A C3 0F 84 09 00 00 00 80 F8 20 0F 86 E6 FF FF FF 89 9D AC FF FF FF 8D 45 80
50 FF 15 D0 10 00 01 F6 85 AC FF FF FF 01 0F 84 25 00 00 00 0F B7 85 B0 FF FF FF E9 1C 00 00 00
80 BE 00 00 00 00 20 0F 86 B7 FF FF FF 46 89 B5 E0 FF FF FF E9 E7 FF FF FF 6A 0A 58 50 56 53 53
FF D7 50 E8 E6 E6 1B 00 8B F0 89 B5 C4 FF FF FF 39 9D E4 FF FF FF 0F 85 07 00 00 00 56 FF 15 18
13 00 01 FF 15 00 13 00 01 E9 E1 32 1C 00 8B 45 EC 8B 48 00 8B 49 00 89 8D D8 FF FF FF 50 51 E8
3A 33 1C 00 59 59 C3

程序活活抽取了这么多个字节的OEP。= =

有没有发现什么问题?
没有足够的空间给我们填充原来的字节1!!
我晕死。看来只好像壳子一样。找个地方填好我们的原本OEP。再跳转回来。= =。

01007604    0000            ADD BYTE PTR DS:,AL

但这样修改也有弊端。很多jmp和call的地址都不对。
只有手动修复。。。nonawrite我用不来= =。。。。

00E44048    6A 70         PUSH 70                                  ; 应该是跳到这里的。。
00E4404A    68 98180001   PUSH 1001898
00E4404F    E8 14351C00   CALL notepad_.01007568
00E44054    33DB            XOR EBX,EBX
00E44056    53            PUSH EBX
00E44057    8B3D CC100001   MOV EDI,DWORD PTR DS:         ; kernel32.GetModuleHandleA
00E4405D    FFD7            CALL EDI
00E4405F    66:8138 4D5A    CMP WORD PTR DS:,5A4D
00E44064    0F85 30000000   JNZ 00E4409A
00E4406A    8B48 3C         MOV ECX,DWORD PTR DS:
00E4406D    03C8            ADD ECX,EAX
00E4406F    8139 50450000   CMP DWORD PTR DS:,4550
00E44075    0F85 1F000000   JNZ 00E4409A
00E4407B    0FB781 18000000 MOVZX EAX,WORD PTR DS:
00E44082    81F8 0B010000   CMP EAX,10B
00E44088    0F84 34000000   JE 00E440C2
00E4408E    81F8 0B020000   CMP EAX,20B
00E44094    0F84 0B000000   JE 00E440A5
00E4409A    899D E4FFFFFF   MOV DWORD PTR SS:,EBX
00E440A0    E9 3E000000   JMP 00E440E3
00E440A5    81B9 84000000 0>CMP DWORD PTR DS:,0E
00E440AF^ 0F86 E5FFFFFF   JBE 00E4409A
00E440B5    33C0            XOR EAX,EAX
00E440B7    3999 F8000000   CMP DWORD PTR DS:,EBX
00E440BD    E9 18000000   JMP 00E440DA
00E440C2    81B9 74000000 0>CMP DWORD PTR DS:,0E
00E440CC^ 0F86 C8FFFFFF   JBE 00E4409A
00E440D2    33C0            XOR EAX,EAX
00E440D4    3999 E8000000   CMP DWORD PTR DS:,EBX
00E440DA    0F95C0          SETNE AL
00E440DD    8985 E4FFFFFF   MOV DWORD PTR SS:,EAX
00E440E3    899D FCFFFFFF   MOV DWORD PTR SS:,EBX
00E440E9    6A 02         PUSH 2
00E440EB    FF15 38130001   CALL DWORD PTR DS:            ; msvcrt.__set_app_type
00E440F1    59            POP ECX
00E440F2    810D 9CAB0001 F>OR DWORD PTR DS:,FFFFFFFF
00E440FC    810D A0AB0001 F>OR DWORD PTR DS:,FFFFFFFF
00E44106    FF15 34130001   CALL DWORD PTR DS:            ; msvcrt.__p__fmode
00E4410C    8B0D B89A0001   MOV ECX,DWORD PTR DS:
00E44112    8908            MOV DWORD PTR DS:,ECX
00E44114    FF15 30130001   CALL DWORD PTR DS:            ; msvcrt.__p__commode
00E4411A    8B0D B49A0001   MOV ECX,DWORD PTR DS:
00E44120    8908            MOV DWORD PTR DS:,ECX
00E44122    8B05 2C130001   MOV EAX,DWORD PTR DS:         ; msvcrt._adjust_fdiv
00E44128    8B40 00         MOV EAX,DWORD PTR DS:
00E4412B    8905 A4AB0001   MOV DWORD PTR DS:,EAX
00E44131    E8 BE341C00   CALL notepad_.010075F4
00E44136    391D 08960001   CMP DWORD PTR DS:,EBX
00E4413C    0F85 0C000000   JNZ 00E4414E
00E44142    68 F4750001   PUSH 10075F4
00E44147    FF15 28130001   CALL DWORD PTR DS:            ; msvcrt.__setusermatherr
00E4414D    59            POP ECX
00E4414E    E8 8A341C00   CALL notepad_.010075DD
00E44153    68 10900001   PUSH 1009010
00E44158    68 0C900001   PUSH 100900C
00E4415D    E8 70341C00   CALL notepad_.010075D2                   ; JMP to msvcrt._initterm
00E44162    8B05 B09A0001   MOV EAX,DWORD PTR DS:
00E44168    8985 DCFFFFFF   MOV DWORD PTR SS:,EAX
00E4416E    8D45 DC         LEA EAX,DWORD PTR SS:
00E44171    50            PUSH EAX
00E44172    FF35 AC9A0001   PUSH DWORD PTR DS:
00E44178    8D45 D4         LEA EAX,DWORD PTR SS:
00E4417B    50            PUSH EAX
00E4417C    8D45 D0         LEA EAX,DWORD PTR SS:
00E4417F    50            PUSH EAX
00E44180    8D45 CC         LEA EAX,DWORD PTR SS:
00E44183    50            PUSH EAX
00E44184    FF15 20130001   CALL DWORD PTR DS:            ; msvcrt.__getmainargs
00E4418A    8985 C8FFFFFF   MOV DWORD PTR SS:,EAX
00E44190    68 08900001   PUSH 1009008
00E44195    68 00900001   PUSH 1009000
00E4419A    E8 33341C00   CALL notepad_.010075D2                   ; JMP to msvcrt._initterm
00E4419F    83C4 24         ADD ESP,24
00E441A2    8B05 1C130001   MOV EAX,DWORD PTR DS:         ; msvcrt._acmdln
00E441A8    8B70 00         MOV ESI,DWORD PTR DS:
00E441AB    89B5 E0FFFFFF   MOV DWORD PTR SS:,ESI
00E441B1    80BE 00000000 2>CMP BYTE PTR DS:,22
00E441B8    0F85 6A000000   JNZ 00E44228
00E441BE    46            INC ESI
00E441BF    89B5 E0FFFFFF   MOV DWORD PTR SS:,ESI
00E441C5    8A06            MOV AL,BYTE PTR DS:
00E441C7    3AC3            CMP AL,BL
00E441C9    0F84 09000000   JE 00E441D8
00E441CF    80F8 22         CMP AL,22
00E441D2^ 0F85 E6FFFFFF   JNZ 00E441BE
00E441D8    80BE 00000000 2>CMP BYTE PTR DS:,22
00E441DF    0F85 07000000   JNZ 00E441EC
00E441E5    46            INC ESI
00E441E6    89B5 E0FFFFFF   MOV DWORD PTR SS:,ESI
00E441EC    8A06            MOV AL,BYTE PTR DS:
00E441EE    3AC3            CMP AL,BL
00E441F0    0F84 09000000   JE 00E441FF
00E441F6    80F8 20         CMP AL,20
00E441F9^ 0F86 E6FFFFFF   JBE 00E441E5
00E441FF    899D ACFFFFFF   MOV DWORD PTR SS:,EBX
00E44205    8D45 80         LEA EAX,DWORD PTR SS:
00E44208    50            PUSH EAX
00E44209    FF15 D0100001   CALL DWORD PTR DS:            ; kernel32.GetStartupInfoA
00E4420F    F685 ACFFFFFF 0>TEST BYTE PTR SS:,1
00E44216    0F84 25000000   JE 00E44241
00E4421C    0FB785 B0FFFFFF MOVZX EAX,WORD PTR SS:
00E44223    E9 1C000000   JMP 00E44244
00E44228    80BE 00000000 2>CMP BYTE PTR DS:,20
00E4422F^ 0F86 B7FFFFFF   JBE 00E441EC
00E44235    46            INC ESI
00E44236    89B5 E0FFFFFF   MOV DWORD PTR SS:,ESI
00E4423C^ E9 E7FFFFFF   JMP 00E44228
00E44241    6A 0A         PUSH 0A
00E44243    58            POP EAX
00E44244    50            PUSH EAX
00E44245    56            PUSH ESI
00E44246    53            PUSH EBX
00E44247    53            PUSH EBX
00E44248    FFD7            CALL EDI
00E4424A    50            PUSH EAX
00E4424B    E8 E6E61B00   CALL notepad_.01002936
00E44250    8BF0            MOV ESI,EAX
00E44252    89B5 C4FFFFFF   MOV DWORD PTR SS:,ESI
00E44258    399D E4FFFFFF   CMP DWORD PTR SS:,EBX
00E4425E    0F85 07000000   JNZ 00E4426B
00E44264    56            PUSH ESI
00E44265    FF15 18130001   CALL DWORD PTR DS:            ; msvcrt.exit
00E4426B    FF15 00130001   CALL DWORD PTR DS:            ; msvcrt._cexit
00E44271- E9 E1321C00   JMP notepad_.01007557
00E44276    8B45 EC         MOV EAX,DWORD PTR SS:
00E44279    8B48 00         MOV ECX,DWORD PTR DS:
00E4427C    8B49 00         MOV ECX,DWORD PTR DS:
00E4427F    898D D8FFFFFF   MOV DWORD PTR SS:,ECX
00E44285    50            PUSH EAX
00E44286    51            PUSH ECX
00E44287    E8 3A331C00   CALL notepad_.010075C6                   ; JMP to msvcrt._XcptFilter
00E4428C    59            POP ECX
00E4428D    59            POP ECX
00E4428E    C3            RETN
00E4428F- E9 AA321C00   JMP notepad_.0100753E

这是一个考验眼力的过程。呵呵~

oh yeah~程序可以运行。
不过革命尚未成功。我们还需要努力一下。。。
我们跟未加壳的笔记本比较一下多了哪些区段
多了四个区段。。额。我们就删除一下试试吧~
不行。。
再来。。
哦~
删除这两个的话。程序没问题还是可以继续运行。。
这样的话就是比较“完美”的脱壳了。
呵呵。动画就到这里了~~谢谢大家观赏!


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

mantoou 发表于 2009-7-25 15:27

看下此壳,能力有限

简简单单的小磊 发表于 2009-7-25 21:48

我是来打酱油的

chn-2000 发表于 2009-7-26 06:22

进来顶大牛的分析及动画教程!

lyliucn 发表于 2009-7-26 11:00

下载学习。

小糊涂虫 发表于 2009-7-26 15:08

为什么就我不会~~~~~~~~~~`:'(
试了N种方法

大江与小城 发表于 2009-7-26 21:11

谢谢
顶一下!

yhsqaz 发表于 2009-7-26 21:23

学习中……!

hong2351 发表于 2009-7-31 06:45

下载看看啊谢谢了

月夜风晨 发表于 2009-7-31 07:51

进来学习一下
页: [1] 2 3 4 5 6
查看完整版本: 菜鸟手脱Enigma 1.61 加壳的记事本