24
保护可执行文件免受逆向工程?
我一直在考虑如何保护我的C / C ++代码免于反汇编和逆向工程。通常,我永远不会在自己的代码中宽恕这种行为。但是,为了所有人的安全,我目前正在研究的当前协议绝不能被检查或理解。 现在,这对我来说是一个新主题,互联网对于预防逆向工程并不是真正有用的资源,而是描述了大量有关如何进行逆向工程的信息 到目前为止,我想到的一些事情是: 代码注入(在实际函数调用之前和之后调用伪函数) 代码混淆(破坏二进制文件的反汇编) 编写我自己的启动例程(调试器很难绑定到) void startup(); int _start() { startup( ); exit (0) } void startup() { /* code here */ } 运行时检查调试器(如果检测到,则强制退出) 功能蹦床 void trampoline(void (*fnptr)(), bool ping = false) { if(ping) fnptr(); else trampoline(fnptr, true); } 没有意义的分配和释放(堆栈变化很多) 无意义的虚拟呼叫和蹦床(拆卸输出中的大量跳跃) 吨铸件(用于模糊拆卸) 我的意思是,这是我想到的一些事情,但是在适当的时间范围内,代码分析人员可以解决所有这些问题,或者可以由代码分析人员弄清楚这些问题。我还有别的选择吗?
210
c++
c
obfuscation
assembly