CSDN博客

img Inf

用Import REConstructor v1.2 beta2修复输入表 --- 之HiClock Pro v2.2 及S-Spline 2.04

发表于2001/8/14 22:04:00  1357人阅读

从看雪论坛转载此文
【标题:用Import REConstructor v1.2 beta2修复输入表        --- 之HiClock Pro v2.2 及S-Spline 2.04】

作者:BestFont  

--------------------------------------------------------------------------------
【下载处】
1)Import REConstructor v1.2 beta2
 http://www.digitalrice.com/kaparo/files/utilities/imprec.zip (取自protoools)

以下两个程序皆用Asprotect1.2以后的版本加壳
2)HiClock Pro version 2.2 build 126 - released on April 9, 2001
 http://www.downme.com/download/6815hiclockpro.zip
 http://www.kgsoft.com/  (官方网址)

3)S-Spline 2.04
 http://202.108.252.24/stcsr/rj/txtx/S-Spline%202.04.zip   (康乐园)
 http://www.shortcut.nl/S-Spline/Shortcut_S-SplineDemo.zip (官方下载)

--------------------------------------------------------------------------------
【前言】
     本文只简述输入表的修复,没涉及软件的破解。
     主角是ImpREC1.2 beta2, 目标软件是 HiClockPro v2.2 及 S-Spline2.04 。
     其中, HiClockPro 2.2 可一次性修复完成,S-Spline 2.04 还需要手工修复/填补。
     本文在win98se下完成,当然也适合在windows2k下做参考

【工具】 1) ImpREC1.2beta2(必须是beta2 或其最新版本)
       2) SoftIce4.05build334 , icedump6.022     (《=必备!)
       3) PE-Editor1.7
       4) BW2000 v0.2 (for win9x only)

     工具简述:ImpREC的说明文件指出,使用ImpREC时系统中最好已加载icedump。
           这样建立的输入表比较少跨平台的问题。而运行icedump前,当然得先加
           载Softice。
               Softice + icedump:使用Icedump 的/tracex 命令可以找到可能
           是OEiP 的地址。
               PE-Editor 的dumpfixer可以使dump 出来的文件的 RS=VS, RO=VO
               BW2000 v0.2 是为了查找被加壳的程序的OEiP(ImpREC中需要此值)
           若已经知道软件的OEiP,可省略。
--------------------------------------------------------------------------------
【准备工作】
     加载Softice 及 Icedump 。先追踪目标程序(使用/tracex命令),得到OEiP,
     并/dump出一个脱壳版本。使用 PE-Editor 的dumpfixer修正脱壳后的文件.

==》注意1:HiClockPro 2.2 的必须采取特别步骤脱壳,否则程序无法运行。
         具体请参考以下两篇:
       1) http://001.com.cn/forum/toye/14781.html
         标 题:简述ICEDUMP中/tracex命令在HiClock脱壳中的应用(1千字)
         发信人:henryw
       
       2) http://www.001.com.cn/forum/toye/14335.html
         标 题:不是不愿写,我真的是只知其然而不知其所以然。
               我那样改的原因如内。 (690字)
         发信人:hying

==》注意2: S-Spline 必须是未注册的,否则脱壳后的程序将无法正常运行。
           S-Spline的破解可以参考下面这篇:
           http://001.com.cn/forum/toye/14799.html
           标 题:v2.04的 (9千字)
           发信人:blowfish

   附:这里有一篇ImpRECT 1.2 beta1 (不是beta2!!) 的使用方法。
       http://001.com.cn/forum/toye/14358.html (本文参考这篇)
       标 题:这样试试...... (1011字)
       发信人:ljtt


【修复HiClockPro 2.2】
---------------------
 0.运行HiClockPro 2.2 及 ImpRECT
 1.在ImpRECT下拉列表框中选择HiClock.exe进程;
 2.在左下角的OEP添入BF260  (即这个程序的OEP)
 3.按IAT AutoSearch,让其自动检测IAT位置;
   出现对话框Found Something!=》
   “Found address which may be in the Original IAT.Try 'GetImport'”
   这表示我们输入的OEP发挥作用了。
 4.按Get Import,让其分析IAT结构得到基本信息;

 5.按Show Invalids 按钮。
     在Imported Function Found栏中点击鼠标右键,选择"Trace Level1(Disasm)"
   再按Show Invalids 按钮。如果成功,可以看到所有的dll都为valid:YES字样;
 6. (很明显第5步时,这个程序的输入表已经完全修复好了)

 7.现在我们要修复已脱壳的程序HiClock.exe。选择Add new section (缺省是选上的) 来
   为Dump出来的文件加一个Section(虽然文件比较大,但避免了许多不必要的麻烦)
 8.按Fix Dump,并选择你Dump出来的文件;
 9.ImpRECT 会在该文件所在目录生成一个新的文件:HiClock_.exe ,这就是修复后的文件。

