不错,
VMP脱壳可以入下:
文件载入后在反汇编窗口单步几步,然后CTRL+G搜索VirtualProtect
7C801AD4 > 8BFF mov edi, edi ; VirtualProtect
下断点后,F9运行,观察堆栈窗口直到NewProtect项变为PAGE_READONLY
进入后需要键->分析->从模块中删除分析,重新分析一下,会出现
00401000 . D9CA4673 dd msvbvm60.rtcRgb
00401004 . 683B4973 dd msvbvm60.MethCallEngine
00401008 . 6B624873 dd msvbvm60.rtcVarFromFormatVar
0040100C . 7ECF4673 dd msvbvm60.rtcMsgBox
00401010 . 65744773 dd msvbvm60.rtcTrimVar
00401014 . D9804873 dd msvbvm60.rtcInStrRev
00401018 . 736E4773 dd msvbvm60.rtcMidCharVar
0040101C . CF994573 dd msvbvm60.EVENT_SINK_AddRef
00401020 . 8E5B4673 dd msvbvm60.rtcKillFiles
00401024 . E5A03973 dd msvbvm60.DllFunctionCall
00401028 . E2994573 dd msvbvm60.EVENT_SINK_Release
0040102C . 133A4973 dd msvbvm60.rtcArray
00401030 . E0984573 dd msvbvm60.EVENT_SINK_QueryInterfa>
00401034 . 24464773 dd msvbvm60.__vbaExceptHandler
00401038 . 04884873 dd msvbvm60.rtcReplace
0040103C . 6A7C4773 dd msvbvm60.rtcStringBstr
00401040 . 917D4773 dd msvbvm60.rtcStringVar
00401044 . 930D4773 dd msvbvm60.rtcVarBstrFromAnsi
00401048 . 1D964673 dd msvbvm60.rtcCreateObject2
0040104C . 2D8E4773 dd msvbvm60.rtcStrConvVar2
00401050 . 5DD04873 dd msvbvm60.ProcCallEngine
00401054 . E5DC4673 dd msvbvm60.VarPtr
00401058 . 44524673 dd msvbvm60.rtcDir
0040105C . 7F414673 dd msvbvm60.rtcEndOfFile
由此可以发现是vb的,查了下VB的特征可以搜索xor byte ptr ds:[eax],al
由此发现
00401128 68 E51225D8 push D82512E5
0040112D E8 62930B00 call 004BA494
00401132 0000 add byte ptr [eax], al
00401134 0000 add byte ptr [eax], al
00401136 0000 add byte ptr [eax], al
00401138 3000 xor byte ptr [eax], al
这个地方就是OEP了,并在OD中设置新的EIP
接下来就可以dump啦。通常选择OD的dump插件脱壳
然后发现可以运行,就基本上如此了
可以按照yarpee分析的,挺好的。