收到朋友的一个求助,一个硬件配套的上位机软件,无法联系到供应商,没有授权,在新电脑安装后无法使用.

简单的记录下过程

首先打开发过来的软件的目录下,一个配置工具,从图片可以判断,是.net winform程序,因此主程序大概率也是.net 写的.

使用dnspy反编译,发现无法解析.

使用winhex打开主程序,这里更推荐hex workshop,支持直接拖拽.

发现文件头部有bxpck的信息,根据相关搜索,得知这是使用了 BoxedApp Packer 打包的.net程序.

接下来就相对简单了,可以使用现成的解包工具.github就有,但是功能不够强大.无法满足我的需求.

使用cff explorer打开,exe,找到bxpck节点.dump出数据,保存.

保存后,使用16进制工具或者自己写一个,从第一个mz头文件信息开始导出所有数据.

保存成exe,至此,exe导出完毕!显示的图标也与实际程序一致.

可以看出,第一个为原始程序,第三个为dump后导出的程序,可以看出已经有图标了,文件变小了2Mb.

但到此,还是没有解决授权的问题.

使用dnspy定位到授权的代码,反编译再次编译模块导出,此处命名为crack程序,可以看到.程序变成了2350K,一小子小了很多,不奇怪.

dnspy会抛弃exe里打包的dll信息 ,先打开exe验证下 运行效果.

果不其然,报错:

知道了原因,就简单了.

使用C#手写一段代码

根据dll的pe头特征,遍历30926k的主程序信息,提取出正确的dll跟名称,另存为.

提取到所有的dll信息,数字命名的为未提取到pe文件头,初步判断为BoxedApp Packer相关的.net dll,暂时不管,直接抛弃.

hasp*.dll这个就有点意思了,台式thales旗下的safenet,专做软硬件加密加密狗之类的,

由于前面反编译的时候,已经直接跳过了该段加密,所以可以无视.但是依赖还有的,所以依然要把导出的这几个dll存放到软件根目录.

至此,解析完毕,验证效果

未破解版:

此处第二个tab功能不显示

破解后:

正常运行,没有任何报错,但由于手头没有相应的硬件连接,所以报连接失败,属于正常.

具体是否破解完美,待朋友那反馈.

随手写的小工具

2023年3月28日更新:

后续反馈可以正常运行.功能全部解锁.

记录一次BoxedApp Packer脱壳解包的记录的更多相关文章

  1. MAC实用操作记录---使用命令执行文件上传下载解压打包与解包

    1.使用命令执行文件上传下载 https://www.cnblogs.com/sugartang/p/12743470.html 2.提示:打不开xx软件,在 OS X 安装软件打不开提示" ...

  2. python 零散记录(五) import的几种方式 序列解包 条件和循环 强调getattr内建函数

    用import关键字导入模块的几种方式: #python是自解释的,不必多说,代码本身就是人可读的 import xxx from xxx import xxx from xxx import xx1 ...

  3. MonoTouch 二三事(三)mono mkbundle 打包程序的解包支持

    2014.10.06 更新 编写了 IDA Pro 的插件,用来解包和打包 mkbundle程序,请参见 https://github.com/binsys/MKBundleManager 许久以后, ...

  4. Qt程序打包(使用Enigma Virtual Box和BoxedApp Packer封包)

    一.使用单文件封包工具 单文件封包工具,顾名思义就是将可执行文件及其相关依赖打包成单个可执行文件的工具. 这里推荐两个单文件封包工具:Enigma Virtual Box和BoxedApp Packe ...

  5. linux下如何打包压缩?解包解压?.tar文件.gz文件

    ===文件打包.压缩 ==打包 tar [root@521478.com]# tar -cvf etc1.tar /etc //c创建 v详细 f打包后文件名 [root@521478.com]# t ...

  6. Swift中的Optional类型 (可选类型)与强制解包 ? !

    我们在swift的开发中会经常遇见?和! ,理解这两个符号深层次的内容对我们的开发是相当有利的: 目前网上对swift3.0的教程还相当的少,如果去搜索会发现早期的说法,在定义变量的时候,swift是 ...

  7. 如何解包,编辑,重新打包boot images

    HOWTO: Unpack, Edit, and Repack Boot Images http://forum.xda-developers.com/showthread.php?t=443994 ...

  8. zImage.img、ramdisk.img、system.img、userdata.img介绍及解包、打包方法

    ramdisk.img system.img userdata.img介绍及解包.打包方法 Android 源码编译后,在out/target/product/generic下生成ramdisk.im ...

  9. tuple解包给类的构造函数

    首先我们的第一步当然是将tuple解包.tuple提供了一个get函数来获取第N个元素.例如: get<1>(make_tuple(...)); 要将一个tuple全部拆解,就可以使用通过 ...

  10. Mtk Android 打包解包*.img

    打包/解包 boot.img, system.img, userdata.img, or recovery.img [DESCRIPTION] MTK codebase编译出来的image必须使用MT ...

随机推荐

  1. [FAQ] Composer, Content-Length mismatch

    1. $ composer config repos.packagist composer https://php.cnpkg.org$ composer config cache-files-max ...

  2. dotnet 警惕 Task 的 ContinueWith 带上 OnlyOnFaulted 参数抛出取消异常

    本文记录 dotnet 的一个令人迷惑的设计,在 Task 里,有一个叫 ContinueWith 的方法,此方法可以在 Task 完成时执行传入的委托.在 ContinueWith 方法里面,还有一 ...

  3. Qt Quick 工程创建

    一.简介 Qt Quick是Qt框架中的一个模块,用于创建现代.响应式的用户界面.它基于QML(Qt Meta-Object Language)语言和Qt Quick Controls库,提供了一种声 ...

  4. linux文本三剑客之grep及正则表达式详解

    linux文本三剑客之grep及正则表达式详解 目录 linux文本三剑客之grep及正则表达式详解 1. grep命令详解 2. 正则表达式 2.1 基本正则表达式 2.2 扩展正则表达式 1. g ...

  5. 使用SQL Server语句统计某年龄段人数占总人数的比例(多层查询语句嵌套-比例分析)

    需求:需统计出某个集合内,某个段所占的比例,涉及SELECT查询语句的嵌套,如有疑问可留言. 如下: --按性别进行年度挂号年龄段分析--男SELECT 年龄段,SUM(人数) 数量,cast(cas ...

  6. css :not()选择器使用

    前言:这是一个vue的项目,引入了一个reset.css,重写了几乎所有标签的默认样式.项目中需要渲染富文本,里面包含了很多标签,例如:<h1>这是一个大标题</h1>,这个时 ...

  7. cesium教程9-加载倾斜摄影并解决高度问题

    无人机航拍的倾斜摄影,用照片和视频处理生成三维模型,一般照片都带有坐标信息,所以一般都能定位的比较准确,但是经常会出现高度偏差,这个时候就需要特殊处理了. 今天航拍建模的效果如下: 这个建模没有裁剪, ...

  8. 荒岛野人Savage

    题目描述 样例 3 1 3 4 2 7 3 3 2 1 6 分析 首先,我们先设4个变量,初始坐标 \(d[i]\),每年步数 \(p[i]\),寿命 \(l[i]\),根据题目很容易得到一个不等式 ...

  9. C语言:++ --优先级的深入理解

    #include <stdio.h> int main() { int num = 11; int result = ++num > 11 && --num < ...

  10. 解决idea 控制台输出乱码问题:

    解决idea 控制台输出乱码问题[IntelliJ IDEA 2022.1.3 (Ultimate Edition)]: 将两个地方文件编码设置成GBK     参考文档:https://blog.c ...