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

    技术2022-05-11  73

    从看雪论坛转载此文 【标题:用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 2.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 制作 版权所有 ©2000 -2001 All Rights Reserved   转载本站所有文章请注明出处,尊重作者的劳动也是尊重你自己。让我们一同撑起绿色的天空!

    最新回复(0)