upx -d
解压缩二进制文件以对其进行分析,将获得无效的二进制文件。防止静态分析的另一种解决方案是对一部分代码进行加密,并在运行时使用C语言中的
mprotect
对其进行解密。 。所以实际上两种方法都可以用来加密代码,唯一的区别是,在第一种情况下,修改了elf入口点,而存根还原了原始代码,在第二种情况下,从原始入口点开始执行。后一种方法似乎更简单。如果我想保护我的二进制文件免于拆卸,那么第二种方法与第一种方法相比有什么缺点吗?我认为,如果没有反调试技巧,两种方法都可以以相同的方式反转,并且在解密完成后可以转储内存。
#1 楼
如果我想保护我的二进制文件免于拆卸,那么第二种方法与第一种方法相比有什么缺点吗?
第二种方法要求您具有访问源代码¹,而如果您拥有的只是二进制文件,则可以应用第一种方法。
但是,在使用这两种方法中的一种(或两种)之前,请记住,它们都是通过动态逆向工程可以克服这些困难。
¹实际上并不需要源代码,但是如果您没有源代码,则相对于第二种方法,要应用第一种方法要痛苦得多代码。