【原创】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的进程上。
附加成功后,选择Spoon Studio中菜单中的Install License Certificate
在弹出的对话框中不填写任何东西,直接点击确定,结果Spoon系统内部出抛出异常,而此时的DILE会捕获这个异常。
DILE会停在上图的代码处,然后我们选择Call Stack Panel,就可以查看引起这个异常时哪里调用的了,然后我们双击上图中圈出的类。
进入这个Spoon.Common.Accounts.X0615e395e52a99d0::_x5d487333ced49b69类后,我们按F9设置一个断点。按F5让程序跑飞后,我们回到Spoon再次输入证书。这次我们不填空了,而是直接输入Danny以前的破解版的License
点击OK后,程序会中断在我们前面设置的断点处。
按F10单步,一路下来,并随时注意观察IL代码,灵活运行F11和F12单步调试能力,很快就可以定位到下图的类中。(具体怎么找到,就要看各位平时的调试能力了,多练习就会很快定位)
这个时候ILSPY上场了,找到Spoon.Common.Accounts.dll的类x0615e395e52a99d0和方法x22ab5dfa6f12e902名,发现这个方法是有一个重载,如下图所示只要将这个方法的返回值全部设置为true就可以了。
我们再将ILSPY的反编译的语言设置为IL,那么就可以看到这个方法的RVA位置。
打开CFF Explorer,将Spoon.Common.Accounts.dll文件拖入到该工具中,首先找到强名的相关表,发现居然没有强名验证,这样我们破解就更简单了。
在Address Converter中输入前面我们找到的RVA地址0x4a90,我们就快就可以定位Hex地址了。只要在这一段二进制中将返回值设置为true就行了,经常玩DOTNET破解的就应该知道只需要将二进制16修改为17就行了。我们找到这段IL代码中的五个16,然后全部修改为17后保存即可。
重新使用ILSPY打开,我们发现,流程已经更改了。
我们重新注册,发现注册成功了,新建一个文件试一试,也没有提示过期了。破解到此已经结束,是不是很简单。破解完毕了,这并不是我们的终极目标,为了保持原汁原味,我们决定还将此文件打包回去。
利用我们破解的程序将Spoon这么多的文件再打包成一个文件,将StartFile设置为Studio.exe,在Runtime设置中,我们设置为DOTNET3.5 SP1,打包结束后,我们获得了一个大小为121兆左右的单一Studio.exe文件。
现在我们应该想办法将这个文件替换到Spoon原版安装包中。我们需要三个程序:MsiDb.exe,Orca,CABARC.EXE。
1、使用Orca打开安装包文件。
在左侧找到Media,在右侧记下流文件名叫做#disk1.cab,这个压缩包将在第2步用到。
2、使用MsiDb来提取这个cab文件。执行cmd命令:
msidb -x disk1.cab -d Setup-9.4.1860.0.msi
获得压缩文件disk1.cab
这个时候可以直接使用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
这时候,新的安装包就制作好了。我们测试一下,果然新的安装包既保持了原版风味,而且是破解版本。
文中提到的软件地址:
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
【原创】DOTNET动态调试破解Spoon,及MSI安装包文件替换技术的更多相关文章
- 电脑运行msi安装包提示the error code is 2503/2502如何解决
当在电脑中运行msi安装包时,出现the error code is 2503或者2502错误提示,其实是由于没有运行的权限导致的,但是又不能右击以管理员身份运行,那么应该如何操作呢?对于这样的问题, ...
- 找回MSI安装包Win7/Win8管理员身份功能
找回MSI安装包Win7/Win8管理员身份功能 从Vista开始,系统引入了UAC用户控制功能,即普通用户运行exe软件安装程序,支持使用普通账户/管理员身份分别进行安装,但是msi安装包只支持默认 ...
- 绝对干货:自定义msi安装包的执行过程
有时候我们需要在程序中执行另一个程序的安装,这就需要我们去自定义msi安装包的执行过程. 比如我要做一个安装管理程序,可以根据用户的选择安装不同的子产品.当用户选择了三个产品时,如果分别显示这三个产品 ...
- arcgis安装msi安装包提示"在未标记为正在运行时,调用了RunScript”解决办法
安装msi安装包提示"在未标记为正在运行时,调用了RunScript”解决办法 windows/temp目录相关权限不对,右击temp文件夹,选择管理员获取所有权限.
- 在Win10中,在安装msi安装包的时候常常会出现代码为2502、2503的错误。
前言:在Win10中,在安装msi安装包的时候常常会出现代码为2502.2503的错误.其实这种错误是由于安装权限不足造成的,可以这种msi的安装包不像其他exe的安装程序,在安装包上点击“右键”之后 ...
- 自己定义msi安装包的运行过程
有时候我们须要在程序中运行还有一个程序的安装.这就须要我们去自己定义msi安装包的运行过程. 比方我要做一个安装管理程序,能够依据用户的选择安装不同的子产品.当用户选择了三个产品时,假设分别显示这三个 ...
- Elasticsearch各版本的MSI安装包和Kibana各版本的zip包(Windows)
elastic各产品下载列表页:https://www.elastic.co/cn/downloads/ 打开Elasticsearch的下载页后看到的是当前最新版本的安装界面,现在最新的版本是7.4 ...
- Navicat 12.x for MySQL最新版安装破解教程(附安装包和注册机,全网独家可用
title: "Navicat 12.x for MySQL最新版安装破解教程(附安装包和注册机,全网独家可用" categories: soft tags: soft autho ...
- 自定义msi安装包的执行过程
有时候我们需要在程序中执行另一个程序的安装,这就需要我们去自定义msi安装包的执行过程. 比如我要做一个安装管理程序,可以根据用户的选择安装不同的子产品.当用户选择了三个产品时,如果分别显示这三个产品 ...
随机推荐
- Java NIO Files
Java NIO Files Files.exists() Files.createDirectory() Files.copy() Overwriting Existing Files Files. ...
- Requests库的文档高级用法
高级用法 本篇文档涵盖了 Requests 的一些高级特性. 会话对象 会话对象让你能够跨请求保持某些参数.它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 url ...
- 1.3.2、CDH 搭建Hadoop在安装之前(端口---Cloudera Navigator加密使用的端口)
列出的所有端口都是TCP. 在下表中,每个端口的“ 访问要求”列通常是“内部”或“外部”.在此上下文中,“内部”表示端口仅用于组件之间的通信; “外部”表示该端口可用于内部或外部通信. 零件 服务 港 ...
- metasploit framework(十三):FTP扫描
设置目标IP 查看是否支持匿名登录 获取到版本信息 使用ftp登录模块 搜索刚才获取到的版本信息,找到一个针对这个版本的漏洞利用代码
- Excel学习之图表创建
前言:由于工作的需要,现在需要恶补Excel知识,温故而知新,不记录下来自己的学习的点点滴滴怎么能行 Excel版本:2016 一.插入如下图所示的数据源: 1.勾选图表区域范围 2.选中区域范围后直 ...
- phpStudy安装教程
1.在phpStudy官网下载安装包(http://phpstudy.php.cn/)2.解压安装后,若提示没有“VC9.VC11.VC14运行库,注意是X86 32位”,则在phpStudy下载对应 ...
- stm32 启动文件 C和汇编交叉嵌入
在嵌入式系统开发中,目前使用的主要编程语言是C和汇编,C++已经有相应的编译器,但是现在使用还是比较少的.在稍大规模的嵌入式软件中,例如含有OS,大部分的代码都是用C编写的,主要是因为C语言的结构比较 ...
- 在linux 中启动anaconda
anaconda-navigator $ source ~/anaconda3/bin/activate root ###在bin 目录下打开终端 敲 ./activate root $ a ...
- iOS工程中创建pch文件
1.新建pch类文件 2.在工程配置中,Build Setting 下搜索"pre"寻找Apple LLVM6.1 - Language下的 Preflx Header 3.点开P ...
- Java面试基础知识(1)
1.final, finally, finalize的区别 final:修饰符(关键字)如果一个类被声明为final,没有子类也不能被继承.因此一个类不能既被声明为 abstract的,又被声明为fi ...