📄 crack31.txt
字号:
幻影v1.5b3脱壳分析笔记 --- ljttt开门一帖
【声明】
我写文章以交流为主,希望大家在转载时能保持文章的完整性。
[作者]: ljttt
[日期]: 2000-09-15
【前言】
首先,我要这儿多谢wind[CCG]。
其中为了补充了一些说明,为了大家好理解。用 [注:]说明。我想根据其中的内容去写个脱壳机也不难。
这里有当初我分析幻影的两篇类似的分析笔记,当初为了分析方便,做了两份,各有一些说明(<--所指的内容)。互有补充。大家看看
[注:由于这是以前分析的笔记,只是为了自己分析方便,没有想到要做为文章,所以现在补充一些内容,让大家好理解]
[注:开始幻影用了大量的XOR还原方法,共有223处,而且,还在其中用到对IDT表的修改,所以动态分析不太可能,静态分析也要用编个程序批处理才能得到这些内容]
[注:这是我现在找的一段,和以前分析的地址不对应,但我只为了说明问题,这样的代码段大同小异,其中的说明也是我补充的]
0000003A: FA cli
0000003B: 56 push esi
0000003C: BE53BD4000 mov esi,0040BD53
00000041: 03F5 add esi,ebp
00000043: 0F010E sidt dword ptr [esi] <--取IDTR的内容
00000046: 8B7602 mov esi,dword ptr [esi+02] <--获取IDT表的基地址
00000049: 66FF4E08 dec word ptr [esi+08] <--int 1的低位偏移减一,大家应该知道这是干嘛的。
0000004D: FF8DCFB24000 dec dword ptr [ebp+0040B2CF] <--注意,这里修改了以后要XOR还原的一处内容,所以算个小干扰
00000053: 5E pop esi
00000054: B927000000 mov ecx,00000027 <--还原开始
00000059: 3006 xor byte ptr [esi],al <--al为XOR用的字节
0000005B: 46 inc esi
0000005C: 49 dec ecx
0000005D: 75FA jnz 00000059 <--还原结束
0000005F: FEC8 dec al <--变换,下一次用作XOR还原
00000061: FA cli
[注:在经过以上的XOR还原后,来到这里,将XOR还原出所有幻影的代码了,以前我给大家说明的一些内容都可以在这里找到]
00412382: E800000000 call 00412387
00412387: 5D pop ebp
00412388: 8BD5 mov edx,ebp
0041238A: 81EDD4A64000 sub ebp,0040A6D4 <--EBP=412388-40A6D4=7CB4
00412390: FA cli
00412391: 58 pop eax
00412392: 80E401 and ah,01
00412395: 32C0 xor al,al
00412397: BE09A74000 mov esi,0040A709
0041239C: 03F5 add esi,ebp <--ESI=7CB4+40A709=4123BD
0041239E: B946160000 mov ecx,00001646
004123A3: 03F1 add esi,ecx
004123A5: 4E dec esi
004123A6: 8A06 mov al,byte ptr [esi]
004123A8: 324601 xor al,byte ptr [esi+01]
004123AB: 8806 mov byte ptr [esi],al
004123AD: 4E dec esi
004123AE: E2F6 loop 004123A6 <--代码还原
004123B0: FA cli
004123B1: 6681BD09A740009090 cmp word ptr [ebp+0040A709],9090 <--还原成功,则继续
004123BA: 75FE jnz 004123BA
004123BC: 90 nop
004123BD: 90 nop
004123BE: 90 nop
[注:这是最后XOR还原得到的代码了,内容太多,我懒得加注释了,自己接和我以前的有关幻影的文章看吧]
004123BF: 2B95CBB24000 sub edx,dword ptr [ebp+0040B2CB]
004123C5: 81EA87530000 sub edx,00005387
004123CB: 8995D3B24000 mov dword ptr [ebp+0040B2D3],edx
004123D1: E8D7120000 call 004136AD <--加载DLL
004123D6: 83F800 cmp eax,00000000
004123D9: 7520 jnz 004123FB
004123DB: B8C0B94000 mov eax,0040B9C0
004123E0: 03C5 add eax,ebp
004123E2: BBC2B94000 mov ebx,0040B9C2
004123E7: 03DD add ebx,ebp
004123E9: 6A30 push 00000030
004123EB: 50 push eax
004123EC: 53 push ebx
004123ED: 6A00 push 00000000
004123EF: FF9500BC4000 call dword ptr [ebp+0040BC00] <--失败,显示dial.dll未找到
004123F5: FF956CBF4000 call dword ptr [ebp+0040BF6C] <--退出
004123FB: 8B8DF2B94000 mov ecx,dword ptr [ebp+0040B9F2]
00412401: 83C120 add ecx,00000020
00412404: 51 push ecx
00412405: 6A40 push 00000040
00412407: 6800201000 push 00102000
0041240C: 51 push ecx
0041240D: 6A00 push 00000000
0041240F: FF95CBBB4000 call dword ptr [ebp+0040BBCB]
00412415: 59 pop ecx
00412416: 6A40 push 00000040
00412418: 6800101000 push 00101000
0041241D: 51 push ecx
0041241E: 50 push eax
0041241F: FF95CBBB4000 call dword ptr [ebp+0040BBCB] <--申请内存
00412425: 8BD0 mov edx,eax
00412427: 8BF8 mov edi,eax
00412429: BE4D534000 mov esi,0040534D
0041242E: 03F5 add esi,ebp
00412430: 8B8DF2B94000 mov ecx,dword ptr [ebp+0040B9F2]
00412436: F3A4 repe movsb es:[edi],ds:[esi] <--搬家
00412438: B893A74000 mov eax,0040A793
0041243D: 2D4D534000 sub eax,0040534D
00412442: 03C2 add eax,edx
00412444: 50 push eax
00412445: C3 ret <--到新地址继续
-----------------------以上一段分析完毕,加载DLL,申请内存并复制代码继续执行------------------------
00412446: BF4D534000 mov edi,0040534D
0041244B: 03FD add edi,ebp
0041244D: 8B8DF2B94000 mov ecx,dword ptr [ebp+0040B9F2]
00412453: 32C0 xor al,al
00412455: F3AA repe stosb es:[edi],al <--灭迹
00412457: E800000000 call 0041245C
0041245C: 5D pop ebp
0041245D: 81EDA9A74000 sub ebp,0040A7A9 <--EBP=41245C-40A7A9=7CB3
00412463: BEDDA74000 mov esi,0040A7DD
00412468: 03F5 add esi,ebp
0041246A: 6A00 push 00000000
0041246C: 6A00 push 00000000
0041246E: 6A00 push 00000000
00412470: 6A00 push 00000000
00412472: 6A00 push 00000000
00412474: 6A00 push 00000000
00412476: 56 push esi
00412477: FF95A3BB4000 call dword ptr [ebp+0040BBA3] <--检查跟踪
0041247D: 83F8FF cmp eax,FFFFFFFF
00412480: 7568 jnz 004124EA
00412482: 46 inc esi
00412483: 803E00 cmp byte ptr [esi],00
00412486: 75FA jnz 00412482
00412488: 46 inc esi
00412489: 803E00 cmp byte ptr [esi],00
0041248C: 75DC jnz 0041246A
0041248E: EB5A jmp 004124EA
---------------------以上一段代码分析完毕,检查跟踪--------------------------
**********************非代码区**************************
00412490: 5C pop esp
00412491: 5C pop esp
00412492: 2E5C pop esp
00412494: 54 push esp
00412495: 52 push edx
00412496: 57 push edi
00412497: 005C5C2E add byte ptr [esp+ebx*2+2E],bl
0041249B: 5C pop esp
0041249C: 54 push esp
0041249D: 52 push edx
0041249E: 57 push edi
0041249F: 3230 xor dh,byte ptr [eax]
004124A1: 3030 xor byte ptr [eax],dh
004124A3: 005C5C2E add byte ptr [esp+ebx*2+2E],bl
004124A7: 5C pop esp
004124A8: 54 push esp
004124A9: 52 push edx
004124AA: 57 push edi
004124AB: 44 inc esp
004124AC: 45 inc ebp
004124AD: 42 inc edx
004124AE: 55 push ebp
004124AF: 47 inc edi
004124B0: 005C5C2E add byte ptr [esp+ebx*2+2E],bl
004124B4: 5C pop esp
004124B5: 52 push edx
004124B6: 45 inc ebp
004124B7: 47 inc edi
004124B8: 56 push esi
004124B9: 58 pop eax
004124BA: 44 inc esp
004124BB: 005C5C2E add byte ptr [esp+ebx*2+2E],bl
004124BF: 5C pop esp
004124C0: 4E dec esi
004124C1: 54 push esp
004124C2: 49 dec ecx
004124C3: 43 inc ebx
004124C4: 45 inc ebp
004124C5: 005C5C2E add byte ptr [esp+ebx*2+2E],bl
004124C9: 5C pop esp
004124CA: 53 push ebx
004124CB: 49 dec ecx
004124CC: 43 inc ebx
004124CD: 45 inc ebp
004124CE: 005C5C2E add byte ptr [esp+ebx*2+2E],bl
004124D2: 5C pop esp
004124D3: 56 push esi
004124D4: 4B dec ebx
004124D5: 45 inc ebp
004124D6: 59 pop ecx
004124D7: 50 push eax
004124D8: 52 push edx
004124D9: 4F dec edi
004124DA: 44 inc esp
004124DB: 005C5C2E add byte ptr [esp+ebx*2+2E],bl
004124DF: 5C pop esp
004124E0: 46 inc esi
004124E1: 49 dec ecx
004124E2: 4C dec esp
004124E3: 45 inc ebp
004124E4: 56 push esi
004124E5: 58 pop eax
004124E6: 44 inc esp
004124E7: 000000 add byte ptr [eax],al
*****************************非代码区结束******************************
004124EA: 83F8FF cmp eax,FFFFFFFF
004124ED: 7406 jz 004124F5
004124EF: FF956CBF4000 call dword ptr [ebp+0040BF6C] <--有跟踪则退出
004124F5: 60 pushad <--反跟踪
004124F6: BE53BD4000 mov esi,0040BD53
004124FB: 03F5 add esi,ebp
004124FD: 0F010E sidt dword ptr [esi]
00412500: 8B7602 mov esi,dword ptr [esi+02]
00412503: 668B4608 mov ax,word ptr [esi+08]
00412507: 66052302 add ax,0223
0041250B: 66894608 mov word ptr [esi+08],ax
0041250F: 668B460E mov ax,word ptr [esi+0E]
00412513: 668B5E06 mov bx,word ptr [esi+06]
00412517: 663BC3 cmp ax,bx
0041251A: 740E jz 0041252A
0041251C: 668B4608 mov ax,word ptr [esi+08]
00412520: 668B5E18 mov bx,word ptr [esi+18]
00412524: FA cli
00412525: 663BC3 cmp ax,bx
00412528: 7400 jz 0041252A
0041252A: 668B4608 mov ax,word ptr [esi+08]
0041252E: 668B5E0E mov bx,word ptr [esi+0E]
00412532: 66898567BE4000 mov word ptr [ebp+0040BE67],ax
00412539: 66899D69BE4000 mov word ptr [ebp+0040BE69],bx
00412540: 668B4618 mov ax,word ptr [esi+18]
00412544: 668B5E1E mov bx,word ptr [esi+1E]
00412548: 6689856BBE4000 mov word ptr [ebp+0040BE6B],ax
0041254F: 66899D6DBE4000 mov word ptr [ebp+0040BE6D],bx <--对IDT的处理,反跟踪
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -