加壳脱壳工具:tElock 0.98加壳的DLL脱壳

  前言:

  早在2000年10月就脱过用tElock 0.98加壳NotePad并好像在看雪论坛写过脱壳简要

  最近有网友问tElock 0.98加壳DLL脱壳问题整理出篇文章希望对你有帮助

  Liotta[BCG]

  目标:

  超星浏览器3.6.0.1210所带pdg2.dll(先用upx -d解压然后用tElock 0.98加壳)

  scouting... E:Program FilesSSREADER36pdg2.dll - 256000 s big

  Entry Po:0007EBD6(off0003DBD6)E9 25 E4 FF FF 00 00 00

  Image Base:10000000Base of Code:00001000

  Base of Date:0005A000Size of Image:00080000

  Number of Sections:0006

  工具:

  SoftICE+ICEDump

  PEditor+WinHex

  正文:

  如何中断在pdg2.dll文件领空?以下是些准备工作:

  用 PEditor打开pdg2.dll文件然后单击 FLC输入Entry Po:0007EBD6得到Off[hex]为 3DBD6

  然后用WinHex打开pdg2.dll文件定位到Off3DBD6记下此处字节原值E9并改为CC再Ctrl-D中

  断进入SoftICE设断点 bp 3

   2开始跟踪

  如何对付tElock保护反跟踪代码就不说了请参照以前相关文章Flashfxp 1.4脱壳

  运行SSReader.EXE并中断在pdg2.dll领空改1007EBD6处字节为原值E9再继续

  017F:1007EBD6 CC INT 3首先中断在这里改CC为原来E9

……
:u eip l 09
017F:1007EBD6 E925E4FFFF JMP 1007D000
017F:1007EBDB 0000 ADD [EAX],AL
017F:1007EBDD 0008 ADD [EAX],CL
……
  消除断点bp 3

  再BPX GetModuleHandleA

  为何要用这个中断呢?用tElock 0.98加壳后文件只有这个输入用PEditor看看就知!

  GetModuleHandleA中断按F12返回

:u 1007e210 l eip - 1007e210
017F:1007E210 8B9562D34000 MOV EDX,[EBP+0040D362]
017F:1007E216 8BB552D34000 MOV ESI,[EBP+0040D352]
017F:1007E21C 85F6 TEST ESI,ESI
<--首次ESI就是Import TablerRVA记下该值0005D720
017F:1007E21E 0F8406040000 JZ 1007E62A
017F:1007E224 03F2 ADD ESI,EDX
<-- EDX值就是Image Base
017F:1007E226 83A552D4400000 AND DWORD PTR [EBP+0040D452],00
017F:1007E22D 8B460C MOV EAX,[ESI+0C]
017F:1007E230 83660C00 AND DWORD PTR [ESI+0C],00
<--开始把Name清00要DUMP出有效文件就要想想办法
017F:1007E234 85C0 TEST EAX,EAX
017F:1007E236 0F84EE030000 JZ 1007E62A
017F:1007E23C 03C2 ADD EAX,EDX
017F:1007E23E 8BD8 MOV EBX,EAX
017F:1007E240 50 PUSH EAX
017F:1007E241 FF95D0D24000 CALL [EBP+0040D2D0]
:u eip l 1007e270-eip
017F:1007E247 85C0 TEST EAX,EAX
<--GetModuleHandleA中断按F12返回到此处
017F:1007E249 0F85BA000000 JNZ 1007E309
017F:1007E24F 53 PUSH EBX
017F:1007E250 FF95E4BA4000 CALL [EBP+0040BAE4]
017F:1007E256 85C0 TEST EAX,EAX
017F:1007E258 0F85AB000000 JNZ 1007E309
017F:1007E25E 8B9562D34000 MOV EDX,[EBP+0040D362]
017F:1007E264 01952AD34000 ADD [EBP+0040D32A],EDX
017F:1007E26A 019536D34000 ADD [EBP+0040D336],EDX
……
017F:1007E6C6 MOV EDI,[EBP+0040D362]
017F:1007E6CC ADD EDI,[EDI+3C]
017F:1007E6CF OR [EDI+06],SP<--此处改了Number of Sections
017F:1007E6D3 SHR ESI,00
017F:1007E6D6 CLC
……
  然后用/tracex 10000000 eip-8指令追踪到pdg2.dll OEP为100330E4

:u eip l 100330f7 - eip
017F:100330E4 55 PUSH EBP
017F:100330E5 8BEC MOV EBP,ESP
017F:100330E7 53 PUSH EBX
……
   3如何DUMP出pdg2.dll文件呢?经过以上追踪应该很清楚了!

  中断在DLL文件入口点改CC为原来E9

  bpx readfile(主要是用以跳过反跟踪代码直接G 1007E21E不行)

  F5

  中断按F12返回

  BD *

  G 1007E21E

  R FL Z

  G 1007E6CF

  跳过NumberOfSections修改

  G 100330E4

  /dump 10000000 00080000 C:pdg2.dll

  然后挂起并杀掉SSReader.EXE这个进程

  用PEditor打开Dump文件dumpfixer(RS=VS & RO=VO)

  再修改Entry Po值为000330E4、Import TablerRVA值为0005D720

  可不要忘了把修复好pdg2.dll复制到超星浏览器主目录中测试哦

  OK!

Tags:  dll脱壳 给dll加壳 dll加壳 加壳脱壳工具

延伸阅读

最新评论

发表评论