本人新手,一直潜修,现手工脱壳测试,纯属练习,有不对的地方欢迎大家指正
软件 qqnmtf (QQ农牧偷匪) 虽然很多人不赞成脱类似软件,不过本人是新手,手里大小合适的也就是这样的小程序了!
工具 OD PEiD
废话不多说
OD载入程序,提示代码可能被压缩加密,是否继续分析,点否
004F0001 > 60 pushad F8单步
004F0002 E8 03000000 call 004F000A ; F7跟进,否则会启动程序
004F0007 - E9 EB045D45 jmp 45AC04F7
我们来到这里:
004F000A 5D pop ebp ; qqnmtf.004F0007 F8单步
004F000B 45 inc ebp
004F000C 55 push ebp
004F000D C3 retn
004F000E E8 01000000 call 004F0014 ; F7跟进,否则会启动程序
004F0013 EB 5D jmp short 004F0072
到这里:
004F0014 5D pop ebp ; qqnmtf.004F0013 F8单步
004F0015 BB EDFFFFFF mov ebx, -13
004F001A 03DD add ebx, ebp
004F001C 81EB 00000F00 sub ebx, 0F0000
004F0022 83BD 88040000 0>cmp dword ptr [ebp+488], 0
004F0029 899D 88040000 mov dword ptr [ebp+488], ebx
004F002F 0F85 CB030000 jnz 004F0400
004F0035 8D85 94040000 lea eax, dword ptr [ebp+494]
一直到这里:
004F0058 AE scas byte ptr es:[edi]
004F0059 ^ 75 FD jnz short 004F0058 ; 这里有个回跳
004F005B 3807 cmp byte ptr [edi], al ;单击这里,然后按F4 运行到选定位置
004F005D ^\75 EE jnz short 004F004D ; 这里有个回跳
004F005F 8D45 7A lea eax, dword ptr [ebp+7A] ;单击这里,然后按F4 运行到选定位置
004F0062 FFE0 jmp eax
004F0064 56 push esi
004F0065 6972 74 75616C4>imul esi, dword ptr [edx+74], 416C617>
然后一路F8到这里
004F0132 ^ EB EB jmp short 004F011F ; 这里有个回跳,注意
004F0134 8B06 mov eax, dword ptr [esi] ;这里单击然后F4
004F0136 EB 00 jmp short 004F0138
继续F8直到这里
004F014C 83E9 05 sub ecx, 5
004F014F ^ EB CE jmp short 004F011F ; 这里有个回跳,注意
004F0151 5B pop ebx ;这里单击然后F4
004F0152 5E pop esi
然后继续F8,直到这里
004F018F 833E 00 cmp dword ptr [esi], 0
004F0192 ^ 0F85 2FFFFFFF jnz 004F00C7 ;又是个回跳,注意
004F0198 68 00800000 push 8000 ;在这里单击然后F4
004F019D 6A 00 push 0
F8经过N个大跳小跳,来这这里
004F0367 8385 AD050000 0>add dword ptr [ebp+5AD], 4
004F036E ^ E9 2FFFFFFF jmp 004F02A2 ;还是回跳,注意啊
004F0373 8906 mov dword ptr [esi], eax ;这里单击然后 F4
004F0375 8946 0C mov dword ptr [esi+C], eax
F8几步就来到这里
004F037E 8B95 88040000 mov edx, dword ptr [ebp+488] ; qqnmtf.00400000
004F0384 ^ E9 E8FEFFFF jmp 004F0271 ;回跳回跳,注意啊
004F0389 8BB5 88040000 mov esi, dword ptr [ebp+488] ;这里单击 然后F4
004F038F 8B7E 3C mov edi, dword ptr [esi+3C]
狂按F8 移步到这里
004F03F7 8947 24 mov dword ptr [edi+24], eax
004F03FA ^ E2 BB loopd short 004F03B7 ; 可恶的回跳,千万不要功亏一篑啊! 这是一个大回跳,据说是快到入口点的标志,呵呵,我们继续往下看。
004F03FC FF55 6A call dword ptr [ebp+6A] ;这里单击,然后F4
004F03FF 59 pop ecx
004F0400 B8 94830700 mov eax, 78394
004F0405 50 push eax
004F0406 0385 88040000 add eax, dword ptr [ebp+488]
004F040C 59 pop ecx
004F040D 0BC9 or ecx, ecx
004F040F 8985 0E040000 mov dword ptr [ebp+40E], eax
004F0415 61 popad
004F0416 75 08 jnz short 004F0420
004F0418 B8 01000000 mov eax, 1
004F041D C2 0C00 retn 0C
004F0420 68 94834700 push 00478394 ;果然哦F8几步之后就到了这里
004F0425 C3 retn ; 返回点,这就是程序入口 F8进入
004F0426 8B85 8C040000 mov eax, dword ptr [ebp+48C]
从004F0425这里F8之后,我们就来到了这里
00478394 E8 42680000 call 0047EBDB ;传说中的程序入口!从这里Dump吧!
00478399 ^ E9 79FEFFFF jmp 00478217
0047839E 3B0D 90884C00 cmp ecx, dword ptr [4C8890]
004783A4 75 02 jnz short 004783A8
004783A6 F3: prefix rep:
004783A7 C3 retn
004783A8 E9 C4680000 jmp 0047EC71
004783AD 8BFF mov edi, edi
004783AF 51 push ecx
004783B0 C701 704C4A00 mov dword ptr [ecx], 004A4C70
004783B6 E8 BC690000 call 0047ED77
004783BB 59 pop ecx
004783BC C3 retn
好了,脱壳到这里就结束了,剩下的就是修复程序然后做想做的事了!
初次跟踪,难免有纰漏,请各位高手们指正!
[课程]Linux pwn 探索篇!