跟着别人的教程却做不对,找不到错哪了
首先运行:DUMP出来,再用PEID核心扫描为:Microsoft Visual C++ 6.0知道是什么语言的就好办了,现在我们就开始脱壳
OD 载入 ,忽略所有异常,用Hideod 插件隐藏OD!
运行牛人们的脚本:Themida&WinLicenScript_1.91+.txt
当脚本提示:“程序发现被VM oeP,脚本patch了入口,现在可以在这里dump下程序补区段,修复代码!,你也可以选择[否]到普通方式修复!"
时,点取消,这里程序停在这里:
00986E04 68 D0DF1F5E push 5E1FDFD0
00986E09 E9 65C70000 jmp 00993573
00986E0E 0000 add byte ptr , al
00986E10 0000 add byte ptr , al
00986E12 0000 add byte ptr , al
00986E14 0000 add byte ptr , al
现在Alt+M,在代码段下F2断点 到这里了
00F1A03B FF33 push dword ptr ; kernel32.GetVersion//停在这里 (3)
00F1A03D E9 53280B00 jmp 00FCC895
00F1A042 55 push ebp
00F1A043 812C24 F150692B sub dword ptr , 2B6950F>
00F1A04A 8B1424 mov edx, dword ptr
00F1A04D 55 push ebp
00F1A04E 89E5 mov ebp, esp
00F1A050 81C5 04000000 add ebp, 4
00F1A056 83C5 04 add ebp, 4
00F1A059 872C24 xchg dword ptr , ebp
为什么我一运行脚本,要么就提示可能是老版本,要么就跑飞
这是为什么?/:002
换了好几个od了
没辙了,把别人的教程和程序放楼下,哪位帮忙看下是我这出问题了还是教程使用面不是很广
[ 本帖最后由 ggg520 于 2008-5-9 21:57 编辑 ] 呵呵。不是OD 的问题。是你OD的脚本插件比较老了。换1.5后的吧。 OD脚本插件是1652
我重新下载的新版的。。。。。 首先运行:丝路飞人.exe,然后DUMP出来,再用PEID核心扫描为:Microsoft Visual C++ 6.0
知道是什么语言的就好办了,现在我们就开始脱壳
OD 载入 ,忽略所有异常,用Hideod 插件隐藏OD!
运行牛人们的脚本:Themida&WinLicenScript_1.91+.txt
当脚本提示:“程序发现被VM oeP,脚本patch了入口,现在可以在这里dump下程序补区段,修复代码!,你也可以选择[否]到普通方式修复!"
时,点取消,这里程序停在这里:
00986E04 68 D0DF1F5E push 5E1FDFD0
00986E09 E9 65C70000 jmp 00993573
00986E0E 0000 add byte ptr , al
00986E10 0000 add byte ptr , al
00986E12 0000 add byte ptr , al
00986E14 0000 add byte ptr , al
现在Alt+M,在代码段下F2断点 到这里了
00F1A03B FF33 push dword ptr ; kernel32.GetVersion//停在这里 (3)
00F1A03D E9 53280B00 jmp 00FCC895
00F1A042 55 push ebp
00F1A043 812C24 F150692B sub dword ptr , 2B6950F>
00F1A04A 8B1424 mov edx, dword ptr
00F1A04D 55 push ebp
00F1A04E 89E5 mov ebp, esp
00F1A050 81C5 04000000 add ebp, 4
00F1A056 83C5 04 add ebp, 4
00F1A059 872C24 xchg dword ptr , ebp
此时 ds:=7C8111DA (kernel32.GetVersion),记住这个值
好了,继续F8一次,再在代码段下F2断点,来到这里:
0048B59C A3 709D6B00 mov dword ptr , eax ///停在这里 这里就是OEP了
0048B5A1 A1 709D6B00 mov eax, dword ptr
0048B5A6 C1E8 08 shr eax, 8
0048B5A9 25 FF000000 and eax, 0FF
0048B5AE A3 7C9D6B00 mov dword ptr , eax
0048B5B3 8B0D 709D6B00 mov ecx, dword ptr
0048B5B9 81E1 FF000000 and ecx, 0FF
0048B5BF 890D 789D6B00 mov dword ptr , ecx
0048B5C5 8B15 789D6B00 mov edx, dword ptr
0048B5CB C1E2 08 shl edx, 8
0048B5CE 0315 7C9D6B00 add edx, dword ptr
0048B5D4 8915 749D6B00 mov dword ptr , edx
0048B5DA A1 709D6B00 mov eax, dword ptr
0048B5DF C1E8 10 shr eax, 10
0048B5E2 25 FFFF0000 and eax, 0FFFF
0048B5E7 A3 709D6B00 mov dword ptr , eax
0048B5EC 6A 01 push 1
0048B5EE E8 DDCE0000 call 004984D0
0048B5F3 83C4 04 add esp, 4
0048B5F6 85C0 test eax, eax
0048B5F8 75 0A jnz short 0048B604
0048B5FA 6A 1C push 1C
这里就是OEP了 不过要补代码
这时在堆栈里找这个位置:
0012FF84 0012FFE0指向下一个 SEH 记录的指针
0012FF88 0048FAFCSE处理程序 (1)记这两个地址
0012FF8C 00684870丝路飞人.00684870 (2)
我们已经知道是Microsoft Visual C++ 6.0,好就一个Microsoft Visual C++ 6.0的OEP来补代码
push ebp
mov ebp, esp
push -1
push ????? ;(1)
push ????? ;(2)
mov eax, dword ptr fs:
push eax
mov dword ptr fs:, esp
sub esp, 58
push ebx
push esi
push edi
mov dword ptr , esp
call ????? ;(3)
xor edx, edx
mov dl, ah
mov dword ptr , eax
好了补代码的位置如下:
0048B56D >/$55 push ebp
0048B56E|.8BEC mov ebp, esp
0048B570|.6A FF push -1
0048B572|.68 FCFA4800 push 0048FAFC ;入口地址
0048B577|.68 70486800 push 00684870 ;SE 处理程序安装
0048B57C|.64:A1 0000000>mov eax, dword ptr fs:
0048B582|.50 push eax
0048B583|.64:8925 00000>mov dword ptr fs:, esp
0048B58A|.83EC 58 sub esp, 58
0048B58D|.53 push ebx
0048B58E|.56 push esi
0048B58F|.57 push edi
0048B590|.8965 E8 mov dword ptr , esp
0048B593|.E8 425C387C call kernel32.GetVersion
0048B598|.33D2 xor edx, edx
0048B59A|.8AD4 mov dl, ah
在0048B56D新建EIP,DUMP,然后修复,只能手动找了,呵呵
还记得这个地址吗?ds:=7C8111DA (kernel32.GetVersion),在数据窗口中Ctrl+G 到006BE924
然后上下翻,找到IAT的起地址:006BE7A4终地址:006BEA84大小:2E0
修复时发现好些无效,直接剪掉就可以了,然后转存,可以运行!!!
程序http://gggg6269.googlepages.com/slfr.rar
哪个朋友帮忙看下。。。。。。
页:
[1]