好友
阅读权限10
听众
最后登录1970-1-1
|
各位吾友好,交一份原创工具:开源 Windows 原生代码加壳器 Xenolith。
【它是什么】
输入编译好的 PE(实验性支持 ELF),输出带
xenolith-52pojie.zip
(910.71 KB, 下载次数: 2)
认证加密信封与自举 stub 的受保护映像,不需要源码、不需要重编译。用 --vm-export 选中的导出函数会被"打包期编译器"提升为内部 IR,再逐基本块编译成位置无关原生代码:逐块独立寄存器分配、指令调度、MBA 恒等式重写,全部由每次构建的 16 字节 seed 驱动,块间直接 jmp/jcc 连接。镜像里没有 guest 字节码、没有 opcode 表、没有中央 dispatcher。
【为什么自己写一个】
VMProtect/Themida 的虚拟化 = 共享 handler 表 + guest 字节码 + 中央分发器,NoVmp 已经证明这类结构能在没有壳源码的前提下被静态提升——共享 ISA 是可训练、可跨样本复用的靶子。Xenolith 把"虚拟化"从运行时解释改成打包期编译:两次打包之间没有任何可迁移的东西,没法"学会一次 VM"就摊销成本。代价是保护开销随选中函数块数增长,这条文档里写得明明白白。
【上图说明】
图1 运行截图:一条命令完成打包(9216B→35328B,check_license 落进 stub 区 RVA 0x6e02),inspect 可查看打包后导出。
![]()
图2 IDA 对比:同一个 check_license,打包前 10 条指令;打包后 45 行逐块唯一 PIC(xor 常量汤 + MBA),语义不变——用 LoadLibrary + GetProcAddress 实调 check_license(3,4) = 0x9E3779BC,与原函数手算一致。
![]()
【加密与完整性】
· 每页 ChaCha20-Poly1305 AEAD,独立 nonce+tag,AAD 绑定 RVA/长度/策略,密文无法跨页拼接换位
· 主密钥从不连续存在:MBA 8 肢体分片,运行时牛顿迭代求模逆重建后 zeroize
· 运行时密钥绑定全镜像 SHA-256 measurement:改一个字节,加载直接失败
· 哈希导入解析后回写原始 IAT 槽位,CRT/DllMain 保持原生
【使用说明】
附件 [url=]xenolith-52pojie.zip[/url] (解压密码 52pojie):
· xenolith.exe — Windows x64 CLI,静态编译无依赖(sha256 见包内 .sha256)
· license_toy.dll — 示例 DLL(导出 check_license)
· license_toy.xl.dll — 已打包产物,可直接 LoadLibrary 调 check_license(3,4) 验证语义
命令:
xenolith pack license_toy.dll -o license_toy.xl.dll --profile max --vm-export check_license
xenolith inspect license_toy.xl.dll --exports
xenolith(无参数)= 四屏 TUI 向导
源码:https://github.com/HHT0rro/Xenolith
(GPL-3.0 + Stub Exception:打包你的闭源程序分发不传染,与 UPX 产物例外同款设计)
【声明】
本工具仅用于保护自有软件、安全研究与教学交流,禁止用于任何违法违规用途。C++ 异常、setjmp/longjmp、varargs、TLS、ASLR/CFG/CET 兼容性均在打包后映像上验证过(测试矩阵见仓库 docs)。
欢迎逆向的朋友们砸场:解包窗口、IAT 断点、trace 对齐,想测哪条强度门随便来。有 bug 带样本提 issue,比什么都有用。
|
免费评分
-
| 参与人数 1 | 吾爱币 +7 |
热心值 +1 |
收起
理由
|
风之暇想
| + 7 |
+ 1 |
感谢发布原创作品,吾爱破解论坛因你更精彩! |
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|
|