记录一次BoxedApp Packer脱壳解包的记录
收到朋友的一个求助,一个硬件配套的上位机软件,无法联系到供应商,没有授权,在新电脑安装后无法使用.
简单的记录下过程
首先打开发过来的软件的目录下,一个配置工具,从图片可以判断,是.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脱壳解包的记录的更多相关文章
- MAC实用操作记录---使用命令执行文件上传下载解压打包与解包
1.使用命令执行文件上传下载 https://www.cnblogs.com/sugartang/p/12743470.html 2.提示:打不开xx软件,在 OS X 安装软件打不开提示" ...
- python 零散记录(五) import的几种方式 序列解包 条件和循环 强调getattr内建函数
用import关键字导入模块的几种方式: #python是自解释的,不必多说,代码本身就是人可读的 import xxx from xxx import xxx from xxx import xx1 ...
- MonoTouch 二三事(三)mono mkbundle 打包程序的解包支持
2014.10.06 更新 编写了 IDA Pro 的插件,用来解包和打包 mkbundle程序,请参见 https://github.com/binsys/MKBundleManager 许久以后, ...
- Qt程序打包(使用Enigma Virtual Box和BoxedApp Packer封包)
一.使用单文件封包工具 单文件封包工具,顾名思义就是将可执行文件及其相关依赖打包成单个可执行文件的工具. 这里推荐两个单文件封包工具:Enigma Virtual Box和BoxedApp Packe ...
- linux下如何打包压缩?解包解压?.tar文件.gz文件
===文件打包.压缩 ==打包 tar [root@521478.com]# tar -cvf etc1.tar /etc //c创建 v详细 f打包后文件名 [root@521478.com]# t ...
- Swift中的Optional类型 (可选类型)与强制解包 ? !
我们在swift的开发中会经常遇见?和! ,理解这两个符号深层次的内容对我们的开发是相当有利的: 目前网上对swift3.0的教程还相当的少,如果去搜索会发现早期的说法,在定义变量的时候,swift是 ...
- 如何解包,编辑,重新打包boot images
HOWTO: Unpack, Edit, and Repack Boot Images http://forum.xda-developers.com/showthread.php?t=443994 ...
- zImage.img、ramdisk.img、system.img、userdata.img介绍及解包、打包方法
ramdisk.img system.img userdata.img介绍及解包.打包方法 Android 源码编译后,在out/target/product/generic下生成ramdisk.im ...
- tuple解包给类的构造函数
首先我们的第一步当然是将tuple解包.tuple提供了一个get函数来获取第N个元素.例如: get<1>(make_tuple(...)); 要将一个tuple全部拆解,就可以使用通过 ...
- Mtk Android 打包解包*.img
打包/解包 boot.img, system.img, userdata.img, or recovery.img [DESCRIPTION] MTK codebase编译出来的image必须使用MT ...
随机推荐
- 日志服务 HarmonyOS NEXT 日志采集最佳实践
背景信息 随着数字化新时代的全面展开以及 5G 与物联网(IoT)技术的迅速普及,操作系统正面临前所未有的变革需求.在这个背景下,华为公司自主研发的鸿蒙操作系统(HarmonyOS)应运而生,旨在满足 ...
- SAP集成技术(一)历史
最近想读一本书<SAP Interface Management Guide>,打算边读边记录一些笔记.翻译主要由ChatGPT完成. 本文链接:https://www.cnblogs.c ...
- 简说Python之ipython的pdb调试
目录 简说Python之ipython 1.安装ipython 2.ipython的使用 3.ipython的debug调试. 系统环境:Ubuntu 18.04.1 LTS Python使用的是虚拟 ...
- ruby和glang的md5和sha1加密对比
ruby和glang的md5和sha1加密对比 package main import ( "crypto/md5" "crypto/sha1" "f ...
- thinkphp5 关于跨域的一些坑,附上解决办法(比较全面了)
项目背景:前端是uniapp开发的h5,后端是tp5,其他语言我觉得应该大同小异,主要是思路,本文就以这俩为例吧 1.首先在tp5的入口文件:public/index.php 在里面添加三行: // ...
- Ubuntu更新源文件报错:E: 仓库 “http://ppa.launchpad.net/chris-lea/node.js/ubuntu bionic Release” 没有 Release 文件。
E: 仓库 "http://ppa.launchpad.net/chris-lea/node.js/ubuntu bionic Release" 没有 Release 文件. 一条 ...
- kubernets之pod的生命周期容器启动后钩子以及容器结束前钩子
一 先来介绍容器启动后钩子 1.1 容器启动后钩子,并不是容器启动之后才会执行的操作,而是在容器启动过程中,异步的和容器进行启动的一种钩子它有2种表现形式,包括我们后面提到的容器结束前钩子一样 在一 ...
- Navigator.sendBeacon()
navigator.sendBeacon() 方法可用于通过 HTTP POST 将少量数据异步传输到 Web 服务器. 这个方法主要用于满足统计和诊断代码的需要,这些代码通常尝试在卸载(unload ...
- c++ 记一次把qrencode源码生成动态库的尝试
在网上搜二维码库:qrencode,源码下载:https://github.com/fukuchi/libqrencode 我的是windows环境,IDE是vs2022. 建立一个动态库的空工程. ...
- java练习项目——记账本
包含登录.注册.记账.每日账单查看.每月报表.添加记账类型这些功能.数据存储采用的是txt文档+xml文档.程序是一个控制台程序,用IntelliJ IDEA+jdk8开发.涉及到的知识有List集合 ...