今天遇到个MoleBox 壳
看了CCDebuger的那个MoleBox 脱壳总结后
http://bbs.pediy.com/showthread.php?t=42700
脱是脱下来了但是两种方法都是修复的时候遇到问题
望指点
OD载入后用ESP定律来到
CALL EAX ; 这里F7进去就是OEP
到达OEP这里:
00493A22 55 push ebp ;这里脱掉后程序不能运行修复时出现假函数,修复后无效
00493A23 8BEC mov ebp,esp
00493A25 6A FF push -1
00493A27 68 40DA4B00 push 3GPConve.004BDA40
00493A2C 68 C83C4900 push 3GPConve.00493CC8 ; jmp to msvcrt._except_handler3
00493A31 64:A1 00000000 mov eax,dword ptr fs:[0]
00493A37 50 push eax
00493A38 64:8925 00000000 mov dword ptr fs:[0],esp
后面CCDebuger说
00493A4A 895D FC mov dword ptr ss:[ebp-4],ebx
00493A4D 6A 02 push 2
00493A4F FF15 24AD4900 call dword ptr ds:[49AD24] ; msvcrt.__set_app_type //在这里跟到内存数据去 然后重载 在此处在内存访问断点
后多次中断后 一直没观察到
//--------------------这是CCDebuger所说的----------------------//
00427624 73DC067B MFC42.#952_??_afxSOCK@@3UAFX_SOCK_CALL@@A@@YAXXZ
00427628 73DCC3C8 MFC42.#3716_?GetRuntimeClass@CSliderCtrl@@UBEPAUCRuntimeClass@@XZ
0042762C 73D8ACCE MFC42.#541_??0CStringArray@@QAE@XZ
00427630 00000000
00427634 77C1EE2F msvcrt._controlfp
00427638 0002E8E4
0042763C 0002E8D6
00427640 0002E8C6
//-------------------而我的是这个----------------------------------//
0049AD08 77C317AC offset msvcrt._acmdln
0049AD0C 77BEEEEB msvcrt.__getmainargs
0049AD10 77C09D67 msvcrt._initterm
0049AD14 77C1D675 msvcrt.__setusermatherr
0049AD18 77C323D8 offset msvcrt._adjust_fdiv
0049AD1C 77BEF1A4 msvcrt.__p__commode
0049AD20 77BEF1DB msvcrt.__p__fmode
0049AD24 77C0537C msvcrt.__set_app_type
0049AD28 77C1EE2F msvcrt._controlfp
0049AD2C 77BEF18E msvcrt.__p___argv
0049AD30 77BFF566 msvcrt._open
0049AD34 77BFD0D7 msvcrt._close
0049AD38 77C0F010 msvcrt.fopen
0049AD3C 77C0084D msvcrt._setmbcp
0049AD40 77BEF827 msvcrt._mkdir
我在多次下断 后下面的函数永远都不为空
就尝试第二种方式:
这里请教一个问题CCDebuger说首先进到MoleBox壳的EP
MoleBox壳的EP怎么进呢? 不是OD载入后停到的地方么?
我直接下段的BP VirtualProtect
两次中断返回到了 RETN F8就到了
0051D0AD FF15 40985200 call dword ptr ds:[529840] ; kernel32.VirtualProtect
0051D0B3 8B15 18975200 mov edx,dword ptr ds:[529718] //[00529718]的值就是OEP
0051D0B9 8B45 E8 mov eax,dword ptr ss:[ebp-18]
0051D0BC 0342 08 add eax,dword ptr ds:[edx+8] //在CCD的教程中 就在这里脱掉即可 输入表的RVA
0051D0BF 8945 F4 mov dword ptr ss:[ebp-C],eax
0051D0C2 C705 A4995200 0000000>mov dword ptr ds:[5299A4],0
0051D0CC 6A 00 push 0
0051D0CE 6A 00 push 0
0051D0D0 68 9C8C5200 push 3GPConve.00528C9C ; ASCII "EXECUTABLE"
0051D0D5 8B0D A0995200 mov ecx,dword ptr ds:[5299A0] ; 3GPConve.00400130
0051D0DB 51 push ecx
0051D0DC 8B55 E8 mov edx,dword ptr ss:[ebp-18]
0051D0DF 52 push edx
我脱掉修复时候 依然全部是现实无效函数
我不知道哪里错了
等待指点
[课程]FART 脱壳王!加量不加价!FART作者讲授!