SVKP 1.3x 手脱
PEID查壳SVKP 1.3x -> Pavol Cerven避开IAT加密,处理输入表
忽略所有异常选项,隐藏OD!载入加壳程序
OD载入
0040E000 >60 pushad 停在这里
0040E001 E8 00000000 call Baby.0040E006 ESP==0012FFC4
0040E006 5D pop ebp
0040E007 81ED 06000000 sub ebp,6
0040E00D EB 05 jmp short Baby.0040E014
0040E00F B8 06364200 mov eax,423606
0040E014 64:A0 23000000mov al,byte ptr fs:
0040E01A EB 03 jmp short Baby.0040E01F
0040E01C C784E8 84C0EB03>mov dword ptr ds:,75E984>
0040E027 67:B9 49000000mov ecx,49
0040E02D 8DB5 C5020000 lea esi,dword ptr ss:
下段 bp GetModuleHandleA+5,Shift+F9 两次,断下后取消断点,Alt+F9返回!
7C80B6A6 837D 08 00 cmp dword ptr ss:,0段在这里 取消短点
7C80B6AA 74 18 je short kernel32.7C80B6C4
7C80B6AC FF75 08 push dword ptr ss:
7C80B6AF E8 C0290000 call kernel32.7C80E074
7C80B6B4 85C0 test eax,eax
7C80B6B6 74 08 je short kernel32.7C80B6C0
7C80B6B8 FF70 04 push dword ptr ds:
7C80B6BB E8 7D2D0000 call kernel32.GetModuleHandleW
7C80B6C0 5D pop ebp
7C80B6C1 C2 0400 retn 4
0012F83C/0012F884
0012F840|66001BC5返回到 MSVBVM60.66001BC5 来自 kernel32.GetModuleHandleA
0012F844|6600F4D0ASCII "kernel32.dll"
0012F848|66001B64返回到 MSVBVM60.66001B64 来自 MSVBVM60.66001B90
0012F84C|66000000offset MSVBVM60.#1374
0E6F08BC 60 pushad 返回在这里
0E6F08BD E8 03000000 call 0E6F08C5
0E6F08C2 D2EB shr bl,cl
0E6F08C4 0A58 EB or bl,byte ptr ds:
0E6F08C7 0148 40 add dword ptr ds:,ecx
0E6F08CA EB 01 jmp short 0E6F08CD
0E6F08CC 35 FFE0615E xor eax,5E61E0FF
0E6F08D1 E8 01000000 call 0E6F08D7
0E6F08D6- E9 83C4045F jmp 6D73CD5E
0E6F08DB 7C 03 jl short 0E6F08E0
搜索特征码,搜索所有命令:mov dword ptr ds:,eax
双击第最后一个来到这里
0E6F2B9C 8907 mov dword ptr ds:,eax
0E6F2B9E 7C 03 jl short 0E6F2BA3
0E6F2BA0 EB 03 jmp short 0E6F2BA5
0E6F2BA2- E9 74FB61E8 jmp F6D1271B
0E6F2BA7 0100 add dword ptr ds:,eax
0E6F2BA9 0000 add byte ptr ds:,al
0E6F2BAB 9A 83C404EB 02C>call far CD02:EB04C483
0E6F2BB2 2083 8583E101 and byte ptr ds:,al
0E6F2BB8 0004EB add byte ptr ds:,al
0E6F2BBB 020F add cl,byte ptr ds:
0E6F2BBD 9A E965E0FF FFE>call far E8FF:FFE065E9
0E6F2BC4 0200 add al,byte ptr ds:
0E6F2BC6 0000 add byte ptr ds:,al
0E6F2BC8 CD20 83042408 vxdcall 8240483
用OD 带的 SVKP 1.32插件去下花指令!
0E6F2B9C 8907 mov dword ptr ds:,eax 去处之后
0E6F2B9E 7C 03 jl short 0E6F2BA3
0E6F2BA0 90 nop
0E6F2BA1 90 nop
0E6F2BA2 90 nop
0E6F2BA3 90 nop
0E6F2BA4 90 nop
0E6F2BA5 61 popad
把原来的代码改下
0E6F2B9C 8907 mov dword ptr ds:,eax 原来代码
0E6F2B9E 7C 03 jl short 0E6F2BA3
0E6F2BA0 90 nop
0E6F2BA1 90 nop
0E6F2BA2 90 nop
0E6F2BA3 90 nop
0E6F2BA4 90 nop
0E6F2BA5 61 popad
修改之后
0E6F2B9C 61 popad
0E6F2B9D 8907 mov dword ptr ds:,eax
0E6F2B9F^ 7C 90 jl short 0E6F2B31
0E6F2BA1 90 nop
0E6F2BA2 90 nop
0E6F2BA3 90 nop
0E6F2BA4 90 nop
0E6F2BA5 90 nop
继续 搜索所有命令 cmp dword ptr ds:,251097CC//用来处理特殊加密
双机第一段 来到
0E6F0F64 813B CC971025 cmp dword ptr ds:,251097CC 停在这里 //F2下断 shirt+F9运行
取消断点F8单步向下(遇到CALL按F7跟进)
0E6F0F6A EB 03 jmp short 0E6F0F6F
0E6F0F6C C784E9 0F844330>mov dword ptr ds:,32E80>
0E6F0F77 0000 add byte ptr ds:,al
0E6F0F79 00C3 add bl,al
0E6F0F7B EB 04 jmp short 0E6F0F81
0E6F0F7D C745 1A 645053E>mov dword ptr ss:,E8535064
0E6F0F84 04 00 add al,0
0E6F0F86 0000 add byte ptr ds:,al
0E6F0F88 8DB5 D4666658 lea esi,dword ptr ss:
0E6F0F8E 3BF6 cmp esi,esi
0E6F0F90 66:5B pop bx
来到这里
0E6F0FF4 /0F84 EB300000 je 0E6F40E5
0E6F0FFA |60 pushad
0E6F0FFB |E8 03000000 call 0E6F1003
0E6F1000 |D2EB shr bl,cl
0E6F1002 |0A58 EB or bl,byte ptr ds:
0E6F1005 |0148 40 add dword ptr ds:,ecx
0E6F1008 |EB 01 jmp short 0E6F100B
0E6F100A |35 FFE06181 xor eax,8161E0FF
0E6F100F |3B9404 B2D9EB03 cmp edx,dword ptr ss:
0E6F1016 |C784E8 0F841A35>mov dword ptr ds:,2EB00>
0E6F1021 |0FE850 52 psubsb mm2,qword ptr ds:
我们要找的就是PUSHAD的地址0E6F0FFA现在按ctrl+G回到刚才叫大家记住的地址0E6F0F64
回到
0E6F0F64 813B CC971025 cmp dword ptr ds:,251097CC
0E6F0F6A EB 03 jmp short 0E6F0F6F
修改之后
0E6F0F64 813B CC971025 cmp dword ptr ds:,251097CC
0E6F0F6A E9 8B000000 jmp 0E6F0FFA
0E6F0F6F 90 nop
0E6F0F70 90 nop
0E6F0F71 90 nop
0E6F0F72 90 nop
0E6F0F73 90 nop
0E6F0F74 90 nop
0E6F0F75 90 nop
0E6F0F76 90 nop
继续bp GetModuleHandleA+5,Shift+F9 通过所有异常,断下后取消断点,Alt+F9返回!
返回到这里
73653803 8BFF mov edi,edi
73653805 55 push ebp
73653806 8BEC mov ebp,esp
73653808 E8 D90CFFFF call 736444E6
7365380D 85C0 test eax,eax
7365380F 74 11 je short 73653822
73653811 8B4D 0C mov ecx,dword ptr ss:
3.下命令行断点hr 0012FFB0,Shift+F9中断3次!
取消断点!!
命令行下tc ebp==12FFC0(12FFC0=12FFC4-4) //12FFC4是壳入口处的ESP值
右键--分析代码,
00401128 >68 448D4000 push Baby 00408D44
0040112D E8 F0FFFFFF call <jmp.&MSVBVM60.#100>
00401132 0000 add byte ptr ds:,al
00401134 0000 add byte ptr ds:,al
00401136 0000 add byte ptr ds:,al
00401138 3000 xor byte ptr ds:,al
0040113A 0000 add byte ptr ds:,al
0040113C 3800 cmp byte ptr ds:,al
0040113E 0000 add byte ptr ds:,al
00401140 0000 add byte ptr ds:,al
00401142 0000 add byte ptr ds:,al
学习了几个月了第一次写脱文
希望大家能喜欢 呵呵~ 写得很好不错 支持来个其它版本的/:08
[ 本帖最后由 glts 于 2007-10-29 02:33 编辑 ] 呵呵,不错,赞一个 终于看到了SVKP 1.3X 的脱 文,实在是难得呀,兄弟,顶一下~ SVKP是一个强壳/:011
页:
[1]