Powerbuilder混淆与加密器(支持10以上)
已经上传一个beta,请大家做测试。
如果遇到问题请邮件给我联系或者blog留言。
原文地址:http://blog.csdn.net/chengg0769/archive/2010/04/17/5495693.aspx
下载地址:http://download.csdn.net/source/2249580
计划覆盖powerbuilder5-12,pkb2.5的代码混淆和加密(此beta版请测试9,10,11,11.5,12)
主要特点:
1.修改了部分关键点参数,诱导早期的一些反编译器崩溃;
2.代码混淆部分原理参考LJTT的PowerShield1.0简易版,并在其基础上扩展出一些新的方式。还有些东西在脑子里,暂未实现。
2.1加入随机变化因子,这样使得反混淆器算法难度增加;
2.2增加了欺骗和逻辑陷阱,这些陷阱靠人眼是可以分析和发现的,但因为人脑是有逻辑思维能力,而靠编程是无法去理解我伪造的假代码的逻辑性的。从而会陷入我预设的逻辑陷阱中。
后续会扩展:
2.3在当前的工作基础上(9种)增加至36种(or 100种)左右的混淆方式,并限制在单机能测试到所有混淆方式,这样开发反编译器的人因为无法测试到所有可能性,从而加大反混淆的难度。最主要是混杂一些看似是正常代码的假跳转,(包括直接伪造本地变量参与的表达式,让人难辨真伪)相似性越高,越不容易判定,致使反混淆无法运用程序进行归纳识别。
2.4混淆前,查看变量列表中有否有一些可利用的变量,如int,long类型,可以进行伪造假的代码并添加进来与真实代码混杂在一起,或者对真实代码形成包裹与混杂,相似性更高。
2.5将多种方式离散在多个发行版本中。从而让反编译器无所适从。说到这里好像要找孙子兵法看看还有什么招。
2.6其他动态语言的混淆器还没去参考,因为想先有个基本实现。java,c#等的混淆器应该已经很成熟,可以借鉴。
3.抹掉所有不必要的可视文字,如RefListObject文字,var变量名,function名字和参数等文字。如此反编译器只能重新命名,从而无法还原可读性。
4.增加了欺骗对象或函数。虽然借助对本软件的反复调试,反混淆器作者可以发现规律,但是因为欺骗对象带随机因子,也就是要校验一个对象的格式完整性和正确性,目前还没人有那个能力。就如用视觉鉴别一瓶纯净水和一瓶汽油一样。反混淆器就会不小心陷入其中,除反混淆和反编译开发者外,一些使用反编译器的普通人是不知道反编译器为什么会中途异常退出的,因为他们没反编译器源码,也无法单步调试。他们对此种情况也无能为力(要的就是这种效果)。反编译器开发者也不会去为一个不确定的规律而修改程序。
5.对一些可有可无,但对pbd格式肉眼分析有帮助的地方都尽数抹掉了,从而加大肉眼人工分析的错觉感。