能力值:
( LV2,RANK:10 )
|
-
-
2 楼
请下载的大侠给点思路!
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
看样是不好脱了!
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
应该不是TMD壳吧!
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
确实是TMD的壳,如下结构为典型的TMD壳开头代码:
(跟踪了以下,可以确定是TMD 1.8以上版本的)
0059F000 g> 83EC 04 sub esp,4
0059F003 50 push eax
0059F004 53 push ebx
0059F005 E8 01000000 call get.0059F00B
0059F00A CC int3
0059F00B 58 pop eax
0059F00C 8BD8 mov ebx,eax
0059F00E 40 inc eax
0059F00F 2D 00200A00 sub eax,0A2000
0059F014 2D 2BE85F00 sub eax,5FE82B
0059F019 05 20E85F00 add eax,5FE820
0059F01E 803B CC cmp byte ptr ds:[ebx],0CC
0059F021 75 19 jnz short get.0059F03C
0059F023 C603 00 mov byte ptr ds:[ebx],0
0059F026 BB 00100000 mov ebx,1000
0059F02B 68 0444E562 push 62E54404
0059F030 68 0D53C339 push 39C3530D
0059F035 53 push ebx
0059F036 50 push eax
0059F037 E8 0A000000 call get.0059F046
0059F03C 83C0 00 add eax,0
0059F03F 894424 08 mov dword ptr ss:[esp+8],eax
0059F043 5B pop ebx
0059F044 58 pop eax
0059F045 C3 retn
跟踪到这里就是老版本TMD的壳开始特征代码了(也就是1.8之前的版本)
004FD000 B8 00000000 mov eax,0
004FD005 60 pushad
004FD006 0BC0 or eax,eax
004FD008 74 68 je short get.004FD072
004FD00A E8 00000000 call get.004FD00F
004FD00F 58 pop eax
004FD010 05 53000000 add eax,53
004FD015 8038 E9 cmp byte ptr ds:[eax],0E9
004FD018 75 13 jnz short get.004FD02D
004FD01A 61 popad
004FD01B EB 45 jmp short get.004FD062
004FD01D DB2D 50146500 fld tbyte ptr ds:[651450]
004FD023 FFFF ??? ; 未知命令
004FD025 FFFF ??? ; 未知命令
004FD027 FFFF ??? ; 未知命令
004FD029 FFFF ??? ; 未知命令
004FD02B 3D 40E80000 cmp eax,0E840
004FD030 0000 add byte ptr ds:[eax],al
004FD032 58 pop eax
004FD033 25 00F0FFFF and eax,FFFFF000
004FD038 33FF xor edi,edi
004FD03A 66:BB 195A mov bx,5A19
004FD03E 66:83C3 34 add bx,34
004FD042 66:3918 cmp word ptr ds:[eax],bx
004FD045 75 12 jnz short get.004FD059
开OD,用Themida - Winlicense 1.x - 2.x Imports Fixer Edition 1.1 by SnD脚本直接跑完,得到如下IAT修复数据。
用LPE截取内存镜象,先纠正内存镜象大小,再完整转存;用IAT修复工具修复IAT数据。
IAT的修复数据地址:
IAT start: 0041BFFC
IAT end: 0041C33C
IAT Size: 00000340
这是假OEP入口:(有部分开始代码被偷了,修复请看我以前发的VC程序被偷OEP代码的修复教程)
0041582F 6A 02 push 2 ; The (near) OEP, by quosego/SnD
00415831 FF15 0CC24100 call dword ptr ds:[41C20C] ; msvcrt.__set_app_type
00415837 59 pop ecx
00415838 830D 24FA4200 F>or dword ptr ds:[42FA24],FFFFFFFF
0041583F 830D 28FA4200 F>or dword ptr ds:[42FA28],FFFFFFFF
00415846 FF15 10C24100 call dword ptr ds:[41C210] ; msvcrt.__p__fmode
0041584C 8B0D D8F94200 mov ecx,dword ptr ds:[42F9D8]
00415852 8908 mov dword ptr ds:[eax],ecx
00415854 FF15 14C24100 call dword ptr ds:[41C214] ; msvcrt.__p__commode
0041585A 8B0D D4F94200 mov ecx,dword ptr ds:[42F9D4]
00415860 8908 mov dword ptr ds:[eax],ecx
00415862 A1 18C24100 mov eax,dword ptr ds:[41C218]
00415867 8B00 mov eax,dword ptr ds:[eax]
00415869 A3 20FA4200 mov dword ptr ds:[42FA20],eax
0041586E E8 1C010000 call get.0041598F
00415873 391D 30284200 cmp dword ptr ds:[422830],ebx
00415879 75 0C jnz short get.00415887
0041587B 68 8C594100 push get.0041598C
00415880 FF15 1CC24100 call dword ptr ds:[41C21C] ; msvcrt.__setusermatherr
00415886 59 pop ecx
00415887 E8 EE000000 call get.0041597A
修复完真实OEP被偷的代码,补上修复代码,重定位EIP到修复代码的开始地址,保存修改数据,就完工了。过程不是很详细,望好运。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
感谢兄弟指教,按照你的方法修复保存后,无法运行,能否把修复的文件上传上了,看能否运行!
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
既然是学习,就按我说的思路去试试看吧。不要总是做伸手党,有些知识需要自己实践才能理解透彻的。
VC程序的OEP头代码修复的方法我发过教程的,百度上有转载的,可以搜到。
|
能力值:
( LV3,RANK:30 )
|
-
-
8 楼
修复完毕的 OEP
00415804 /. >push ebp // 传说中的光明之巅
00415805 |. >mov ebp, esp
00415807 |. >push -1
00415809 |. >push 0041C438
0041580E |. >push <jmp.&msvcrt._except_handler3> ; SE handler installation -----》 415990
00415813 |. >mov eax, dword ptr fs:[0]
00415819 |. >push eax
0041581A |. >mov dword ptr fs:[0], esp
00415821 |. >sub esp, 68
00415824 |. >push ebx
00415825 |. >push esi
00415826 |. >push edi
00415827 |. >mov dword ptr [ebp-18], esp
0041582A |. >xor ebx, ebx
0041582C |. >mov dword ptr [ebp-4], ebx
0041582F |. >push 2
以上是偷取的部分
00415831 |. >call dword ptr [<&msvcrt.__set_app_type>] ; msvcrt.__set_app_type
00415837 |. >pop ecx
00415838 |. >or dword ptr [42FA24], FFFFFFFF
0041583F |. >or dword ptr [42FA28], FFFFFFFF
00415846 |. >call dword ptr [<&msvcrt.__p__fmode>] ; msvcrt.__p__fmode
0041584C |. >mov ecx, dword ptr [42F9D8]
00415852 |. >mov dword ptr [eax], ecx
00415854 |. >call dword ptr [<&msvcrt.__p__commode>] ; msvcrt.__p__commode
0041585A |. >mov ecx, dword ptr [42F9D4]
00415860 |. >mov dword ptr [eax], ecx
00415862 |. >mov eax, dword ptr [<&msvcrt._adjust_fdiv>]
00415867 |. >mov eax, dword ptr [eax]
00415869 |. >mov dword ptr [42FA20], eax
0041586E |. >call 0041598F
00415873 |. >cmp dword ptr [422830], ebx
00415879 |. >jnz short 00415887
0041587B |. >push 0041598C
00415880 |. >call dword ptr [<&msvcrt.__setusermatherr>] ; msvcrt.__setusermatherr
00415886 |. >pop ecx
00415887 |> >call 0041597A
0041588C |. >push 0041E028
00415891 |. >push 0041E024
00415896 |. >call <jmp.&msvcrt._initterm>
0041589B |. >mov eax, dword ptr [42F9D0]
004158A0 |. >mov dword ptr [ebp-6C], eax
004158A3 |. >lea eax, dword ptr [ebp-6C]
004158A6 |. >push eax
004158A7 |. >push dword ptr [42F9CC]
004158AD |. >lea eax, dword ptr [ebp-64]
004158B0 |. >push eax
004158B1 |. >lea eax, dword ptr [ebp-70]
004158B4 |. >push eax
004158B5 |. >lea eax, dword ptr [ebp-60]
004158B8 |. >push eax
004158B9 |. >call dword ptr [<&msvcrt.__getmainargs>] ; msvcrt.__getmainargs
004158BF |. >push 0041E020
004158C4 |. >push 0041E000
004158C9 |. >call <jmp.&msvcrt._initterm>
004158CE |. >add esp, 24
004158D1 |. >mov eax, dword ptr [<&msvcrt._acmdln>]
004158D6 |. >mov esi, dword ptr [eax]
004158D8 |. >mov dword ptr [ebp-74], esi
004158DB |. >cmp byte ptr [esi], 22
004158DE |. >jnz short 0041591A
004158E0 |> >/inc esi
004158E1 |. >|mov dword ptr [ebp-74], esi
004158E4 |. >|mov al, byte ptr [esi]
004158E6 |. >|cmp al, bl
004158E8 |. >|je short 004158EE
004158EA |. >|cmp al, 22
004158EC |.^>\jnz short 004158E0
004158EE |> >cmp byte ptr [esi], 22
004158F1 |. >jnz short 004158F7
004158F3 |> >inc esi
004158F4 |. >mov dword ptr [ebp-74], esi
004158F7 |> >mov al, byte ptr [esi]
004158F9 |. >cmp al, bl
004158FB |. >je short 00415901
004158FD |. >cmp al, 20
004158FF |.^>jbe short 004158F3
00415901 |> >mov dword ptr [ebp-30], ebx
00415904 |. >lea eax, dword ptr [ebp-5C]
00415907 |. >push eax ; /pStartupinfo
00415908 |. >call dword ptr [<&kernel32.GetStartupInfoA>] ; \GetStartupInfoA
0041590E |. >test byte ptr [ebp-30], 1
00415912 |. >je short 00415925
00415914 |. >movzx eax, word ptr [ebp-2C]
00415918 |. >jmp short 00415928
0041591A |> >/cmp byte ptr [esi], 20
0041591D |.^>|jbe short 004158F7
0041591F |. >|inc esi
00415920 |. >|mov dword ptr [ebp-74], esi
00415923 |.^>\jmp short 0041591A
00415925 |> >push 0A
00415927 |. >pop eax
00415928 |> >push eax
00415929 |. >push esi
0041592A |. >push ebx
0041592B |. >push ebx ; /pModule
0041592C |. >call dword ptr [<&kernel32.GetModuleHandleA>] ; \GetModuleHandleA
00415932 |. >push eax
00415933 |. >call 00402AB0
00415938 |. >mov dword ptr [ebp-68], eax
0041593B |. >push eax ; /status
0041593C |. >call dword ptr [<&msvcrt.exit>] ; \exit
00415942 |. >mov eax, dword ptr [ebp-14]
00415945 |. >mov ecx, dword ptr [eax]
00415947 |. >mov ecx, dword ptr [ecx]
00415949 |. >mov dword ptr [ebp-78], ecx
0041594C |. >push eax
0041594D |. >push ecx
0041594E |. >call <jmp.&msvcrt._XcptFilter>
00415953 |. >pop ecx
00415954 |. >pop ecx
00415955 \. >retn
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
强大
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
希望成功脱壳的大侠们上传个脱壳后的文件!
|
能力值:
( LV3,RANK:30 )
|
-
-
11 楼
你发个邮箱吧,我也是很久没碰 TMD 了,无聊之作。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
这个壳一般人是很头疼的
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
感谢提供帮助!
|
能力值:
( LV3,RANK:30 )
|
-
-
14 楼
发了,你去看看
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
感谢! 你的帮助!
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
好多大牛........
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
不留样本?
|
能力值:
( LV3,RANK:20 )
|
-
-
18 楼
tmd难道已经不算强壳了吗
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
不会 脱TMD啊
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
文件 汗
|