我脱壳遇到问题了,大家来帮帮我吧
欲脱壳程序下载地址
http://www.skycn.com/soft/11596.html
用od,忽略所有异常,用IsDebug 1.4插件去掉Ollydbg的调试器标志。
00419B30 > $ 60 PUSHAD ;入口
00419B31 . BE 00304100 MOV ESI,setup.00413000
00419B36 . 8DBE 00E0FEFF LEA EDI,DWORD PTR DS:[ESI+FFFEE000]
00419B3C . 57 PUSH EDI
00419B3D . 83CD FF OR EBP,FFFFFFFF
00419B40 . EB 10 JMP SHORT setup.00419B52 ;跳
00419B52 > 8B1E MOV EBX,DWORD PTR DS:[ESI] ;跳到这里
00419B54 . 83EE FC SUB ESI,-4
00419B57 . 11DB ADC EBX,EBX
00419B59 >^ 72 ED JB SHORT setup.00419B48 ;回跳F4
00419B5B . B8 01000000 MOV EAX,1 ;F4到这里
00419B60 > 01DB ADD EBX,EBX
00419B62 . 75 07 JNZ SHORT setup.00419B6B ;跳
00419B6B > 11C0 ADC EAX,EAX ;跳到这里
00419B6D . 01DB ADD EBX,EBX
00419B6F .^ 73 EF JNB SHORT setup.00419B60
00419B71 . 75 09 JNZ SHORT setup.00419B7C ;跳
00419B7C > 31C9 XOR ECX,ECX ;跳到这里
00419B7E . 83E8 03 SUB EAX,3
00419B81 . 72 0D JB SHORT setup.00419B90 ;跳
00419B90 > 01DB ADD EBX,EBX ;跳到这里
00419B92 . 75 07 JNZ SHORT setup.00419B9B ;跳
00419B9B > 11C9 ADC ECX,ECX ;跳到这里
00419B9D . 01DB ADD EBX,EBX
00419B9F . 75 07 JNZ SHORT setup.00419BA8 ;跳
00419BA8 > 11C9 ADC ECX,ECX ;跳到这里
00419BAA . 75 20 JNZ SHORT setup.00419BCC ;跳
00419BCC > 81FD 00F3FFFF CMP EBP,-0D00 ;跳到这里
00419BD2 . 83D1 01 ADC ECX,1
00419BD5 . 8D142F LEA EDX,DWORD PTR DS:[EDI+EBP]
00419BD8 . 83FD FC CMP EBP,-4
00419BDB . 76 0F JBE SHORT setup.00419BEC ;跳
00419BEC > 8B02 MOV EAX,DWORD PTR DS:[EDX] ;跳到这里
00419BEE . 83C2 04 ADD EDX,4
00419BF1 . 8907 MOV DWORD PTR DS:[EDI],EAX
00419BF3 . 83C7 04 ADD EDI,4
00419BF6 . 83E9 04 SUB ECX,4
00419BF9 .^ 77 F1 JA SHORT setup.00419BEC
00419BFB . 01CF ADD EDI,ECX
00419BFD .^ E9 4CFFFFFF JMP setup.00419B4E ;回跳F4
00419C02 > 5E POP ESI ;F4到这里
00419C03 . 89F7 MOV EDI,ESI
00419C05 . B9 97040000 MOV ECX,497
00419C0A > 8A07 MOV AL,BYTE PTR DS:[EDI]
00419C0C . 47 INC EDI
00419C0D . 2C E8 SUB AL,0E8
00419C0F > 3C 01 CMP AL,1
00419C11 .^ 77 F7 JA SHORT setup.00419C0A ;回跳F4
00419C13 . 803F 00 CMP BYTE PTR DS:[EDI],0 ;F4到这里
00419C16 .^ 75 F2 JNZ SHORT setup.00419C0A ;回跳F4
00419C18 . 8B07 MOV EAX,DWORD PTR DS:[EDI] ;F4到这里
00419C1A . 8A5F 04 MOV BL,BYTE PTR DS:[EDI+4]
00419C1D . 66:C1E8 08 SHR AX,8
00419C21 . C1C0 10 ROL EAX,10
00419C24 . 86C4 XCHG AH,AL
00419C26 . 29F8 SUB EAX,EDI
00419C28 . 80EB E8 SUB BL,0E8
00419C2B . 01F0 ADD EAX,ESI
00419C2D . 8907 MOV DWORD PTR DS:[EDI],EAX
00419C2F . 83C7 05 ADD EDI,5
00419C32 . 89D8 MOV EAX,EBX
00419C34 .^ E2 D9 LOOPD SHORT setup.00419C0F ;循环F4
00419C36 . 8DBE 00700100 LEA EDI,DWORD PTR DS:[ESI+17000] ;F4到这里
*******************************注意这里**********************************
00419C3C > 8B07 MOV EAX,DWORD PTR DS:[EDI]
00419C3E . 09C0 OR EAX,EAX
00419C40 . 74 3C JE SHORT setup.00419C7E
00419C42 . 8B5F 04 MOV EBX,DWORD PTR DS:[EDI+4]
00419C45 . 8D8430 C8A701>LEA EAX,DWORD PTR DS:[EAX+ESI+1A7C8]
00419C4C . 01F3 ADD EBX,ESI
00419C4E . 50 PUSH EAX
00419C4F . 83C7 08 ADD EDI,8
00419C52 . FF96 40A80100 CALL DWORD PTR DS:[ESI+1A840] ;KERNEL32.LoadLibraryA
00419C58 . 95 XCHG EAX,EBP
00419C59 > 8A07 MOV AL,BYTE PTR DS:[EDI]
00419C5B . 47 INC EDI
00419C5C . 08C0 OR AL,AL
00419C5E .^ 74 DC JE SHORT setup.00419C3C
00419C60 . 89F9 MOV ECX,EDI
00419C62 . 57 PUSH EDI
00419C63 . 48 DEC EAX
00419C64 . F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00419C66 . 55 PUSH EBP
00419C67 . FF96 44A80100 CALL DWORD PTR DS:[ESI+1A844] ;KERNEL32.GetProcAddress
00419C6D . 09C0 OR EAX,EAX
00419C6F . 74 07 JE SHORT setup.00419C78
00419C71 . 8903 MOV DWORD PTR DS:[EBX],EAX
00419C73 . 83C3 04 ADD EBX,4
00419C76 .^ EB E1 JMP SHORT setup.00419C59
00419C78 > FF96 48A80100 CALL DWORD PTR DS:[ESI+1A848]
00419C7E > 61 POPAD
00419C7F .- E9 8829FFFF JMP setup.0040C60C ;这里应该是跳向OEP
**************************************************************************
如果在OEP处dump会出错,所以我又认真看了上面的代码。
上面的程序调用KERNEL32.LoadLibraryA把
KERNEL32.DLL
advapi32.dll
comctl32.dll
oleaut32.dll
user32.dll
装载(转存0041B870处可以看见要加载的dll)
然后调用KERNEL32.GetProcAddress
得到以下函数的句柄
VirtualQuery
VirtualProtect
Sleep
SetLastError
SetErrorMode
RemoveDirectoryA
GetWindowsDirectoryA
GetVersionExA
GetUserDefaultLangID
GetSystemInfo
GetSystemDefaultLCID
GetProcAddress
GetModuleHandleA
GetModuleFileNameA
GetLocaleInfoA
GetLastError
GetFullPathNameA
GetFileAttributesA
GetExitCodeProcess
GetEnvironmentVariableA
GetCurrentProcess
GetCommandLineA
GetCPInfo
FormatMessageA
DeleteFileA
CreateProcessA
CreateDirectoryA
CloseHandle
(转存00418009处可以看见函数名)
把句柄依次存放在004110B4处以及后头
在004110XX处下硬件访问word断点
发现OEP以后的程序不停访问那里,我觉得可以说明这一段是壳子把原来程序的代码搬进来了。
不过我不会修理
大家来指点我一下吧。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课