能力值:
( LV2,RANK:10 )
|
-
-
2 楼
找到类似
XXXXXXXX AD lods dword ptr [esi]
样的句子,然后看下面ESI里的数值。此数值就是程序入口点。
Ctrl+G来到程序入口,F4。直接脱然后修复就可以了。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
[QUOTE=sizhaoming;460314]找到类似
XXXXXXXX AD lods dword ptr [esi]
样的句子,然后看下面ESI里的数值。此数值就是程序入口点。
Ctrl+G来到程序入口,F4。直接脱然后修复就可以了。[/QUOTE]
F4跑起来拉。是不是要在哪个地方下个什么断点啊,谢谢。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
啊?跑起来了??
上个穿相似衣服的Crackme给楼主测试~~
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
谢谢你,你这个我能脱下来,这是录的可以看一下。麻烦你们拉。
我一会上传我的做法,不知道为什么现在上传不了拉。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
我录的上传不了。告诉我你的邮箱我发过去你看看,OK不。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
sizhaoming@yeah.net
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
发过去拉,看看收到没。我的是QQ邮箱有病毒不让发,郁闷。我用QQ给你发过去
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
貌似单步走就可以脱壳吧
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
俺没脱下来啊。这能上传样本吗?俺这是一个木马。如果能的话我传上来大家就能看到了。有知道能不能上传的吗?谢谢
|
能力值:
( LV12,RANK:300 )
|
-
-
11 楼
楼主……
跑到那里已经是OEP了!
|
能力值:
( LV12,RANK:300 )
|
-
-
12 楼
刚好我今天下午在瑞星卡卡论坛的可疑文件区看到这个病毒样本。楼主的图显示的那个地方已经是OEP了。
OD载入(两个错误提示点是),停在这里:
00401018 > BE B0114000 mov esi, 004011B0
0040101D AD lods dword ptr [esi]
0040101E 50 push eax ; soc.00401CA0
F8两次,可以看到eax里的就是OEP,00401CA0
转到00401CA0,F4一下,就停在那里了。
00401CA0 B8 F4300000 mov eax, 30F4
00401CA5 E8 76090000 call 00402620 ; ESP减小,腾出局部变量的空间
00401CAA 53 push ebx
00401CAB 55 push ebp
00401CAC 56 push esi
00401CAD 57 push edi
00401CAE 33DB xor ebx, ebx ; 下面很长一段都是局部变量的初始化……
00401CB0 B9 7F000000 mov ecx, 7F
00401CB5 33C0 xor eax, eax
00401CB7 8DBC24 990D0000 lea edi, dword ptr [esp+D99]
00401CBE 889C24 980D0000 mov byte ptr [esp+D98], bl
00401CC5 889C24 80050000 mov byte ptr [esp+580], bl
00401CCC F3:AB rep stos dword ptr es:[edi]
00401CCE 66:AB stos word ptr es:[edi]
00401CD0 AA stos byte ptr es:[edi]
这里就可以dump了。用LordPE完整转存。
用ImportREC修复IAT。但是ImportREC中填入OEP值00001CA0后,IAT AutoSearch获取不到输入表。
我们在OD里从这里往下滚,找调用API的地方:
00401E3D 8D8424 78020000 lea eax, dword ptr [esp+278]
00401E44 50 push eax
00401E45 FF15 50304000 call dword ptr [403050] ; kernel32.GetSystemDirectoryA
其实能够看到这个,就说明壳已经脱下来了。
数据窗口中跟随00403050这个地址,再向上滚一下,可以看到原始IAT,是从00403000开始,到004030EC,长度0xEC(当然也可以说长度0xF0)
00403000 35 B6 DB 77 91 7A DA 77 D9 15 DF 77 90 15 DF 77 5钝w憐趙?遷?遷
00403010 80 7A DA 77 53 77 DA 77 A7 AD DB 77 71 70 E0 77 €z趙Sw趙Л踳qp鄔
00403020 4D 5E DB 77 8C B8 DB 77 38 32 DC 77 1B D1 DC 77 M^踳尭踳82躻衍w
00403030 34 C5 DC 77 00 00 00 00 78 9D 85 7C A0 AD 80 7C 4跑w....x潊|牠€|
00403040 77 1D 80 7C D4 05 93 7C C1 AB 80 7C 25 16 80 7C w€|?搢莲€|%€|
00403050 EA 4E 81 7C 41 26 81 7C B6 BD 80 7C 01 BE 80 7C 闚亅A&亅督€|線|
00403060 CF B4 80 7C 41 4D 83 7C 58 3F 86 7C 31 03 93 7C 洗€|AM億X?唡1搢
00403070 0F 4B 86 7C DE AB 80 7C F5 DD 80 7C 2F 99 80 7C K唡瞢€|踺€|/檧|
00403080 B9 1D 83 7C D9 29 83 7C F8 9B 80 7C 16 1E 80 7C ?億?億鴽€|€|
00403090 E1 09 83 7C 74 0D 83 7C AB 1E 83 7C 24 1A 80 7C ?億t.億?億$€|
004030A0 87 0D 81 7C 8E 0B 81 7C 44 20 83 7C 47 9B 80 7C ?亅?亅D 億G泙|
004030B0 42 24 80 7C 9C 92 80 7C 6D 13 86 7C E5 3D 86 7C B$€|湌€|m唡?唡
004030C0 00 00 00 00 61 7E C1 77 E0 7B C1 77 CC 7F C1 77 ....a~羨鄘羨?羨
004030D0 60 7C C1 77 BC 71 C0 77 D3 71 C0 77 4E 62 C1 77 `|羨紂纖觪纖Nb羨
004030E0 00 00 00 00 AD A8 D1 77 C2 E5 D2 77 00 00 00 00 ....褀洛襴....
在ImportREC中填入IAT的RVA,00003000,以及长度000000EC,Get Imports,得到分别属于advapi32.dll、kernel32.dll、msvcrt.dll、user32.dll的IAT项,全部可用。直接fix dump,修复完毕。Upack的可能最好修复文件头,不过这个是病毒,不用那么完美。
脱壳后文件,OD载入,一个错误提示(Upack壳改了文件头所致),之后就停在入口点了。
综上,楼主看起来是在已经跑到OEP的情况下,却被OEP处的代码所迷惑,自以为还没有到OEP,而不知道如何处理。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
可是这个不是。查不到,要不就是这个名Morphine 1.2 - 1.3 -> rootkit,我在网上查这个也是一个壳,在这导出查不到是用什么语言写的。我想查它是用什么语言写的。有什么好办法吗?
|
能力值:
( LV12,RANK:300 )
|
-
-
14 楼
你这种说法太死板了。脱壳后用PEID没有查到它是什么语言写的,那是因为它没有典型的语言的入口点样式(一般情况下Delphi、VC、VB等生成的程序,其入口点代码有一定的模式,就是依据这个模式来判断的),但这并不证明它就没到OEP。
如上面的回帖,在这里程序有一个完整的函数:
局部变量的初始化,之后程序已经开始了实质性的工作:往system32文件夹下创建文件并运行之,……
这就说明已经到了OEP
PEID不可能把所有程序的编写语言都直接依靠其入口点代码而识别出来。比如如果程序是汇编写的,入口点代码可以随意安排(只要不影响程序正常运行),这种情况下你用PEID就没有效果了。如果汇编写的代码,其入口点跟壳的入口点很像呢(本来那些壳的入口点代码就是用汇编写的),那PEID也会认为它是壳了。
PEID是死的,人是活的,你应该学会用自己的眼睛来判断它是什么。就算是PEID能判断出来的语言,你也要让自己看一眼入口点代码的反汇编程序,就可以认出它的语言。
|
|
|