HyperSnap-DX 5.61 汉化版主程序脱壳
HyperSnap-DX 5.61汉化版主程序是Armadillo 3.7以后的版本加的壳,
使用了Armadillo的双进程+CC+IAT变形+时间效验,所以脱壳分二部分进行:
第一部分:代码的获得、OEP的获得以及修复IAT
1.双进程到单进程的转换
对于双进程到单进程的转换我还是使用ollyScript脚本进行,脚本如下:
代码:--------------------------------------------------------------------------------
;================================
/*
arm3.75版以后的从双进程到单进程转换的Script自动运行脚本
适用于ollyScript0.92,不要勾上OD异常中的〔忽略以下范围的异常〕 选项
by fxyang
*/
dbh//隐藏OD
var address
gpa "OpenMutexA","kernel32.dll"
bp $RESULT
run
eoe code_1
code_1:
mov address,eip//获取第一次PREFIX LOCK:异常地址
esto
lbl3:
cmp eip,address //自动越过异常
ja begin
esto
begin:
exec
PUSHAD
网管下载dl.bitscn.com
PUSH EDX
push 0
push 0
CALL kernel32.CreateMutexA
POPAD
jmp kernel32.OpenMutexA
ende
//上面的代码就是在Script中运行从双进程到单进程的转换
bc $RESULT
lbl4:
gpa "VirtualProtect","kernel32.dll"
bp$RESULT//对VirtualProtect函数下中断
esto
// 中断后继续
esto
esto
esto
esto
rtr
sto
rtr
sto
sto
sto
sto
sto
sto
sto
sto
sti
sti
pause
//綺过了上面的代码程序会停在壳的运行代码中
;==========================
--------------------------------------------------------------------------------
程序停在这里:
代码:--------------------------------------------------------------------------------
00DEF065PUSH EBP
00DEF066MOV EBP,ESP
00DEF068PUSH EBX
中国网管论坛bbs.bitsCN.com
00DEF069MOV EBX,DWORD PTR SS:[EBP+8]
00DEF06CPUSH ESI
00DEF06DMOV ESI,DWORD PTR SS:[EBP+C]
00DEF070PUSH EDI
00DEF071MOV EDI,DWORD PTR SS:[EBP+10]
00DEF074TEST ESI,ESI
00DEF076JNZ SHORT 00DEF081
00DEF078CMP DWORD PTR DS:[E01AB4],0
00DEF07FJMP SHORT 00DEF0A7
--------------------------------------------------------------------------------
2.修改IAT存放地址
由于壳使用了临时空间存放IAT表,所以要修改到程序可见段中。
Ctrl+S打开搜索命令序列窗口,填入:
代码:--------------------------------------------------------------------------------
PUSH EBP
MOV EBP,ESP
PUSH ECX
PUSH EBX
XOR EBX,EBX
--------------------------------------------------------------------------------
这是段特征代码,要查找的第一个anti在这个代码段中,查找来到:
代码:--------------------------------------------------------------------------------
00DEBE33PUSH EBP
00DEBE34MOV EBP,ESP
00DEBE36PUSH ECX
网管下载dl.bitscn.com 00DEBE37PUSH EBX
00DEBE38XOR EBX,EBX //特征代码
00DEBE3ACMP BYTE PTR DS:[DFFFFD],BL
00DEBE40PUSH ESI
00DEBE41PUSH EDI
00DEBE42JNZ SHORT 00DEBE5E
00DEBE44CMP BYTE PTR DS:[DFFC19],BL
00DEBE4AJNZ SHORT 00DEBE5E
00DEBE4CCALL 00DC7591
00DEBE51TEST EAX,EAX
00DEBE53JE SHORT 00DEBE5E
00DEBE55CALL 00DC82D5
00DEBE5ATEST AL,AL
//anti的效验,光标停在这里,F4到这个地方。修改Al值为1
00DEBE5CJE SHORT 00DEBE65
00DEBE5EXOR AL,AL
00DEBE60JMP 00DEBF91
--------------------------------------------------------------------------------
下面是手工活了,F8运行:
代码:--------------------------------------------------------------------------------
00DE45CCMOV EAX,C80F9D61
00DE45D1NOT ECX
00DE45D3BSWAP EAX
00DE45D5NOT ECX
00DE45D7PUSH DWORD PTR DS:[DF0498]; USER32.SetTimer <--注意
00DE45DDCALL 00DEA2E1
00DE45E2POP ECX
00DE45E3MOVZX EAX,AL
中国网管联盟bitsCN.com 00DE45E6MOV DWORD PTR SS:[EBP-134],EAX
00DE45ECPUSH ECX
00DE45EDBSWAP ECX
00DE45EFNOT ECX
00DE45F1PUSH EAX
00DE45F2NOT EAX
00DE45F4MOV EAX,6C65696D
00DE45F9XCHG EAX,ECX
--------------------------------------------------------------------------------
F8继续,第一个解码代码:
代码:--------------------------------------------------------------------------------
00DE4A21 >CALL 00DC14AC
00DE4A26 >ADD ESP,10
00DE4A29 >MOV EAX,DWORD PTR DS:[DFFA1C]
00DE4A2E >MOV DWORD PTR SS:[EBP-399C],EAX
00DE4A34 >CMP DWORD PTR SS:[EBP-399C],0
00DE4A3B >JE SHORT 00DE4A73
00DE4A3D >MOV EAX,DWORD PTR SS:[EBP-399C]
00DE4A43 >CMP DWORD PTR DS:[EAX],0
00DE4A46 >JE SHORT 00DE4A73
00DE4A48 >MOV EAX,DWORD PTR SS:[EBP-399C]
00DE4A4E >MOV EAX,DWORD PTR DS:[EAX]
00DE4A50 >MOV EAX,DWORD PTR DS:[EAX]
00DE4A52 >ADD EAX,DWORD PTR DS:[E004F0]
00DE4A58 >MOV ECX,DWORD PTR SS:[EBP-399C]
中国网管联盟bitsCN.com
00DE4A5E >MOV ECX,DWORD PTR DS:[ECX]
00DE4A60 >MOV DWORD PTR DS:[ECX],EAX
00DE4A62 >MOV EAX,DWORD PTR SS:[EBP-399C]
00DE4A68 >ADD EAX,4
00DE4A6B >MOV DWORD PTR SS:[EBP-399C],EAX
00DE4A71^>JMP SHORT 00DE4A3D
00DE4A73 >XCHG EAX,ESI//这里结束,F4到这里
00DE4A74 >XCHG CX,CX
00DE4A77 >XCHG EAX,ESI
00DE4A78 >INS DWORD PTR ES:[EDI],DX; I/O 命令
--------------------------------------------------------------------------------
F8继续,到申请临时空间的代码了,这个版本不再使用訽来的 VirtualAlloc 函数:
代码:--------------------------------------------------------------------------------
00DE5209MOV DWORD PTR DS:[DF68CC],0DF7454; ASCII "B4"
00DE5213MOV EAX,DWORD PTR DS:[E00030]
00DE5218MOV EAX,DWORD PTR DS:[EAX]
00DE521AMOV DWORD PTR SS:[EBP-3924],EAX
00DE5220MOV EAX,DWORD PTR DS:[E00030]
00DE5225ADD EAX,4
00DE5228MOV DWORD PTR DS:[E00030],EAX
网管bitscn_com
00DE522DCALL 00DEB11B
00DE5232XOR ECX,ECX
00DE5234TEST EAX,EAX
00DE5236SETNE CL
00DE5239INC ECX
00DE523AMOV EAX,DWORD PTR DS:[E00030]
00DE523FMOV EAX,DWORD PTR DS:[EAX]
00DE5241XOR EDX,EDX
00DE5243DIV ECX
00DE5245MOV DWORD PTR SS:[EBP-37C8],EAX
00DE524BMOV EAX,DWORD PTR DS:[E00030]
00DE5250ADD EAX,4
00DE5253MOV DWORD PTR DS:[E00030],EAX
00DE5258MOV EAX,DWORD PTR SS:[EBP-37C8]
00DE525ESHL EAX,2
00DE5261PUSH EAX
00DE5262CALL 00DEEF08; JMP to msvcrt.??2@YAPAXI@Z//申请函数
00DE5267POP ECX
00DE5268MOV DWORD PTR SS:[EBP+FFFFAFE8],EAX <--返回值,修改这个值
00DE526EMOV EAX,DWORD PTR SS:[EBP+FFFFAFE8]
00DE5274MOV DWORD PTR SS:[EBP-3928],EAX
00DE527AMOV EAX,DWORD PTR DS:[E00028]
00DE527FMOV EAX,DWORD PTR DS:[EAX+78]
00DE5282MOV DWORD PTR SS:[EBP+FFFFAE28],EAX
00DE5288MOV EAX,DWORD PTR SS:[EBP+FFFFAE28]
00DE528EMOV DWORD PTR SS:[EBP-39F8],EAX
00DE5294AND DWORD PTR SS:[EBP-39FC],0
网管下载dl.bitscn.com 00DE529BJMP SHORT 00DE52AA
--------------------------------------------------------------------------------
修改申请返回值EAX =00646000 壳的第一代码段,因为壳运行时不再使用这个段。
下面是计算IAT的第一个加密表:
代码:--------------------------------------------------------------------------------
00DE529DMOV EAX,DWORD PTR SS:[EBP-39FC]
00DE52A3INC EAX
00DE52A4MOV DWORD PTR SS:[EBP-39FC],EAX
00DE52AAMOV EAX,DWORD PTR SS:[EBP-39FC]
00DE52B0CMP EAX,DWORD PTR SS:[EBP-37C8]
00DE52B6JNB 00DE5379
00DE52BCMOV DWORD PTR SS:[EBP+FFFFAE14],14
00DE52C6PUSH 1DF5E0D
00DE52CBPUSH DWORD PTR SS:[EBP-39F8]
00DE52D1LEA ECX,DWORD PTR SS:[EBP-39F8]
00DE52D7CALL 00DC1071
00DE52DCINC EAX
00DE52DDXOR EDX,EDX
00DE52DFMOV ECX,5F5E100
00DE52E4DIV ECX
00DE52E6MOV DWORD PTR SS:[EBP-39F8],EDX
00DE52ECMOV DWORD PTR SS:[EBP+FFFFAE00],100
00DE52F6PUSH 1DF5E0D
00DE52FBPUSH DWORD PTR SS:[EBP-39F8]
00DE5301LEA ECX,DWORD PTR SS:[EBP-39F8]
网管u家u.bitsCN.com 00DE5307CALL 00DC1071
00DE530CINC EAX
00DE530DXOR EDX,EDX
00DE530FMOV ECX,5F5E100
00DE5314DIV ECX
00DE5316MOV DWORD PTR SS:[EBP-39F8],EDX
00DE531CMOV EAX,DWORD PTR SS:[EBP-39F8]
00DE5322XOR EDX,EDX
00DE5324MOV ECX,2710
00DE5329DIV ECX
00DE532BIMUL EAX,DWORD PTR SS:[EBP+FFFFAE14]
00DE5332XOR EDX,EDX
00DE5334MOV ECX,2710
00DE5339DIV ECX
00DE533BMOV ECX,EAX
00DE533DMOV EAX,DWORD PTR SS:[EBP-39F8]
00DE5343XOR EDX,EDX
00DE5345MOV ESI,2710
00DE534ADIV ESI
00DE534CIMUL EAX,DWORD PTR SS:[EBP+FFFFAE00]
00DE5353XOR EDX,EDX
00DE5355MOV ESI,2710
00DE535ADIV ESI
00DE535CMOV ECX,DWORD PTR SS:[EBP+ECX*4-3978]
00DE5363ADD ECX,EAX
00DE5365MOV EAX,DWORD PTR SS:[EBP-39FC]
00DE536BMOV EDX,DWORD PTR SS:[EBP-3928]
00DE5371MOV DWORD PTR DS:[EDX+EAX*4],ECX//值放到上面修改的地址中
00DE5374JMP 00DE529D
00DE5379MOV EAX,DWORD PTR DS:[E00030] //这是出口,F4到这里
网管联盟bitsCN_com --------------------------------------------------------------------------------
这个表与后面的IAT加密可能有关系,或许可以从这里辟开iat的加密,我没有看懂。
3.获得程序代码
F8继续运行程序,到第二个代码解码的地方:
代码:--------------------------------------------------------------------------------
00DE5963CALL 00DC14AC
00DE5968ADD ESP,10
00DE596BMOV EAX,DWORD PTR DS:[DFFA20]
00DE5970MOV DWORD PTR SS:[EBP-3A34],EAX
00DE5976CMP DWORD PTR SS:[EBP-3A34],0
00DE597DJE SHORT 00DE59B5
00DE597FMOV EAX,DWORD PTR SS:[EBP-3A34]
00DE5985CMP DWORD PTR DS:[EAX],0
00DE5988JE SHORT 00DE59B5
00DE598AMOV EAX,DWORD PTR SS:[EBP-3A34]
00DE5990MOV EAX,DWORD PTR DS:[EAX]
00DE5992MOV EAX,DWORD PTR DS:[EAX]
00DE5994ADD EAX,DWORD PTR DS:[E004F0]
00DE599AMOV ECX,DWORD PTR SS:[EBP-3A34]
00DE59A0MOV ECX,DWORD PTR DS:[ECX]
00DE59A2MOV DWORD PTR DS:[ECX],EAX
00DE59A4MOV EAX,DWORD PTR SS:[EBP-3A34]
00DE59AAADD EAX,4
网管网www.bitscn.com
00DE59ADMOV DWORD PTR SS:[EBP-3A34],EAX
00DE59B3JMP SHORT 00DE597F
00DE59B5XCHG EAX,EDI//这里结束,F4到这里
00DE59B6XCHG CX,CX
00DE59B9XCHG EAX,EDI
00DE59BAOR ESI,DWORD PTR DS:[ECX+EBX*2]
--------------------------------------------------------------------------------
F8继续,到这里:
代码:--------------------------------------------------------------------------------
00DE5A9FMOV EAX,DWORD PTR SS:[EBP-3A48]
00DE5AA5AND EAX,7FFFFFFF
00DE5AAAMOV ECX,DWORD PTR SS:[EBP-3910]
00DE5AB0ADD EAX,DWORD PTR DS:[ECX+88]
00DE5AB6MOV DWORD PTR SS:[EBP-3A48],EAX
00DE5ABCMOV EAX,DWORD PTR DS:[E00030]
00DE5AC1MOV EAX,DWORD PTR DS:[EAX]
00DE5AC3XOR EAX,DWORD PTR DS:[E00034]
00DE5AC9MOV DWORD PTR SS:[EBP-3A44],EAX
00DE5ACFMOV EAX,DWORD PTR DS:[E00030]
00DE5AD4ADD EAX,4
00DE5AD7MOV DWORD PTR DS:[E00030],EAX
00DE5ADCMOV EAX,DWORD PTR SS:[EBP-3A44]
00DE5AE2ADD EAX,10000; UNICODE "=::=::\"
中国网管联盟bitsCN.com
00DE5AE7PUSH EAX
00DE5AE8CALL 00DEEF08; JMP to msvcrt.??2@YAPAXI@Z
00DE5AEDPOP ECX
00DE5AEEMOV DWORD PTR SS:[EBP+FFFFAFDC],EAX
00DE5AF4MOV EAX,DWORD PTR SS:[EBP+FFFFAFDC]
00DE5AFAMOV DWORD PTR SS:[EBP-3A40],EAX
00DE5B00MOV EAX,DWORD PTR SS:[EBP-3A40]
00DE5B06MOV DWORD PTR SS:[EBP-3A38],EAX
00DE5B0CMOV EAX,DWORD PTR SS:[EBP-3A44]
00DE5B12ADD EAX,10000; UNICODE "=::=::\"
00DE5B17PUSH EAX
00DE5B18PUSH 0
00DE5B1APUSH DWORD PTR SS:[EBP-3A40]
00DE5B20CALL 00DEEF14; JMP to msvcrt.memset
00DE5B25ADD ESP,0C
00DE5B28PUSH 1
00DE5B2APOP EAX
00DE5B2BTEST EAX,EAX
00DE5B2DJE 00DE5BBC
--------------------------------------------------------------------------------
上面的代码是先申请一个空间,然后设置这个空间的准备解码程序的代码。
F8继续,到了还訽程序代码段:
代码:--------------------------------------------------------------------------------
中国网管论坛bbs.bitsCN.com 00DE5F3DLEA EAX,DWORD PTR SS:[EBP-3A4C]
00DE5F43PUSH EAX
00DE5F44PUSH 4
00DE5F46PUSH DWORD PTR SS:[EBP-3A44]
00DE5F4CMOV EAX,DWORD PTR SS:[EBP-3900]
00DE5F52ADD EAX,DWORD PTR SS:[EBP-3A48]
00DE5F58PUSH EAX
00DE5F59CALL DWORD PTR DS:[DF0148] ; kernel32.VirtualProtect
00DE5F5FPUSH DWORD PTR SS:[EBP-3A44]
00DE5F65PUSH DWORD PTR SS:[EBP-3A40]
00DE5F6BMOV EAX,DWORD PTR SS:[EBP-3900]
00DE5F71ADD EAX,DWORD PTR SS:[EBP-3A48]
00DE5F77PUSH EAX
00DE5F78CALL 00DEEF02; JMP to msvcrt.memcpy
00DE5F7DADD ESP,0C //内存数据复制
00DE5F80LEA EAX,DWORD PTR SS:[EBP-3A4C]
00DE5F86PUSH EAX
00DE5F87PUSH DWORD PTR SS:[EBP-3A4C]
00DE5F8DPUSH DWORD PTR SS:[EBP-3A44]
00DE5F93MOV EAX,DWORD PTR SS:[EBP-3900]
00DE5F99ADD EAX,DWORD PTR SS:[EBP-3A48]
00DE5F9FPUSH EAX
00DE5FA0CALL DWORD PTR DS:[DF0148] ; kernel32.VirtualProtect
网管网www.bitscn.com
00DE5FA6MOV EAX,DWORD PTR SS:[EBP-3A40]
00DE5FACMOV DWORD PTR SS:[EBP+FFFFAFD8],EAX
00DE5FB2PUSH DWORD PTR SS:[EBP+FFFFAFD8]
00DE5FB8CALL 00DEEEFC; JMP to msvcrt.??3@YAXPAX@Z
00DE5FBDPOP ECX
00DE5FBEJMP 00DE5A57
--------------------------------------------------------------------------------
可以看出来,壳不断的修改程序的各个段的属性,然后复制数据,这个裚环就是解码这个程序。
5.还訽IAT
上面的解码完成后到这里:
代码:--------------------------------------------------------------------------------
00DE5FC3AND DWORD PTR DS:[E00034],0
00DE5FCACMP DWORD PTR SS:[EBP-379C],0
00DE5FD1JE SHORT 00DE6006
--------------------------------------------------------------------------------
F8继续,第三个代码解码:
代码:--------------------------------------------------------------------------------
00DE637DCALL 00DC14AC
00DE6382ADD ESP,10
00DE6385MOV EAX,DWORD PTR DS:[DFFA24]
网管网www_bitscn_com
00DE638AMOV DWORD PTR SS:[EBP-3AA0],EAX
00DE6390CMP DWORD PTR SS:[EBP-3AA0],0
00DE6397JE SHORT 00DE63CF
00DE6399MOV EAX,DWORD PTR SS:[EBP-3AA0]
00DE639FCMP DWORD PTR DS:[EAX],0
00DE63A2JE SHORT 00DE63CF
00DE63A4MOV EAX,DWORD PTR SS:[EBP-3AA0]
00DE63AAMOV EAX,DWORD PTR DS:[EAX]
00DE63ACMOV EAX,DWORD PTR DS:[EAX]
00DE63AEADD EAX,DWORD PTR DS:[E004F0]
00DE63B4MOV ECX,DWORD PTR SS:[EBP-3AA0]
00DE63BAMOV ECX,DWORD PTR DS:[ECX]
00DE63BCMOV DWORD PTR DS:[ECX],EAX
00DE63BEMOV EAX,DWORD PTR SS:[EBP-3AA0]
00DE63C4ADD EAX,4
00DE63C7MOV DWORD PTR SS:[EBP-3AA0],EAX
00DE63CDJMP SHORT 00DE6399
00DE63CFPUSH EDI//这里结束,F4到这里
00DE63D0XCHG BX,BX
00DE63D3POP EDI
--------------------------------------------------------------------------------
F8继续,到这里:
代码:--------------------------------------------------------------------------------
00DE68DCCALL 00DC14AC
00DE68E1ADD ESP,10
网管联盟bitsCN@com
00DE68E4MOV EAX,DWORD PTR DS:[DFFA2C]
00DE68E9MOV DWORD PTR SS:[EBP-3B64],EAX
00DE68EFCMP DWORD PTR SS:[EBP-3B64],0
00DE68F6JE SHORT 00DE692E
00DE68F8MOV EAX,DWORD PTR SS:[EBP-3B64]
00DE68FECMP DWORD PTR DS:[EAX],0
00DE6901JE SHORT 00DE692E
00DE6903MOV EAX,DWORD PTR SS:[EBP-3B64]
00DE6909MOV EAX,DWORD PTR DS:[EAX]
00DE690BMOV EAX,DWORD PTR DS:[EAX]
00DE690DADD EAX,DWORD PTR DS:[E004F0]
00DE6913MOV ECX,DWORD PTR SS:[EBP-3B64]
00DE6919MOV ECX,DWORD PTR DS:[ECX]
00DE691BMOV DWORD PTR DS:[ECX],EAX
00DE691DMOV EAX,DWORD PTR SS:[EBP-3B64]
00DE6923ADD EAX,4
00DE6926MOV DWORD PTR SS:[EBP-3B64],EAX
00DE692CJMP SHORT 00DE68F8
00DE692EXCHG AX,CX//这里结束,F4到这里
00DE6930NOP
00DE6931XCHG AX,CX
--------------------------------------------------------------------------------
开始处理IAT表了,注意:
代码:--------------------------------------------------------------------------------
中国网管联盟bitsCN.com 00DE6B32PUSH DWORD PTR SS:[EBP-3B70]
00DE6B38CALL 00DC9950
00DE6B3DPOP ECX
00DE6B3EAND DWORD PTR SS:[EBP-3B74],0
00DE6B45PUSH 0
00DE6B47CALL DWORD PTR DS:[DF00D4] ; kernel32.GetModuleHandleA
00DE6B4DCMP DWORD PTR SS:[EBP-3B70],EAX//可以对上面的函数下中断到这里
00DE6B53JNZ SHORT 00DE6B64
00DE6B55MOV DWORD PTR SS:[EBP-3B74],0DF5180
00DE6B5FJMP 00DE6C28
00DE6B64AND DWORD PTR SS:[EBP-3D98],0
00DE6B6BMOV DWORD PTR SS:[EBP-3D9C],0DF57C0
00DE6B75JMP SHORT 00DE6B93
00DE6B77MOV EAX,DWORD PTR SS:[EBP-3D9C]
00DE6B7DADD EAX,0C
00DE6B80MOV DWORD PTR SS:[EBP-3D9C],EAX
00DE6B86MOV EAX,DWORD PTR SS:[EBP-3D98]
00DE6B8CINC EAX
00DE6B8DMOV DWORD PTR SS:[EBP-3D98],EAX
00DE6B93MOV EAX,DWORD PTR SS:[EBP-3D9C]
00DE6B99CMP DWORD PTR DS:[EAX],0 <--这个就是Magic jmp
00DE6B9CJE 00DE6C28//修改为JMP 00DE6C28
00DE6BA2MOV EAX,DWORD PTR SS:[EBP-3D9C]
网管网www_bitscn_com
00DE6BA8MOV EAX,DWORD PTR DS:[EAX+8]
00DE6BABAND EAX,1
00DE6BAETEST EAX,EAX
00DE6BB0JE SHORT 00DE6BD7
--------------------------------------------------------------------------------
解码IAT表:
代码:--------------------------------------------------------------------------------
00DE6D62AND DWORD PTR SS:[EBP-3B68],0
00DE6D69CALL DWORD PTR DS:[DF029C]; kernel32.GetTickCount
00DE6D6FMOV DWORD PTR SS:[EBP-3B6C],EAX//时间效验开始
00DE6D75PUSH 1
00DE6D77POP EAX
00DE6D78TEST EAX,EAX
00DE6D7AJE 00DE70A7
00DE6D80AND WORD PTR SS:[EBP-3DA4],0
00DE6D88AND DWORD PTR SS:[EBP-3DAC],0
00DE6D8FAND DWORD PTR SS:[EBP-3DA8],0
00DE6D96MOV EAX,DWORD PTR SS:[EBP-3790]
00DE6D9CMOVSX EAX,BYTE PTR DS:[EAX]
00DE6D9FTEST EAX,EAX
00DE6DA1JNZ SHORT 00DE6DE7
00DE6DA3LEA ECX,DWORD PTR SS:[EBP-37D4]
00DE6DA9CALL 00DC1040
00DE6DAEMOVZX EAX,AL
00DE6DB1CDQ
00DE6DB2PUSH 14
00DE6DB4POP ECX
网管网www.bitscn.com
00DE6DB5IDIV ECX
00DE6DB7MOV EAX,DWORD PTR SS:[EBP-37FC]
00DE6DBDMOV ECX,DWORD PTR SS:[EBP+EDX*4-3978] //模块分界加密,修改为 XOR ECX,ECX
00DE6DC4MOV DWORD PTR DS:[EAX],ECX
00DE6DC6MOV EAX,DWORD PTR SS:[EBP-37FC]
00DE6DCCADD EAX,4
00DE6DCFMOV DWORD PTR SS:[EBP-37FC],EAX
00DE6DD5MOV EAX,DWORD PTR SS:[EBP-3790]
00DE6DDBINC EAX
00DE6DDCMOV DWORD PTR SS:[EBP-3790],EAX
00DE6DE2JMP 00DE70A7
00DE6DE7MOV EAX,DWORD PTR SS:[EBP-3790]
00DE6DEDMOVZX EAX,BYTE PTR DS:[EAX]
00DE6DF0CMP EAX,0FF
00DE6DF5JNZ 00DE6E92
00DE6DFBMOV EAX,DWORD PTR SS:[EBP-3790]
00DE6E01INC EAX
00DE6E02MOV DWORD PTR SS:[EBP-3790],EAX
00DE6E08MOV EAX,DWORD PTR SS:[EBP-3790]
00DE6E0EMOV AX,WORD PTR DS:[EAX]
00DE6E11MOV WORD PTR SS:[EBP-3DA4],AX
00DE6E18MOV EAX,DWORD PTR SS:[EBP-3790]
00DE6E1EINC EAX
00DE6E1FINC EAX
00DE6E20MOV DWORD PTR SS:[EBP-3790],EAX
00DE6E26CMP DWORD PTR SS:[EBP-3B74],0
00DE6E2DJE SHORT 00DE6E80
网管u家u.bitscn@com 00DE6E2FMOV EAX,DWORD PTR SS:[EBP-3B74]
00DE6E35MOV DWORD PTR SS:[EBP-3DB0],EAX
00DE6E3BJMP SHORT 00DE6E4C
00DE6E3DMOV EAX,DWORD PTR SS:[EBP-3DB0]
00DE6E43ADD EAX,0C
00DE6E46MOV DWORD PTR SS:[EBP-3DB0],EAX
00DE6E4CMOV EAX,DWORD PTR SS:[EBP-3DB0]
00DE6E52CMP DWORD PTR DS:[EAX+8],0
00DE6E56JE SHORT 00DE6E80
00DE6E58MOVZX EAX,WORD PTR SS:[EBP-3DA4]
00DE6E5FMOV ECX,DWORD PTR SS:[EBP-3DB0]
00DE6E65MOVZX ECX,WORD PTR DS:[ECX+4]
00DE6E69CMP EAX,ECX
00DE6E6BJNZ SHORT 00DE6E7E
00DE6E6DMOV EAX,DWORD PTR SS:[EBP-3DB0]
00DE6E73MOV EAX,DWORD PTR DS:[EAX+8]
00DE6E76MOV DWORD PTR SS:[EBP-3DA8],EAX
00DE6E7CJMP SHORT 00DE6E80
00DE6E7EJMP SHORT 00DE6E3D
00DE6E80MOV EAX,DWORD PTR SS:[EBP-3B68]
00DE6E86INC EAX
00DE6E87MOV DWORD PTR SS:[EBP-3B68],EAX
00DE6E8DJMP 00DE6F3C
00DE6E92MOV EAX,DWORD PTR SS:[EBP-3790]
00DE6E98MOV DWORD PTR SS:[EBP-3DAC],EAX
00DE6E9EPUSH 0
00DE6EA0PUSH DWORD PTR SS:[EBP-3790]
网管网www_bitscn_com
00DE6EA6CALL DWORD PTR DS:[DF02F0] ; msvcrt.strchr
00DE6EACPOP ECX
00DE6EADPOP ECX
00DE6EAEINC EAX
00DE6EAFMOV DWORD PTR SS:[EBP-3790],EAX
00DE6EB5CMP DWORD PTR SS:[EBP-3B74],0
00DE6EBCJE SHORT 00DE6F2F
00DE6EBEMOV EAX,DWORD PTR SS:[EBP-3B74]
00DE6EC4MOV DWORD PTR SS:[EBP-3DB4],EAX
00DE6ECAJMP SHORT 00DE6EDB
00DE6ECCMOV EAX,DWORD PTR SS:[EBP-3DB4]
00DE6ED2ADD EAX,0C
00DE6ED5MOV DWORD PTR SS:[EBP-3DB4],EAX
00DE6EDBMOV EAX,DWORD PTR SS:[EBP-3DB4]
00DE6EE1CMP DWORD PTR DS:[EAX+8],0
00DE6EE5JE SHORT 00DE6F2F
00DE6EE7PUSH 100
00DE6EECLEA EAX,DWORD PTR SS:[EBP-3EB4]
00DE6EF2PUSH EAX
00DE6EF3MOV EAX,DWORD PTR SS:[EBP-3DB4]
00DE6EF9PUSH DWORD PTR DS:[EAX]
00DE6EFBCALL 00DC8092
00DE6F00ADD ESP,0C
00DE6F03LEA EAX,DWORD PTR SS:[EBP-3EB4]
00DE6F09PUSH EAX
00DE6F0APUSH DWORD PTR SS:[EBP-3DAC]
00DE6F10CALL DWORD PTR DS:[DF035C] ; msvcrt._stricmp
网管网www.bitscn.com
00DE6F16POP ECX
00DE6F17POP ECX
00DE6F18TEST EAX,EAX
00DE6F1AJNZ SHORT 00DE6F2D
00DE6F1CMOV EAX,DWORD PTR SS:[EBP-3DB4]
00DE6F22MOV EAX,DWORD PTR DS:[EAX+8]
00DE6F25MOV DWORD PTR SS:[EBP-3DA8],EAX
00DE6F2BJMP SHORT 00DE6F2F
00DE6F2DJMP SHORT 00DE6ECC
00DE6F2FMOV EAX,DWORD PTR SS:[EBP-3B68]
00DE6F35INC EAX
00DE6F36MOV DWORD PTR SS:[EBP-3B68],EAX
00DE6F3CCMP DWORD PTR SS:[EBP-3DA8],0
00DE6F43JNZ SHORT 00DE6F87
00DE6F45MOVZX EAX,WORD PTR SS:[EBP-3DA4]
00DE6F4CTEST EAX,EAX
00DE6F4EJE SHORT 00DE6F5F
00DE6F50MOVZX EAX,WORD PTR SS:[EBP-3DA4]
00DE6F57MOV DWORD PTR SS:[EBP+FFFFAD5C],EAX
00DE6F5DJMP SHORT 00DE6F6B
00DE6F5FMOV EAX,DWORD PTR SS:[EBP-3DAC]
00DE6F65MOV DWORD PTR SS:[EBP+FFFFAD5C],EAX
00DE6F6BPUSH 1
00DE6F6DPUSH DWORD PTR SS:[EBP+FFFFAD5C]
00DE6F73PUSH DWORD PTR SS:[EBP-3B70]
00DE6F79CALL 00DCA113
00DE6F7EADD ESP,0C
00DE6F81MOV DWORD PTR SS:[EBP-3DA8],EAX
网管论坛bbs_bitsCN_com 00DE6F87CMP DWORD PTR SS:[EBP-3DA8],0
00DE6F8EJNZ SHORT 00DE6FD2
00DE6F90MOVZX EAX,WORD PTR SS:[EBP-3DA4]
00DE6F97TEST EAX,EAX
00DE6F99JE SHORT 00DE6FAA
00DE6F9BMOVZX EAX,WORD PTR SS:[EBP-3DA4]
00DE6FA2MOV DWORD PTR SS:[EBP+FFFFAD58],EAX
00DE6FA8JMP SHORT 00DE6FB6
00DE6FAAMOV EAX,DWORD PTR SS:[EBP-3DAC]
00DE6FB0MOV DWORD PTR SS:[EBP+FFFFAD58],EAX
00DE6FB6PUSH 0
00DE6FB8PUSH DWORD PTR SS:[EBP+FFFFAD58]
00DE6FBEPUSH DWORD PTR SS:[EBP-3B70]
00DE6FC4CALL 00DCA113
00DE6FC9ADD ESP,0C
00DE6FCCMOV DWORD PTR SS:[EBP-3DA8],EAX
00DE6FD2CMP DWORD PTR SS:[EBP-3DA8],0
00DE6FD9JNZ 00DE7077
00DE6FDFMOVZX EAX,WORD PTR SS:[EBP-3DA4]
00DE6FE6TEST EAX,EAX
00DE6FE8JE SHORT 00DE703E
00DE6FEACALL DWORD PTR DS:[DF00E4] ; ntdll.RtlGetLastWin32Error
00DE6FF0CMP EAX,32
00DE6FF3JNZ SHORT 00DE7001
00DE6FF5MOV DWORD PTR SS:[EBP-3DA8],0DCA108
00DE6FFFJMP SHORT 00DE703C
网管网www_bitscn_com 00DE7001MOV EAX,DWORD PTR SS:[EBP+8]
00DE7004MOV EAX,DWORD PTR DS:[EAX]
00DE7006MOV DWORD PTR DS:[EAX],3
00DE700CCALL DWORD PTR DS:[DF00E4] ; ntdll.RtlGetLastWin32Error
00DE7012PUSH EAX
00DE7013MOVZX EAX,WORD PTR SS:[EBP-3DA4]
00DE701APUSH EAX
00DE701BPUSH DWORD PTR SS:[EBP-3C8C]
00DE7021PUSH 0DF73B0 ; ASCII "File "%s", ordinal %d (error %d)"
00DE7026MOV EAX,DWORD PTR SS:[EBP+8]
00DE7029PUSH DWORD PTR DS:[EAX+4]
00DE702CCALL DWORD PTR DS:[DF02EC] ; msvcrt.sprintf
00DE7032ADD ESP,14
00DE7035XOR EAX,EAX
00DE7037JMP 00DE81EF
00DE703CJMP SHORT 00DE7077
00DE703EMOV EAX,DWORD PTR SS:[EBP+8]
00DE7041MOV EAX,DWORD PTR DS:[EAX]
00DE7043MOV DWORD PTR DS:[EAX],3
00DE7049CALL DWORD PTR DS:[DF00E4] ; ntdll.RtlGetLastWin32Error
00DE704FPUSH EAX
00DE7050PUSH DWORD PTR SS:[EBP-3DAC]
00DE7056PUSH DWORD PTR SS:[EBP-3C8C]
网管bitscn_com
00DE705CPUSH 0DF738C ; ASCII "File "%s", function "%s" (error %d)"
00DE7061MOV EAX,DWORD PTR SS:[EBP+8]
00DE7064PUSH DWORD PTR DS:[EAX+4]
00DE7067CALL DWORD PTR DS:[DF02EC] ; msvcrt.sprintf
00DE706DADD ESP,14
00DE7070XOR EAX,EAX
00DE7072JMP 00DE81EF
00DE7077MOV EAX,DWORD PTR SS:[EBP-37FC]
00DE707DCMP EAX,DWORD PTR SS:[EBP-37A8]
00DE7083JNB SHORT 00DE70A2
00DE7085MOV EAX,DWORD PTR SS:[EBP-37FC]
00DE708BMOV ECX,DWORD PTR SS:[EBP-3DA8]
00DE7091MOV DWORD PTR DS:[EAX],ECX //写入IAT表,可以看到写入到我们修改的地址中了
00DE7093MOV EAX,DWORD PTR SS:[EBP-37FC]
00DE7099ADD EAX,4
00DE709CMOV DWORD PTR SS:[EBP-37FC],EAX
00DE70A2JMP 00DE6D75
00DE70A7CALL DWORD PTR DS:[DF029C] ; kernel32.GetTickCount
00DE70ADSUB EAX,DWORD PTR SS:[EBP-3B6C]//获得上面代码运行的时间差
00DE70B3MOV ECX,DWORD PTR SS:[EBP-3B68]
网管网www.bitscn.com
00DE70B9IMUL ECX,ECX,32
00DE70BCADD ECX,7D0
00DE70C2CMP EAX,ECX
00DE70C4JBE SHORT 00DE70CD//效验时间,这里要修改为JMP 00DE70CD
00DE70C6MOV BYTE PTR SS:[EBP-37D8],1<--修改标准
00DE70CDCMP DWORD PTR SS:[EBP-3928],0 {说明:如果这个标准修改,就会修改下面排列IAT表的参数值}
00DE70D4JNZ 00DE7164
00DE70DAMOVZX EAX,BYTE PTR SS:[EBP-3B7C]
00DE70E1TEST EAX,EAX
00DE70E3JE SHORT 00DE7164
00DE70E5PUSH 0
00DE70E7MOV EAX,DWORD PTR SS:[EBP-3B78]
00DE70EDSHL EAX,2
00DE70F0PUSH EAX
00DE70F1MOV EAX,DWORD PTR SS:[EBP-3900]
00DE70F7ADD EAX,DWORD PTR SS:[EBP-3B80]
00DE70FDPUSH EAX
00DE70FECALL 00DE8C74
00DE7103ADD ESP,0C
00DE7106MOV EAX,DWORD PTR SS:[EBP-3B78]
00DE710CSHL EAX,2
00DE710FPUSH EAX
00DE7110PUSH DWORD PTR SS:[EBP-37A0]
00DE7116MOV EAX,DWORD PTR SS:[EBP-3900]
00DE711CADD EAX,DWORD PTR SS:[EBP-3B80]
00DE7122PUSH EAX
00DE7123CALL 00DEEF02; JMP to msvcrt.memcpy
网管论坛bbs_bitsCN_com 00DE7128ADD ESP,0C
00DE712BPUSH 1
00DE712DMOV EAX,DWORD PTR SS:[EBP-3B78]
00DE7133SHL EAX,2
00DE7136PUSH EAX
00DE7137MOV EAX,DWORD PTR SS:[EBP-3900]
00DE713DADD EAX,DWORD PTR SS:[EBP-3B80]
00DE7143PUSH EAX
00DE7144CALL 00DE8C74
00DE7149ADD ESP,0C
00DE714CMOV EAX,DWORD PTR SS:[EBP-37A0]
00DE7152MOV DWORD PTR SS:[EBP+FFFFAFC8],EAX
00DE7158PUSH DWORD PTR SS:[EBP+FFFFAFC8]
00DE715ECALL 00DEEEFC; JMP to msvcrt.??3@YAXPAX@Z
00DE7163POP ECX
00DE7164CMP DWORD PTR SS:[EBP-3928],0
00DE716BJNZ SHORT 00DE7197
00DE716DLEA EAX,DWORD PTR SS:[EBP-3B84]
00DE7173PUSH EAX
00DE7174PUSH DWORD PTR SS:[EBP-3B84]
00DE717AMOV EAX,DWORD PTR SS:[EBP-3B78]
00DE7180SHL EAX,2
00DE7183PUSH EAX
00DE7184MOV EAX,DWORD PTR SS:[EBP-3900]
00DE718AADD EAX,DWORD PTR SS:[EBP-3B80]
00DE7190PUSH EAX
00DE7191CALL DWORD PTR DS:[DF0148] ; kernel32.VirtualProtect
网管u家u.bitscn@com 00DE7197JMP 00DE697F
00DE719CMOV EAX,DWORD PTR SS:[EBP-391C] <--到这里完成IAT表
--------------------------------------------------------------------------------
把上面修改的代码全部还訽,一定要还訽!
代码:--------------------------------------------------------------------------------
完整的表:
006460004D 22 DB 77 68 6A DB 77M"踳hj踳
006460088B 6F DB 77 F4 6C DB 77媜踳鬺踳
0064601010 24 DA 77 9A 22 DA 77$趙?趙
00646018D8 17 DA 77 D4 65 DB 77?趙詄踳
00646020B1 63 DB 77 BB 28 DA 77眂踳?趙
0064602899 4E DA 77 5B 66 DB 77橬趙[f踳
0064603027 67 DB 77 D9 23 DA 77'g踳?趙
00646038E2 68 DB 77 D6 27 DA 77鈎踳?趙
00646B3815 88 AC 7C 2D C1 B8 7C埇|-粮|
00646B4063 4A AC 7C A6 F2 AD 7CcJ瑋︱_|
00646B4811 F0 AD 7C 7B 85 AC 7C餩|{叕|
00646B5091 05 AC 7C F5 1F AC 7C?瑋?瑋
00646B58FA 49 AC 7C 16 49 AC 7C鶬瑋I瑋
00646B6016 72 B0 7C 5F 86 B0 7Cr皘_啺|
中国网管论坛bbs.bitsCN.com 00646B68DB 8A B0 7C AF F3 AD 7C蹔皘_|
00646B70CF 9E B1 7C 0F B3 B1 7C蠟眧潮|
00646B781D CD B1 7C 31 CC B1 7C捅|1瘫|
00646B805B 46 B4 7C D7 48 B4 7C[F磡譎磡
00646B8800 00 00 00 F3 F0 C9 74....箴蓆
00646B9000 00 00 00....
--------------------------------------------------------------------------------
二进制复制上面的表,保留这个表用于后面的恢复
代码:--------------------------------------------------------------------------------
4D 22 DB 77 68 6A DB 77 8B 6F DB 77 F4 6C DB 77 10 24 DA 77 9A 22 DA 77 D8 17 DA 77 D4 65 DB 77
B1 63 DB 77 BB 28 DA 77 99 4E DA 77 5B 66 DB 77 27 67 DB 77 D9 23 DA 77 E2 68 DB 77 D6 27 DA 77
69 6D DC 77 8E 5B DC 77 00 00 00 00 B1 38 31 77 13 B3 31 77 3D 51 31 77 B7 4E 31 77 A4 7F 33 77
00 00 00 00 A3 05 AC 7C 11 B2 B0 7C 2C 88 AE 7C 4E 8C AC 7C 70 97 AC 7C 9A 3E AC 7C 1E 04 AF 7C
CA E6 AD 7C 78 12 AD 7C 3C 12 B2 7C 72 83 AF 7C CE 88 AC 7C C7 80 AF 7C 15 88 AC 7C 2D C1 B8 7C
网管联盟bitsCN_com
63 4A AC 7C A6 F2 AD 7C 11 F0 AD 7C 7B 85 AC 7C 91 05 AC 7C F5 1F AC 7C FA 49 AC 7C 16 49 AC 7C
16 72 B0 7C 5F 86 B0 7C DB 8A B0 7C AF F3 AD 7C CF 9E B1 7C 0F B3 B1 7C 1D CD B1 7C 31 CC B1 7C
5B 46 B4 7C D7 48 B4 7C 00 00 00 00 F3 F0 C9 74 00 00 00 00
--------------------------------------------------------------------------------
下面是壳对IAT的重新加密:
代码:--------------------------------------------------------------------------------
00DE719CMOV EAX,DWORD PTR SS:[EBP-391C]
00DE71A2MOV DWORD PTR SS:[EBP+FFFFAFC4],EAX
00DE71A8PUSH DWORD PTR SS:[EBP+FFFFAFC4]
00DE71AECALL 00DEEEFC; JMP to msvcrt.??3@YAXPAX@Z
00DE71B3POP ECX
00DE71B4CMP DWORD PTR SS:[EBP-3928],0
00DE71BBJE 00DE731A
00DE71C1MOV EAX,DWORD PTR DS:[E00028]
00DE71C6MOV EAX,DWORD PTR DS:[EAX+60]
00DE71C9MOV DWORD PTR SS:[EBP+FFFFADD4],EAX
00DE71CFMOV EAX,DWORD PTR SS:[EBP+FFFFADD4]
00DE71D5MOV DWORD PTR SS:[EBP-3EBC],EAX
网管网www_bitscn_com
00DE71DBCALL 00DEA85B
00DE71E0NEG EAX
00DE71E2SBB EAX,EAX
00DE71E4AND EAX,100
00DE71E9ADD EAX,100
00DE71EEMOV DWORD PTR SS:[EBP+FFFFADC0],EAX
00DE71F4PUSH 1DF5E0D
00DE71F9PUSH DWORD PTR SS:[EBP-3EBC]
00DE71FFLEA ECX,DWORD PTR SS:[EBP-3EBC]
00DE7205CALL 00DC1071
00DE720AINC EAX
00DE720BXOR EDX,EDX
00DE720DMOV ECX,5F5E100
00DE7212DIV ECX
00DE7214MOV DWORD PTR SS:[EBP-3EBC],EDX
00DE721AMOVZX ECX,BYTE PTR SS:[EBP-37D8]
00DE7221NEG ECX
00DE7223SBB ECX,ECX
00DE7225AND ECX,100
00DE722BADD ECX,200
00DE7231MOV EAX,DWORD PTR SS:[EBP-3EBC]
00DE7237XOR EDX,EDX
00DE7239MOV ESI,2710
00DE723EDIV ESI
00DE7240IMUL EAX,DWORD PTR SS:[EBP+FFFFADC0]
00DE7247XOR EDX,EDX
00DE7249MOV ESI,2710
00DE724EDIV ESI
00DE7250ADD ECX,EAX
00DE7252MOV DWORD PTR SS:[EBP-3EB8],ECX
00DE7258AND DWORD PTR SS:[EBP-3EC0],0
00DE725FJMP SHORT 00DE726E
00DE7261MOV EAX,DWORD PTR SS:[EBP-3EC0]
网管u家u.bitscn@com
00DE7267INC EAX
00DE7268MOV DWORD PTR SS:[EBP-3EC0],EAX
00DE726EMOV EAX,DWORD PTR SS:[EBP-3EC0]
00DE7274CMP EAX,DWORD PTR SS:[EBP-3EB8] <--就是这个参数会被上面的时间效验修改
00DE727AJNB 00DE731A
00DE7280PUSH 1DF5E0D
00DE7285PUSH DWORD PTR SS:[EBP-3EBC]
00DE728BLEA ECX,DWORD PTR SS:[EBP-3EBC]
00DE7291CALL 00DC1071
00DE7296INC EAX
00DE7297XOR EDX,EDX
00DE7299MOV ECX,5F5E100
00DE729EDIV ECX
00DE72A0MOV DWORD PTR SS:[EBP-3EBC],EDX
00DE72A6MOV EAX,DWORD PTR SS:[EBP-3EBC]
00DE72ACXOR EDX,EDX
00DE72AEMOV ECX,2710
00DE72B3DIV ECX
00DE72B5IMUL EAX,DWORD PTR SS:[EBP-37C8]
00DE72BCXOR EDX,EDX
00DE72BEMOV ECX,2710
00DE72C3DIV ECX
00DE72C5MOV DWORD PTR SS:[EBP-3EC8],EAX
00DE72CBMOV EAX,DWORD PTR SS:[EBP-3928]
00DE72D1MOV EAX,DWORD PTR DS:[EAX]
00DE72D3MOV DWORD PTR SS:[EBP-3EC4],EAX
00DE72D9MOV EAX,DWORD PTR SS:[EBP-3EC8]
00DE72DFLEA EAX,DWORD PTR DS:[EAX*4+4]
网管u家u.bitsCN.com
00DE72E6PUSH EAX
00DE72E7MOV EAX,DWORD PTR SS:[EBP-3928]
00DE72EDADD EAX,4
00DE72F0PUSH EAX
00DE72F1PUSH DWORD PTR SS:[EBP-3928]
00DE72F7CALL DWORD PTR DS:[DF0300] ; msvcrt.memmove
00DE72FDADD ESP,0C
00DE7300MOV EAX,DWORD PTR SS:[EBP-3EC8]
00DE7306MOV ECX,DWORD PTR SS:[EBP-3928]
00DE730CMOV EDX,DWORD PTR SS:[EBP-3EC4]
00DE7312MOV DWORD PTR DS:[ECX+EAX*4],EDX
00DE7315JMP 00DE7261
00DE731APUSH DWORD PTR SS:[EBP-37C4] <--到这里结束
--------------------------------------------------------------------------------
6.还訽代码中的CALL IAt地址
F8继续,第四个代码解码:
代码:--------------------------------------------------------------------------------
00DE7614CALL 00DC14AC
00DE7619ADD ESP,10
00DE761CMOV EAX,DWORD PTR DS:[DFFA30]
00DE7621MOV DWORD PTR SS:[EBP-3EF4],EAX
00DE7627CMP DWORD PTR SS:[EBP-3EF4],0
00DE762EJE SHORT 00DE7666
00DE7630MOV EAX,DWORD PTR SS:[EBP-3EF4]
中国网管论坛bbs.bitsCN.com 00DE7636CMP DWORD PTR DS:[EAX],0
00DE7639JE SHORT 00DE7666
00DE763BMOV EAX,DWORD PTR SS:[EBP-3EF4]
00DE7641MOV EAX,DWORD PTR DS:[EAX]
00DE7643MOV EAX,DWORD PTR DS:[EAX]
00DE7645ADD EAX,DWORD PTR DS:[E004F0]
00DE764BMOV ECX,DWORD PTR SS:[EBP-3EF4]
00DE7651MOV ECX,DWORD PTR DS:[ECX]
00DE7653MOV DWORD PTR DS:[ECX],EAX
00DE7655MOV EAX,DWORD PTR SS:[EBP-3EF4]
00DE765BADD EAX,4
00DE765EMOV DWORD PTR SS:[EBP-3EF4],EAX
00DE7664JMP SHORT 00DE7630
00DE7666XCHG EBX,ECX<--这里结束,F4到这里
00DE7668NOP
--------------------------------------------------------------------------------
F8继续,第五个代码解码:
代码:--------------------------------------------------------------------------------
00DE7BA2CALL 00DC14AC
00DE7BA7ADD ESP,10
00DE7BAAMOV EAX,DWORD PTR DS:[DFFA34]
00DE7BAFMOV DWORD PTR SS:[EBP+FFFFB0C4],EAX
00DE7BB5CMP DWORD PTR SS:[EBP+FFFFB0C4],0
00DE7BBCJE SHORT 00DE7BF4
网管网www_bitscn_com 00DE7BBEMOV EAX,DWORD PTR SS:[EBP+FFFFB0C4]
00DE7BC4CMP DWORD PTR DS:[EAX],0
00DE7BC7JE SHORT 00DE7BF4
00DE7BC9MOV EAX,DWORD PTR SS:[EBP+FFFFB0C4]
00DE7BCFMOV EAX,DWORD PTR DS:[EAX]
00DE7BD1MOV EAX,DWORD PTR DS:[EAX]
00DE7BD3ADD EAX,DWORD PTR DS:[E004F0]
00DE7BD9MOV ECX,DWORD PTR SS:[EBP+FFFFB0C4]
00DE7BDFMOV ECX,DWORD PTR DS:[ECX]
00DE7BE1MOV DWORD PTR DS:[ECX],EAX
00DE7BE3MOV EAX,DWORD PTR SS:[EBP+FFFFB0C4]
00DE7BE9ADD EAX,4
00DE7BECMOV DWORD PTR SS:[EBP+FFFFB0C4],EAX
00DE7BF2JMP SHORT 00DE7BBE
00DE7BF4XCHG EAX,EDI <--这里结束,F4到这里
00DE7BF5XCHG CX,CX
--------------------------------------------------------------------------------
F8来到恢复代码CALL 段中:
代码:--------------------------------------------------------------------------------
00DE7D7BMOV EAX,DWORD PTR SS:[EBP+FFFFB0BC]<--计数器
00DE7D81INC EAX
00DE7D82MOV DWORD PTR SS:[EBP+FFFFB0BC],EAX
00DE7D88MOV EAX,DWORD PTR SS:[EBP+FFFFB0BC]
网管u家u.bitsCN.com
00DE7D8EMOV ECX,DWORD PTR SS:[EBP-37E8] <--CALL 地址表
00DE7D94CMP DWORD PTR DS:[ECX+EAX*4],0 //表是以00结束的
00DE7D98JE 00DE7E2E
00DE7D9EMOV EAX,DWORD PTR SS:[EBP+FFFFB0BC]
00DE7DA4MOV ECX,DWORD PTR SS:[EBP-37E8]
00DE7DAAMOV EDX,DWORD PTR SS:[EBP-3900]//代码段的基地址00400000
00DE7DB0ADD EDX,DWORD PTR DS:[ECX+EAX*4]
00DE7DB3MOV DWORD PTR SS:[EBP+FFFFB0AC],EDX
00DE7DB9MOV EAX,DWORD PTR SS:[EBP+FFFFB0AC]
00DE7DBFMOV EAX,DWORD PTR DS:[EAX]
00DE7DC1MOV DWORD PTR SS:[EBP+FFFFB0A8],EAX
00DE7DC7CMP DWORD PTR SS:[EBP+FFFFB0A8],90909090
00DE7DD1JE SHORT 00DE7E29
00DE7DD3MOV EAX,DWORD PTR SS:[EBP+FFFFB0A8]
00DE7DD9SUB EAX,DWORD PTR SS:[EBP+FFFFB0B8]
00DE7DDFMOV DWORD PTR SS:[EBP+FFFFB0A8],EAX
00DE7DE5PUSH DWORD PTR SS:[EBP+FFFFB0A8]
00DE7DEBMOV EAX,DWORD PTR SS:[EBP+FFFFB0BC]
00DE7DF1XOR EDX,EDX
00DE7DF3PUSH 10
00DE7DF5POP ECX
00DE7DF6DIV ECX
00DE7DF8CALL DWORD PTR DS:[EDX*4+DF0778] <-- CALL地址偏移加密算法
网管u家u.bitscn@com 00DE7DFFPOP ECX
00DE7E00MOV DWORD PTR SS:[EBP+FFFFB0A8],EAX
00DE7E06MOV EAX,DWORD PTR SS:[EBP+FFFFB0A8]
00DE7E0CMOV ECX,DWORD PTR SS:[EBP-3928]
00DE7E12LEA EAX,DWORD PTR DS:[ECX+EAX*4]
00DE7E15MOV DWORD PTR SS:[EBP+FFFFB0A8],EAX
00DE7E1BMOV EAX,DWORD PTR SS:[EBP+FFFFB0AC]
00DE7E21MOV ECX,DWORD PTR SS:[EBP+FFFFB0A8]
00DE7E27MOV DWORD PTR DS:[EAX],ECX<--写入CALL地址
00DE7E29JMP 00DE7D7B
00DE7E2EMOV EAX,DWORD PTR DS:[E00500]<--这里结束
--------------------------------------------------------------------------------
F4到结束的地方,下面来恢复乱序的IAT表:
这个是参考了 yesky1兄的方法,在此感谢了!
Ctrl+G 到地址00677000 中,写入代码:
代码:--------------------------------------------------------------------------------
00677000PUSHAD
00677001MOV EBX,0EE3FF8//CALL 表
00677006MOV EAX,HprSnap5.00400000
0067700BMOV EDX,DWORD PTR DS:[EBX]
0067700DADD EAX,EDX
中国网管联盟bitsCN.com 0067700FMOV ECX,DWORD PTR DS:[EAX]
00677011MOV ECX,DWORD PTR DS:[ECX]
00677013MOV ESI,HprSnap5.00676000//新的IAT表基地址
00677018MOV EDI,DWORD PTR DS:[ESI]
0067701ACMP ECX,EDI <--查找新的地址
0067701CJE SHORT HprSnap5.00677023
0067701ELEA ESI,DWORD PTR DS:[ESI+4]
00677021JMP SHORT HprSnap5.00677018
00677023MOV DWORD PTR DS:[EAX],ESI <--写入新的CALL 地址
00677025LEA EBX,DWORD PTR DS:[EBX+4]
00677028CMP DWORD PTR DS:[EBX],0 //完成后结束
0067702BJE SHORT HprSnap5.0067702F
0067702DJMP SHORT HprSnap5.00677006
0067702FPOPAD
00677030JMP 00DE7E2E //回到壳代码中
00677035NOP
--------------------------------------------------------------------------------
复制正确的IAT表的二进制数据到地址00676000处:
代码:--------------------------------------------------------------------------------
006760004D 22 DB 77 68 6A DB 77M"踳hj踳
006760088B 6F DB 77 F4 6C DB 77媜踳鬺踳
网管u家u.bitscn@com
0067601010 24 DA 77 9A 22 DA 77$趙?趙
00676018D8 17 DA 77 D4 65 DB 77?趙詄踳
00676020B1 63 DB 77 BB 28 DA 77眂踳?趙
00676B58FA 49 AC 7C 16 49 AC 7C鶬瑋I瑋
00676B6016 72 B0 7C 5F 86 B0 7Cr皘_啺|
00676B68DB 8A B0 7C AF F3 AD 7C蹔皘_|
00676B70CF 9E B1 7C 0F B3 B1 7C蠟眧潮|
00676B781D CD B1 7C 31 CC B1 7C捅|1瘫|
00676B805B 46 B4 7C D7 48 B4 7C[F磡譎磡
00676B8800 00 00 00 F3 F0 C9 74....箴蓆
00676B9000 00 00 00....
--------------------------------------------------------------------------------
CALL地址表:
代码:--------------------------------------------------------------------------------
00EE3FF84B 10 00 00 92 10 00 00K..?..
00EE4000A7 10 00 00 B8 10 00 00?..?..
00EE4008EA 10 00 00 14 11 00 00?....
00EE401064 11 00 00 75 11 00 00d..u..
00EE401888 11 00 00 AB 11 00 00?..?..
00EE40200C 12 00 00 30 12 00 00...0..
00EE4028B8 12 00 00 CB 12 00 00?..?..
网管u家u.bitsCN.com 00EE4030E8 12 00 00 37 13 00 00?..7..
00EE4038AC 13 00 00 B8 14 00 00?..?..
00EEB598CE 8A 1B 00 DC 8A 1B 00螉.軍.
00EEB5A0EC 8A 1B 00 07 8B 1B 00鞀.?.
00EEB5A82B 8B 1B 00 38 8B 1B 00+?.8?.
00EEB5B096 8B 1B 00 09 8C 1B 00枊..?.
00EEB5B87B 8C 1B 00 70 8D 1B 00{?.p?.
00EEB5C0B0 8D 1B 00 0F 8E 1B 00皪.?.
--------------------------------------------------------------------------------
运行上面的代码,回到壳中:
代码:--------------------------------------------------------------------------------
00DE7E2EMOV EAX,DWORD PTR DS:[E00500]
00DE7E33MOV AL,BYTE PTR DS:[EAX+3D2F]
00DE7E39MOV BYTE PTR SS:[EBP+FFFFAD8C],AL
00DE7E3FMOVZX EAX,BYTE PTR SS:[EBP+FFFFAD8C]
--------------------------------------------------------------------------------
F8继续运行:
代码:--------------------------------------------------------------------------------
00DE81D7PUSH 0DFFC00
网管u家u.bitscn@com
00DE81DCCALL DWORD PTR DS:[DF02A0]; ntdll.RtlLeaveCriticalSection
00DE81E2MOV DWORD PTR DS:[DF68CC],0DF7364
00DE81ECPUSH 1
00DE81EEPOP EAX
00DE81EFMOV ECX,DWORD PTR SS:[EBP-10]
00DE81F2MOV DWORD PTR FS:[0],ECX
00DE81F9POP EDI
00DE81FAPOP ESI
00DE81FBPOP EBX
00DE81FCLEAVE
00DE81FDRETN <--从这里退出
--------------------------------------------------------------------------------
来到这里,这是到OEP的代码:
代码:--------------------------------------------------------------------------------
00DE0CBDMOV DWORD PTR SS:[EBP-4],EDI
00DE0CC0MOV DWORD PTR DS:[DF68CC],0DF72D0 ; ASCII "LP9"
00DE0CCAOR EDI,FFFFFFFF
00DE0CCDPUSH EDI
00DE0CCEPUSH EDI
00DE0CCFCALL DWORD PTR DS:[DF0130]; kernel32.GetCurrentProcess
00DE0CD5PUSH EAX
00DE0CD6MOV ESI,DWORD PTR DS:[DF0260] ; kernel32.SetProcessWorkingSetSize
00DE0CDCCALL ESI
00DE0CDEMOV DWORD PTR DS:[DF68CC],0DF72C8 ; ASCII "LP9a"
中国网管论坛bbs.bitsCN.com
00DE0CE8CMP DWORD PTR DS:[E004E4],EBX
00DE0CEEJE SHORT 00DE0D05 <--这里不能跳
00DE0CF0CALL 00DC83E3
00DE0CF5TEST AL,AL
00DE0CF7JNZ SHORT 00DE0D05
00DE0CF9PUSH EDI
00DE0CFAPUSH EDI
00DE0CFBMOV EAX,DWORD PTR DS:[E004E4]<--这里不正确,可能是上面的代码引起的。
00DE0D00PUSH DWORD PTR DS:[EAX+4]
00DE0D03CALL ESI<--訽来的程序到这里是进入OEP
00DE0D05MOV DWORD PTR DS:[DF68CC],0DF72C0 ; ASCII "LP9b"
00DE0D0FMOV DWORD PTR SS:[EBP-4],EBX
00DE0D12JMP SHORT 00DE0D59
00DE0D14PUSH 1
00DE0D16POP EAX
00DE0D17RETN
--------------------------------------------------------------------------------
运行到00DE0D00PUSH DWORD PTR DS:[EAX+4] 时,对程序的00400000 代码段下内存访问中断,
Shift+F9运行,停在OEP中:
代码:--------------------------------------------------------------------------------
004E9C30PUSH EBP //OEP
中国网管联盟bitsCN.com
004E9C31MOV EBP,ESP
004E9C33PUSH -1
004E9C35PUSH HprSnap5.005DF7A0
004E9C3APUSH HprSnap5.004EDAFC
004E9C3FMOV EAX,DWORD PTR FS:[0]
004E9C45PUSH EAX
004E9C46MOV DWORD PTR FS:[0],ESP
004E9C4DSUB ESP,58
004E9C50PUSH EBX
004E9C51PUSH ESI
004E9C52PUSH EDI
004E9C53MOV DWORD PTR SS:[EBP-18],ESP
--------------------------------------------------------------------------------
重新复制正确的IAT表的二进制数据到地址00676000处:
代码:--------------------------------------------------------------------------------
006760004D 22 DB 77 68 6A DB 77M"踳hj踳
006760088B 6F DB 77 F4 6C DB 77媜踳鬺踳
0067601010 24 DA 77 9A 22 DA 77$趙?趙
00676018D8 17 DA 77 D4 65 DB 77?趙詄踳
00676020B1 63 DB 77 BB 28 DA 77眂踳?趙
00676B58FA 49 AC 7C 16 49 AC 7C鶬瑋I瑋
00676B6016 72 B0 7C 5F 86 B0 7Cr皘_啺|
00676B68DB 8A B0 7C AF F3 AD 7C蹔皘_|
00676B70CF 9E B1 7C 0F B3 B1 7C蠟眧潮|
中国网管论坛bbs.bitsCN.com
00676B781D CD B1 7C 31 CC B1 7C捅|1瘫|
00676B805B 46 B4 7C D7 48 B4 7C[F磡譎磡
00676B8800 00 00 00 F3 F0 C9 74....箴蓆
00676B9000 00 00 00....
--------------------------------------------------------------------------------
终于走完了全程,完成了修复任务。dump下修改好的程序,用ImportREC修复dump的程序。
写到这里,发觉iat表的临时空间可以不要修改,在第6步中就可以自由修改存放地址。
作为方法,还是保留下来。
第二部分 待续