WEB开发网
开发学院网络安全黑客技术 脱壳教程---天然码输入法的 阅读

脱壳教程---天然码输入法的

 2006-07-03 20:26:13 来源:WEB开发网   
核心提示:目标软件:天然码输入法(对应小球兄昨天的帖子)目标文件:trm32.ime;getdiskserial.exe加壳方式:UPX 1.03使用工具:trw2000ProcdumppeditorImprec 1.3URL: http://www.chinatrm.com/download/file/suggest/setu

目标软件:天然码输入法(对应小球兄昨天的帖子)

目标文件:trm32.ime;getdiskserial.exe

加壳方式:UPX 1.03

使用工具:trw2000

Procdump

peditor

Imprec 1.3

URL: http://www.chinatrm.com/download/file/suggest/setup.exe

本文作者:leo_cyl

加密特点:在比较注册码前,先产生另外的进程调用vxd绕过window api读指纹盘,如果没有指纹盘就不比较注册码。其实这个软件是明码比较不用脱壳的,但对dll脱壳是很多初学者还没掌握的基本技能,所以还是多此一举把trm32.ime的壳脱了。(trm32.ime说穿了就是一个dll)dll壳脱的难点在于dll是动态加载的(废话!),所以不能用loader。那么我们只好在dll的entry point加上int 3的指令了。

用peditor装入\windows\system\trm32.ime,可看到entry point = 0003D210;Image Base = 10000000;用peditor的FLC计算entry point(1003d210)的偏移为:00013610。再用二进制编辑器在偏移为00013610处机器码为80H的内容改为CC(即 int 3的机器码)。

现在运行trw2k,下命令“I3HERE ON”,打开任务条的输入法管理器。选天然码,点“属性”将激活trw2k,停在dll的入口处:

017F:1003D210 CC INT3
017F:1003D211 7C24 JL 1003D237 (NO JUMP)
017F:1003D213 0801 OR [ECX],AL
017F:1003D215 0F8581010000 JNZ NEAR 1003D39C
017F:1003D21B 60 PUSHA
017F:1003D21C BE00A00210 MOV ESI,1002A000
“r eip eip-1”,“d eip”,将017F:1003D210处改为80H:
017F:1003D210 807C240801 CMP BYTE [ESP+08],01
017F:1003D215 0F8581010000 JNZ NEAR 1003D39C
017F:1003D21B 60 PUSHA
017F:1003D21C BE00A00210 MOV ESI,1002A000
017F:1003D221 8DBE0070FDFF LEA EDI,[ESI+FFFD7000]
017F:1003D227 57 PUSH EDI
f10跟踪,来到这里:
017F:1003D344 95 XCHG EAX,EBP
017F:1003D345 8A07 MOV AL,[EDI]
017F:1003D347 47 INC EDI 《===EDI为引入的函数名
017F:1003D348 08C0 OR AL,AL
017F:1003D34A 74DC JZ 1003D328
017F:1003D34C 89F9 MOV ECX,EDI
017F:1003D34E 57 PUSH EDI
017F:1003D34F 48 DEC EAX
017F:1003D350 F2AE REPNE SCASB
017F:1003D352 55 PUSH EBP
017F:1003D353 FF9634DA0300 CALL NEAR [ESI+0003DA34] 〈==getprocessaddress
017F:1003D359 09C0 OR EAX,EAX
017F:1003D35B 7407 JZ 1003D364
017F:1003D35D 8903 MOV [EBX],EAX
017F:1003D35F 83C304 ADD EBX,BYTE +04
017F:1003D362 EBE1 JMP SHORT 1003D345
以上代码为恢复引入表。继续f10跟踪,来到这里:
017F:1003D38C EBE2 JMP SHORT 1003D370
017F:1003D38E 240F AND AL,0F
017F:1003D390 C1E010 SHL EAX,10
017F:1003D393 668B07 MOV AX,[EDI]
017F:1003D396 83C702 ADD EDI,BYTE +02
017F:1003D399 EBE2 JMP SHORT 1003D37D
017F:1003D39B 61 POPA 〈====很眼熟吧!
017F:1003D39C E906BBFCFF JMP 10008EA7〈====OEP

所以OEP在10008EA7处。在10008EA7处DUMP出文件。先看一下trm32.ime的IMTE。“MOD32 TRM32.IME”可看到IMTE 为:xxxxxxxx;“PEDUMP C:\TRM32.DLL xxxxxxxx”。并挂起进程“SUSPEND”。

回到window运行Imprec 1.3。在任务列表选rundll32.exe 点“pick dll”找到trm32.ime。输入OEP(8EA7)“get Imports”可修复IAT。再“fix dump”。将产生TRM32_.DLL,把它改名为trm32.ime 即可。到此脱壳完成。

Tags:脱壳 教程 天然

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接