zoukankan      html  css  js  c++  java
  • 【原创】DOTNET动态调试破解Spoon,及MSI安装包文件替换技术

    提到Spoon可能大家还会感到陌生,但是如果提及XenoCode那么研究过DOTNET的人应该都知道吧。Spoon的前身就是XenoCode,虽然没有了PostBuild这个混淆软件,但是虚拟化技术仍然在完善,Spoon可以让DOTNET、JAVA和Flash程序脱离Framework在电脑上独立运行。最新的spoon已经可以支持DOTNET4.0了。
        网上破解Spoon的教程几乎没有,有的也只有Danny_Su直接提供的破解版本。而我最为羡慕的就是Danny提供的版本中拥有原版安装界面。经过几天的研究,终于实现了此功能,特分享给大家。
        首先可以利用NETUNPACK获得DOTNET的Assembly文件,而可以利用Ollydbg来获得非托管文件。早在XenoCode时代,网上就有了视频教程。获得脱壳的文件后,我们将使用一些其他的工具来替代传统的Reflector进行追踪。
        首先出场的是初级DOTNET调试软件DILE。先运行Spoon,然后使用DILE的Attach功能来附加到Spoon的进程上。
    名称:  1.png
查看次数: 1913
文件大小:  17.1 KB
    附加成功后,选择Spoon Studio中菜单中的Install License Certificate
    名称:  2.png
查看次数: 1914
文件大小:  19.6 KB
    在弹出的对话框中不填写任何东西,直接点击确定,结果Spoon系统内部出抛出异常,而此时的DILE会捕获这个异常。
    点击图片以查看大图

图片名称:	3.png
查看次数:	1923
文件大小:	50.6 KB
文件 ID :	60842
    DILE会停在上图的代码处,然后我们选择Call Stack Panel,就可以查看引起这个异常时哪里调用的了,然后我们双击上图中圈出的类。
    进入这个Spoon.Common.Accounts.X0615e395e52a99d0::_x5d487333ced49b69类后,我们按F9设置一个断点。按F5让程序跑飞后,我们回到Spoon再次输入证书。这次我们不填空了,而是直接输入Danny以前的破解版的License
    名称:  4.png
查看次数: 1915
文件大小:  15.6 KB
    点击OK后,程序会中断在我们前面设置的断点处。
    名称:  5.png
查看次数: 1911
文件大小:  11.0 KB
    按F10单步,一路下来,并随时注意观察IL代码,灵活运行F11和F12单步调试能力,很快就可以定位到下图的类中。(具体怎么找到,就要看各位平时的调试能力了,多练习就会很快定位)
    点击图片以查看大图

图片名称:	6.png
查看次数:	1913
文件大小:	15.9 KB
文件 ID :	60845
    这个时候ILSPY上场了,找到Spoon.Common.Accounts.dll的类x0615e395e52a99d0和方法x22ab5dfa6f12e902名,发现这个方法是有一个重载,如下图所示只要将这个方法的返回值全部设置为true就可以了。
    名称:  7.png
查看次数: 1907
文件大小:  15.8 KB
    我们再将ILSPY的反编译的语言设置为IL,那么就可以看到这个方法的RVA位置。
    名称:  8.png
查看次数: 1912
文件大小:  32.4 KB
    打开CFF Explorer,将Spoon.Common.Accounts.dll文件拖入到该工具中,首先找到强名的相关表,发现居然没有强名验证,这样我们破解就更简单了。
    名称:  9.png
查看次数: 1916
文件大小:  7.5 KB
    在Address Converter中输入前面我们找到的RVA地址0x4a90,我们就快就可以定位Hex地址了。只要在这一段二进制中将返回值设置为true就行了,经常玩DOTNET破解的就应该知道只需要将二进制16修改为17就行了。我们找到这段IL代码中的五个16,然后全部修改为17后保存即可。
    点击图片以查看大图

图片名称:	10.png
查看次数:	1915
文件大小:	47.6 KB
文件 ID :	60849
    重新使用ILSPY打开,我们发现,流程已经更改了。
    名称:  11.png
查看次数: 1910
文件大小:  15.7 KB
          我们重新注册,发现注册成功了,新建一个文件试一试,也没有提示过期了。破解到此已经结束,是不是很简单。破解完毕了,这并不是我们的终极目标,为了保持原汁原味,我们决定还将此文件打包回去。
        利用我们破解的程序将Spoon这么多的文件再打包成一个文件,将StartFile设置为Studio.exe,在Runtime设置中,我们设置为DOTNET3.5 SP1,打包结束后,我们获得了一个大小为121兆左右的单一Studio.exe文件。
    名称:  12.png
查看次数: 1907
文件大小:  51.1 KB
        现在我们应该想办法将这个文件替换到Spoon原版安装包中。我们需要三个程序:MsiDb.exe,Orca,CABARC.EXE。
    1、使用Orca打开安装包文件。
    在左侧找到Media,在右侧记下流文件名叫做#disk1.cab,这个压缩包将在第2步用到。
    名称:  13.png
查看次数: 1894
文件大小:  18.3 KB
    2、使用MsiDb来提取这个cab文件。执行cmd命令:
    msidb -x disk1.cab -d Setup-9.4.1860.0.msi
    获得压缩文件disk1.cab 
    点击图片以查看大图

图片名称:	14.png
查看次数:	1910
文件大小:	41.4 KB
文件 ID :	60853
    这个时候可以直接使用winrar进行解压缩。发现有三个文件 VAStudio.exe,Studio.chm,XStudio.exe其中VAStudio.exe就是我们要替换的文件。我们将破解的Studio.exe 更名为VAStudio.exe 替换原版文件。我们在执行下面的命令来重新制作cab压缩包:
    cabarc -m LZX:21 -r N disk1.cab "disk1*"
    3、cab压缩包制作好后,我们再使用MsiDb.exe将新的压缩包替换进去。首先删除原MSI文件中的disk1.cab文件流:
    msidb -k disk1.cab -d Setup-9.4.1860.0.msi
    再次,添加新的的disk1.cab文件:
    msidb -a disk1.cab -d Setup-9.4.1860.0.msi
    这时候,新的安装包就制作好了。我们测试一下,果然新的安装包既保持了原版风味,而且是破解版本。
    名称:  15.png
查看次数: 1915
文件大小:  69.1 KB
    文中提到的软件地址:
    Spoon:http://www.spoon.net/Studio/
    DILE:http://sourceforge.net/projects/dile/files/DILE/
    CFF Explorer: http://www.ntcore.com/exsuite.php
    MsiDb.exe,Orca,CABARC.EXE 可以自己Google之。
    欢迎大家和我联系 chenxiaolu2012@gmail.com

  • 相关阅读:
    react 高阶组件之小学版
    react diff 极简版
    react 16更新
    react 组件的生命周期 超简版
    JS继承(简单理解版)
    Vue Virtual Dom 和 Diff原理(面试必备) 极简版
    Vue数据双向绑定(面试必备) 极简版
    Vue生命周期的执行过程(面试必备) 极简版
    多个Portal for ArcGIS 间的协作实操
    Portal的安全代理(反向代理出口)配置架构
  • 原文地址:https://www.cnblogs.com/sung/p/3232076.html
Copyright © 2011-2022 走看看