软件: 木马清道夫
加壳:PECompact 2.x -> Jeremy Collake
脱壳后:Microsoft Visual Basic 5.0 / 6.0
程序不能运行
重建输入表 ,查到的全是无效函数 脱壳不成功
下面是我的脱壳过程 大家看看有什么不对的地方
OD载人到此处
004013A4 > B8 94AB7700 MOV EAX,FygTClea.0077AB94 ; SEH 异常的入口地址
004013A9 50 PUSH EAX
004013AA 64:FF35 0000000>PUSH DWORD PTR FS:[0]
004013B1 64:8925 0000000>MOV DWORD PTR FS:[0],ESP
004013B8 33C0 XOR EAX,EAX
004013BA 8908 MOV DWORD PTR DS:[EAX],ECX ; 按F8 跟踪到此发生异常 CTRL+G 输入异常的入口地址
CTRL+G 到此 F2在0077AB94下断点 SHIFT+F9 运行中断在0077AB94 F8继续跟踪 到0077ABB6
0077AB94 B8 939977F0 MOV EAX,F0779993
0077AB99 8D88 24120010 LEA ECX,DWORD PTR DS:[EAX+10001224]
0077AB9F 8941 01 MOV DWORD PTR DS:[ECX+1],EAX
0077ABA2 8B5424 04 MOV EDX,DWORD PTR SS:[ESP+4]
0077ABA6 8B52 0C MOV EDX,DWORD PTR DS:[EDX+C]
0077ABA9 C602 E9 MOV BYTE PTR DS:[EDX],0E9
0077ABAC 83C2 05 ADD EDX,5
0077ABAF 2BCA SUB ECX,EDX
0077ABB1 894A FC MOV DWORD PTR DS:[EDX-4],ECX
0077ABB4 33C0 XOR EAX,EAX
0077ABB6 C3 RETN
F8 到此 一路F7
7C9237BF 64:8B25 0000000>MOV ESP,DWORD PTR FS:[0]
7C9237C6 64:8F05 0000000>POP DWORD PTR FS:[0]
7C9237CD 8BE5 MOV ESP,EBP
7C9237CF 5D POP EBP
7C9237D0 C2 1400 RETN 14
F7
7C92378B 5F POP EDI ; ntdll.7C930738
7C92378C 5E POP ESI
7C92378D 5B POP EBX
7C92378E C2 1400 RETN 14
F7
7C957860 F605 5AC3997C 8>TEST BYTE PTR DS:[7C99C35A],80
7C957867 8BF8 MOV EDI,EAX
7C957869 0F85 16720100 JNZ ntdll.7C96EA85
7C95786F 395D 08 CMP DWORD PTR SS:[EBP+8],EBX
7C957872 0F84 1B720100 JE ntdll.7C96EA93
7C957878 8BC7 MOV EAX,EDI
7C95787A 33C9 XOR ECX,ECX
7C95787C 2BC1 SUB EAX,ECX
7C95787E ^ 0F85 8631FFFF JNZ ntdll.7C94AA0A
7C957884 F646 04 01 TEST BYTE PTR DS:[ESI+4],1
7C957888 0F85 4F720100 JNZ ntdll.7C96EADD
7C95788E C645 FF 01 MOV BYTE PTR SS:[EBP-1],1
7C957892 5F POP EDI
7C957893 5B POP EBX
7C957894 8A45 FF MOV AL,BYTE PTR SS:[EBP-1]
7C957897 5E POP ESI
7C957898 C9 LEAVE
7C957899 C2 0800 RETN 8
F7
7C92EAFA 0AC0 OR AL,AL
7C92EAFC 74 0C JE SHORT ntdll.7C92EB0A
7C92EAFE 5B POP EBX
7C92EAFF 59 POP ECX
7C92EB00 6A 00 PUSH 0
7C92EB02 51 PUSH ECX
7C92EB03 E8 11EBFFFF CALL ntdll.ZwContinue 这里F8就运行了 F7进入
F7
7C92D619 > B8 20000000 MOV EAX,20
7C92D61E BA 0003FE7F MOV EDX,7FFE0300
7C92D623 FF12 CALL DWORD PTR DS:[EDX]
7C92D625 C2 0800 RETN 8
F7
7C92EB8B > 8BD4 MOV EDX,ESP
7C92EB8D 0F34 SYSENTER 返回到主程序
到此 一路F8
0077ABB7 B8 939977F0 MOV EAX,F0779993
0077ABBC 64:8F05 0000000>POP DWORD PTR FS:[0] ; 0012FFE0
0077ABC3 83C4 04 ADD ESP,4
0077ABC6 55 PUSH EBP
0077ABC7 53 PUSH EBX
0077ABC8 51 PUSH ECX
0077ABC9 57 PUSH EDI
0077ABCA 56 PUSH ESI
0077ABCB 52 PUSH EDX
0077ABCC 8D98 DD110010 LEA EBX,DWORD PTR DS:[EAX+100011DD]
0077ABD2 8B53 18 MOV EDX,DWORD PTR DS:[EBX+18]
0077ABD5 52 PUSH EDX
0077ABD6 8BE8 MOV EBP,EAX
0077ABD8 6A 40 PUSH 40
0077ABDA 68 00100000 PUSH 1000
0077ABDF FF73 04 PUSH DWORD PTR DS:[EBX+4]
0077ABE2 6A 00 PUSH 0
0077ABE4 8B4B 10 MOV ECX,DWORD PTR DS:[EBX+10]
0077ABE7 03CA ADD ECX,EDX
0077ABE9 8B01 MOV EAX,DWORD PTR DS:[ECX]
0077ABEB FFD0 CALL EAX
0077ABED 5A POP EDX
0077ABEE 8BF8 MOV EDI,EAX
0077ABF0 50 PUSH EAX
0077ABF1 52 PUSH EDX ; FygTClea.00400000
0077ABF2 8B33 MOV ESI,DWORD PTR DS:[EBX]
0077ABF4 8B43 20 MOV EAX,DWORD PTR DS:[EBX+20]
0077ABF7 03C2 ADD EAX,EDX ; FygTClea.00400000
0077ABF9 8B08 MOV ECX,DWORD PTR DS:[EAX] ; kernel32.GetProcAddress
0077ABFB 894B 20 MOV DWORD PTR DS:[EBX+20],ECX ; kernel32.GetProcAddress
0077ABFE 8B43 1C MOV EAX,DWORD PTR DS:[EBX+1C]
0077AC01 03C2 ADD EAX,EDX
0077AC03 8B08 MOV ECX,DWORD PTR DS:[EAX]
0077AC05 894B 1C MOV DWORD PTR DS:[EBX+1C],ECX ; kernel32.LoadLibraryA
0077AC08 03F2 ADD ESI,EDX
0077AC0A 8B4B 0C MOV ECX,DWORD PTR DS:[EBX+C]
0077AC0D 03CA ADD ECX,EDX
0077AC0F 8D43 1C LEA EAX,DWORD PTR DS:[EBX+1C]
0077AC12 50 PUSH EAX
0077AC13 57 PUSH EDI
0077AC14 56 PUSH ESI
0077AC15 FFD1 CALL ECX
0077AC17 5A POP EDX
0077AC18 58 POP EAX
0077AC19 0343 08 ADD EAX,DWORD PTR DS:[EBX+8]
0077AC1C 8BF8 MOV EDI,EAX
0077AC1E 52 PUSH EDX
0077AC1F 8BF0 MOV ESI,EAX
0077AC21 8B46 FC MOV EAX,DWORD PTR DS:[ESI-4]
0077AC24 83C0 04 ADD EAX,4
0077AC27 2BF0 SUB ESI,EAX
0077AC29 8956 08 MOV DWORD PTR DS:[ESI+8],EDX
0077AC2C 8B4B 10 MOV ECX,DWORD PTR DS:[EBX+10]
0077AC2F 894E 24 MOV DWORD PTR DS:[ESI+24],ECX
0077AC32 8B4B 14 MOV ECX,DWORD PTR DS:[EBX+14]
0077AC35 51 PUSH ECX
0077AC36 894E 28 MOV DWORD PTR DS:[ESI+28],ECX
0077AC39 8B4B 0C MOV ECX,DWORD PTR DS:[EBX+C]
0077AC3C 894E 14 MOV DWORD PTR DS:[ESI+14],ECX
0077AC3F FFD7 CALL EDI
0077AC41 8985 D0120010 MOV DWORD PTR SS:[EBP+100012D0],EAX ; FygTClea.<模块入口点>
0077AC47 8BF0 MOV ESI,EAX ; FygTClea.<模块入口点>
0077AC49 59 POP ECX
0077AC4A 5A POP EDX
0077AC4B EB 0C JMP SHORT FygTClea.0077AC59
0077AC4D 03CA ADD ECX,EDX
0077AC4F 68 00800000 PUSH 8000
0077AC54 6A 00 PUSH 0
0077AC56 57 PUSH EDI
0077AC57 FF11 CALL DWORD PTR DS:[ECX]
0077AC59 8BC6 MOV EAX,ESI ; FygTClea.<模块入口点>
0077AC5B 5A POP EDX
0077AC5C 5E POP ESI
0077AC5D 5F POP EDI
0077AC5E 59 POP ECX
0077AC5F 5B POP EBX
0077AC60 5D POP EBP
0077AC61 - FFE0 JMP EAX ; FygTClea.<模块入口点>
F8跳到此处 脱壳 (以前我在脱 PECompact 2.x -> Jeremy Collake 壳的时候到此就可以脱成功的,但是这个程序却不行)
004013A4 > 68 E0194500 PUSH FygTClea.004519E0
004013A9 E8 EEFFFFFF CALL FygTClea.0040139C ; JMP 到 MSVBVM60.ThunRTMain
004013AE 0000 ADD BYTE PTR DS:[EAX],AL
004013B0 50 PUSH EAX
在004013A4 上面还有很多的函数VB函数
00401186 - FF25 80104000 JMP DWORD PTR DS:[401080] ; MSVBVM60.rtcMidCharBstr
0040118C - FF25 D0104000 JMP DWORD PTR DS:[4010D0] ; MSVBVM60.rtcReplace
00401192 - FF25 8C104000 JMP DWORD PTR DS:[40108C] ; MSVBVM60.rtcSpaceVar
00401198 - FF25 4C104000 JMP DWORD PTR DS:[40104C] ; MSVBVM60.rtcEnvironBstr
0040119E - FF25 DC104000 JMP DWORD PTR DS:[4010DC] ; MSVBVM60.rtcVarBstrFromAnsi
004011A4 - FF25 40114000 JMP DWORD PTR DS:[401140] ; MSVBVM60.rtcLeftCharVar
004011AA - FF25 4C114000 JMP DWORD PTR DS:[40114C] ; MSVBVM60.rtcRightCharVar
004011B0 - FF25 64104000 JMP DWORD PTR DS:[401064] ; MSVBVM60.rtcMsgBox
004011B6 - FF25 3C114000 JMP DWORD PTR DS:[40113C] ; MSVBVM60.rtcLeftCharBstr
004011BC - FF25 70104000 JMP DWORD PTR DS:[401070] ; MSVBVM60.rtcDoEvents
004011C2 - FF25 88104000 JMP DWORD PTR DS:[401088] ; MSVBVM60.rtcMidCharVar
004011C8 - FF25 98104000 JMP DWORD PTR DS:[401098] ; MSVBVM60.rtcKillFiles
004011CE - FF25 1C114000 JMP DWORD PTR DS:[40111C] ; MSVBVM60.rtcFileCopy
004011D4 - FF25 FC104000 JMP DWORD PTR DS:[4010FC] ; MSVBVM60.rtcDir
004011DA - FF25 84104000 JMP DWORD PTR DS:[401084] ; MSVBVM60.rtcSpaceBstr
004011E0 - FF25 3C104000 JMP DWORD PTR DS:[40103C] ; MSVBVM60.rtcTrimBstr
004011E6 - FF25 94104000 JMP DWORD PTR DS:[401094] ; MSVBVM60.rtcUpperCaseVar
004011EC - FF25 08114000 JMP DWORD PTR DS:[401108] ; MSVBVM60.rtcFreeFile
004011F2 - FF25 20114000 JMP DWORD PTR DS:[401120] ; MSVBVM60.rtcErrObj
004011F8 - FF25 B0104000 JMP DWORD PTR DS:[4010B0] ; MSVBVM60.rtcShell
004011FE - FF25 78104000 JMP DWORD PTR DS:[401078] ; MSVBVM60.rtcTrimVar
00401204 - FF25 34104000 JMP DWORD PTR DS:[401034] ; MSVBVM60.rtcLowerCaseVar
0040120A - FF25 58114000 JMP DWORD PTR DS:[401158] ; MSVBVM60.rtcBstrFromFormatVar
00401210 - FF25 28114000 JMP DWORD PTR DS:[401128] ; MSVBVM60.rtcGetSetting
00401216 - FF25 74114000 JMP DWORD PTR DS:[401174] ; MSVBVM60.rtcR8ValFromBstr
0040121C - FF25 D4104000 JMP DWORD PTR DS:[4010D4] ; MSVBVM60.rtcStringBstr
00401222 - FF25 68114000 JMP DWORD PTR DS:[401168] ; MSVBVM60.rtcGetPresentDate
00401228 - FF25 40104000 JMP DWORD PTR DS:[401040] ; MSVBVM60.rtcGetYear
0040122E - FF25 64114000 JMP DWORD PTR DS:[401164] ; MSVBVM60.rtcGetMonthOfYear
00401234 - FF25 50114000 JMP DWORD PTR DS:[401150] ; MSVBVM60.rtcGetDayOfMonth
0040123A - FF25 54114000 JMP DWORD PTR DS:[401154] ; MSVBVM60.rtcGetHourOfDay
00401240 - FF25 60114000 JMP DWORD PTR DS:[401160] ; MSVBVM60.rtcGetMinuteOfHour
00401246 - FF25 6C114000 JMP DWORD PTR DS:[40116C] ; MSVBVM60.rtcGetSecondOfMinute
0040124C - FF25 38114000 JMP DWORD PTR DS:[401138] ; MSVBVM60.rtcVarStrFromVar
00401252 - FF25 A0104000 JMP DWORD PTR DS:[4010A0] ; MSVBVM60.rtcVarType
00401258 - FF25 38104000 JMP DWORD PTR DS:[401038] ; MSVBVM60.rtcGetObject
0040125E - FF25 E0104000 JMP DWORD PTR DS:[4010E0] ; MSVBVM60.rtcMakeDir
00401264 - FF25 F8104000 JMP DWORD PTR DS:[4010F8] ; MSVBVM60.rtcBstrFromAnsi
0040126A - FF25 68104000 JMP DWORD PTR DS:[401068] ; MSVBVM60.rtcInputBox
00401270 - FF25 30114000 JMP DWORD PTR DS:[401130] ; MSVBVM60.rtcGetTimeVar
00401276 - FF25 70114000 JMP DWORD PTR DS:[401170] ; MSVBVM60.rtcSetFileAttr
0040127C - FF25 D8104000 JMP DWORD PTR DS:[4010D8] ; MSVBVM60.rtcStringVar
00401282 - FF25 5C114000 JMP DWORD PTR DS:[40115C] ; MSVBVM60.rtcBstrFromError
00401288 - FF25 E4104000 JMP DWORD PTR DS:[4010E4] ; MSVBVM60.rtcStrConvVar2
0040128E - FF25 24104000 JMP DWORD PTR DS:[401024] ; MSVBVM60.rtcSaveSetting
00401294 - FF25 F0104000 JMP DWORD PTR DS:[4010F0] ; MSVBVM60.rtcStrFromVar
0040129A - FF25 10114000 JMP DWORD PTR DS:[401110] ; MSVBVM60.rtcHexBstrFromVar
004012A0 - FF25 0C114000 JMP DWORD PTR DS:[40110C] ; MSVBVM60.rtcEndOfFile
004012A6 - FF25 18114000 JMP DWORD PTR DS:[401118] ; MSVBVM60.rtcImmediateIf
004012AC - FF25 54104000 JMP DWORD PTR DS:[401054] ; MSVBVM60.rtcCommandBstr
004012B2 - FF25 B4104000 JMP DWORD PTR DS:[4010B4] ; MSVBVM60.rtcArray
004012B8 - FF25 F4104000 JMP DWORD PTR DS:[4010F4] ; MSVBVM60.VarPtr
004012BE - FF25 04114000 JMP DWORD PTR DS:[401104] ; MSVBVM60.rtcFileLength
004012C4 - FF25 A4104000 JMP DWORD PTR DS:[4010A4] ; MSVBVM60.rtcInputCountVar
004012CA - FF25 30104000 JMP DWORD PTR DS:[401030] ; MSVBVM60.rtcAnsiValueBstr
004012D0 - FF25 14114000 JMP DWORD PTR DS:[401114] ; MSVBVM60.rtcHexVarFromVar
004012D6 - FF25 48114000 JMP DWORD PTR DS:[401148] ; MSVBVM60.rtcRightCharBstr
004012DC - FF25 18104000 JMP DWORD PTR DS:[401018] ; ole32.CoTaskMemFree
004012E2 - FF25 10104000 JMP DWORD PTR DS:[401010] ; OLEAUT32.SystemTimeToVariantTime
004012E8 - FF25 04104000 JMP DWORD PTR DS:[401004] ; kernel32.FileTimeToSystemTime
004012EE - FF25 08104000 JMP DWORD PTR DS:[401008] ; kernel32.lstrlenW
004012F4 - FF25 00104000 JMP DWORD PTR DS:[401000] ; kernel32.FileTimeToLocalFileTime
004012FA - FF25 44114000 JMP DWORD PTR DS:[401144] ; MSVBVM60.rtcGetDateValue
00401300 - FF25 48104000 JMP DWORD PTR DS:[401048] ; MSVBVM60.rtcEnvironVar
00401306 - FF25 00114000 JMP DWORD PTR DS:[401100] ; MSVBVM60.rtcCurrentDir
0040130C - FF25 44104000 JMP DWORD PTR DS:[401044] ; MSVBVM60.rtcDateDiff
00401312 - FF25 5C104000 JMP DWORD PTR DS:[40105C] ; MSVBVM60.rtcRandomize
00401318 - FF25 58104000 JMP DWORD PTR DS:[401058] ; MSVBVM60.rtcRandomNext
0040131E - FF25 C4104000 JMP DWORD PTR DS:[4010C4] ; MSVBVM60.__vbaExceptHandler
00401324 - FF25 EC104000 JMP DWORD PTR DS:[4010EC] ; MSVBVM60.ProcCallEngine
0040132A - FF25 C0104000 JMP DWORD PTR DS:[4010C0] ; MSVBVM60.EVENT_SINK_QueryInterface
00401330 - FF25 90104000 JMP DWORD PTR DS:[401090] ; MSVBVM60.EVENT_SINK_AddRef
00401336 - FF25 AC104000 JMP DWORD PTR DS:[4010AC] ; MSVBVM60.EVENT_SINK_Release
0040133C - FF25 28104000 JMP DWORD PTR DS:[401028] ; MSVBVM60.MethCallEngine
00401342 - FF25 60104000 JMP DWORD PTR DS:[401060] ; MSVBVM60.GetMem4
00401348 - FF25 7C104000 JMP DWORD PTR DS:[40107C] ; MSVBVM60.PutMem4
0040134E - FF25 A8104000 JMP DWORD PTR DS:[4010A8] ; MSVBVM60.Zombie_GetTypeInfoCount
00401354 - FF25 50104000 JMP DWORD PTR DS:[401050] ; MSVBVM60.Zombie_GetTypeInfo
0040135A - FF25 20104000 JMP DWORD PTR DS:[401020] ; MSVBVM60.EVENT_SINK_GetIDsOfNames
00401360 - FF25 2C104000 JMP DWORD PTR DS:[40102C] ; MSVBVM60.EVENT_SINK_Invoke
00401366 - FF25 74104000 JMP DWORD PTR DS:[401074] ; MSVBVM60.GetMemObj
0040136C - FF25 BC104000 JMP DWORD PTR DS:[4010BC] ; MSVBVM60.PutMemObj
00401372 - FF25 CC104000 JMP DWORD PTR DS:[4010CC] ; MSVBVM60.SetMemObj
00401378 - FF25 6C104000 JMP DWORD PTR DS:[40106C] ; MSVBVM60.GetMemVar
0040137E - FF25 B8104000 JMP DWORD PTR DS:[4010B8] ; MSVBVM60.PutMemVar
00401384 - FF25 C8104000 JMP DWORD PTR DS:[4010C8] ; MSVBVM60.SetMemVar
0040138A - FF25 E8104000 JMP DWORD PTR DS:[4010E8] ; MSVBVM60.GetMemEvent
00401390 - FF25 2C114000 JMP DWORD PTR DS:[40112C] ; MSVBVM60.PutMemEvent
00401396 - FF25 34114000 JMP DWORD PTR DS:[401134] ; MSVBVM60.SetMemEvent
0040139C - FF25 24114000 JMP DWORD PTR DS:[401124] ; MSVBVM60.ThunRTMain
004013A2 0000 ADD BYTE PTR DS:[EAX],AL
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)