TIPS1: 在Imported Function Found栏中点击鼠标右键,可以选择"Expand all nodes" 及
       "Collapse all nodes" 来打开/关闭所有节点。
TIPS2: 若因操作上的错误需要重新按GetImport钮, 最好先按程序右边的ClearImports 及
       Clear Logs 按钮。否则,Imported Functions Found栏可能会出现奇怪的现象。

修复前
- ?Fthunk:000C317C NbFunc:2E (decimal:46) valid:NO
   -rva:00000000 ptr:00505A4D
   -rva:00000004 ptr:00000002
   -rva:00000008 ptr:000F0004
   -.....

修复后
- KERNEL32.dll FThunk:000C317C NbFunc:2E (decimal:46) valid:YES <===[看这个YES]
   -rva:000C317C mod:KERNEL32.dll ord:015D name:GetCurrentThreadId
   -rva:000C3180 mod:KERNEL32.dll ord:00D6 name:DeleteCriticalSection
   -rva:000c3184 mod:KERNEL32.dll ord:0228 name:LeaveCriticalSection
   -.....


【修复S-Spline 2.04】
---------------------
0.运行S-Spline 及 ImpRECT
1.在ImpRECT下拉列表框中选择S-Spline.exe进程;
2.在左下角的OEP添入7E910  
3.按IAT AutoSearch,让其自动检测IAT位置;
   出现对话框Found Something!=》
   “Found address which may be in the Original IAT.Try 'GetImport'”
   这表示我们输入的OEP发挥作用了。
4.按Get Import,让其分析IAT结构得到基本信息;
4.1.发现只有一个dll的 valid 为NO

5.按Show Invalids 按钮。
   在Imported Function Found栏中点击鼠标右键,选择"Trace Level1 (Disasm)"
 再按Show Invalids 按钮。如果成功,可以看到所有的dll都为valid:YES字样;
5.1.看到长长的一堆函数名,我们知道至少有一个dll未修复。故使用
 鼠标右键”Collapse all nodes",发现只剩下一个dll未完成。
 从Log栏中可以看到有一个地址修复失败。

6.按Show Invalids 按钮
 在Imported Function Found栏中点击鼠标右键选择"Trace Level2 (Hook)"。
 再按Show Invalids 按钮。如果成功,可以看到所有的dll都为valid:YES字样;
 若还不成功,目前只能手工修复了(Trace Level3 这个功能还没开发完成)。
6.1.从Log栏可以看到”Tracer failed in 008927E4 “修复失败。
   我们找到那个修复失败的是 rva:0009C2AC
(到此,这个程序的输入表还没修复完成,我们必须手工修复这两个地址)

6.2.在Imported Function Found栏,找 rva:0009C2AC ,并用鼠标左键双击它。
     在Module中选 KERNEL32.dll
     在Function中选 ord:032C name:WinExec
     按OK
   (至于这个函数名如何获得?看看下面)
6.3按Show Invalids 按钮, 都为valid:YES字样,输入表到此完成。

7.现在我们要修复已脱壳的程序S-Spline.exe。选择Add new section (缺省是选上的) 来
 为Dump出来的文件加一个Section(虽然文件比较大,但避免了许多不必要的麻烦)
8.按Fix Dump,并选择你Dump出来的文件;
9.ImpRECT 会在该文件所在目录生成一个新的文件:S-Spline_.exe ,这就是修复后的文件。


 《找rva:0009C2AC 的函数名》
 ---------------------------
 以下方法只是一个参考,它不是万能的。另一方面,以后的Asprotect 的小小改变足
 以使它失效,诸位姑且看之。。。
 
 此时Softice已经运行.
 1.进入S-Spline 领空(不知道这样说对不对 ) :
     我们只需CTRL+D ,用bpx getwindowtexta 设拦, F5 。
     在S-Spline 的Serial Number 栏中添入任何资料。
     程序就会被拦。此时已进入S-Spline 领空^_^
 
 2.寻找函数名:
     此时下指令 dd 49c2ac  (= 9c2ac + ImageBase) , 看见该数据区显示8972B4 。
     再 u 8972B4 , 看见代码区显示  PUSH EDX  
                                  JMP C0188DC2
     再 u C00188DC2 , 看见代码区显示  MOV EDX,C0197490 (<==注意这里!!!)
                                     JMP C0188DD
     再 dd C0197490 , 看见该数据区显示 C0197327 。
     最后 db C0197327 就可以看到我们的函数名了 (注:这里是用db 不是dd)
     bc * 再 F5 回到程序。      

----作者:BestFont  ------------【全文完】------------------------------------

--------------------------------------------------------------------------------

《加密及解密技术交流站》由ljtt 制作 版权所有
&copy;2000 -2001 All Rights Reserved
 
转载本站所有文章请注明出处,尊重作者的劳动也是尊重你自己。让我们一同撑起绿色的天空!


0 0

相关博文

我的热门文章

img
取 消
img