- 主题:Rust编译产物里大量源码文件名,好像没啥好办法去除?
能清楚地看到编译器的精确版本,所用的全部crate的名字和精确版本,甚至windows用户名。
这对防止逆向不是好事。
替换掉panic、使用"--remap-path-prefix"重定向路径、使用带混淆的LLVM后端,好像弄得不是很干净。
难道要在编译最终产物里搞二进制查找替换?
/rustc/39052daf937d46373ac29778e1b8853c52c0cc25/library\\std\\src\\thread\\id.rs
C:\\Users\\zhang\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\block-buffer-0.10.4\\src\\lib.rs
C:\\Users\\zhang\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib/rustlib/src/rust\\library\\alloc\\src\\alloc.rs
--
FROM 123.115.128.*
AI给的也是这些办法,外加一个LLVM混淆。
我主要不是要去掉windows用户名(这个是顺带的),而是抹掉我所用的各个crates的名字和版本信息。
因为根据crates的名字和版本信息,基本就能猜到这个软件的功能大概是如何实现的。
【 在 poocp 的大作中提到: 】
: release版本不想保留任何调试信息包括panic源文件路径信息,可以这么设置一下。
: Cargo.toml
: [code=toml]
: ...................
--
FROM 123.115.128.*
不是中间文件,是用IDA pro打开exe/dll后直接看字符串列表。
我之前分析一个竞品的产品,还弄了个小程序专门提取这个字符串列表消重后看它的核心功能的实现方案。
【 在 RunningOn 的大作中提到: 】
: 你举的例子是编译中间文件,不会对外发布,所以这个是无所谓的。
: 你有这样的需求,那你发布出的文件应该是.exe/.dll文件,你只关注这两类文件就行。
: “调试信息”要有取舍,默认配置下,panic会输出backtrace,所以函数名是会记录的,如果全部抹除,那panic时输出的东西就几乎不可读了,对调试很不利。如果确定全部要抹除,那就在Cargo.toml的"[profile.release]"里加上 strip=true 和 panic="abort"
: ...................
--
FROM 123.115.128.*