Powerbuilder混淆与加密器(支持10以上)

chengg0769 2010-04-18 04:05:02
已经上传一个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格式肉眼分析有帮助的地方都尽数抹掉了,从而加大肉眼人工分析的错觉感。
...全文
409 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengg0769 2010-05-12
  • 打赏
  • 举报
回复
今天更新到2010.05.1版。
测试和完善了许多地方。PCM寄给我的sbo demo和我自己的pb11的两个项目混淆后运行无错。

下载地址: http://chengg0769.download.csdn.net/
chengg0769 2010-04-23
  • 打赏
  • 举报
回复
非常感谢大家的参与。

非常感谢kenshu的指点,后续有时间当改进之。不过那都是枝节问题。因为据你所陈述的,你当初开发反编译器也是经过3-5年方成熟,期间耗费的精力可想而知,绝非一日之功。pbdecomplier和反混淆以及这个新版混淆器已经耗费了我将近10个月时间,正如kenshu所说的,没文档这东东,做起来也就没有边际,最近还有2个案子要做,还有客户维护。正确尽量改进吧。只要大家不吝反馈与赐教,都当吸纳。

主要是时间问题,因为我已经为这几个软件耗费了大量时间,但凡一个地方修改,又需要大量地重复测试。最近可能会用pb5-12的sample和一些商业软件的pbd来测试。前提是有时间。一些小概率的码是难觅踪迹。

测试有错误请直接发邮件。因为我自己也有测试,但是情境不一样,有你email的样本我会更快修改之。

混淆器的难度比反编译器小,大概只有5%。最主要是码表要完整。否则切分出错,就算遇到一个码,也就错错错了。

最新下载请见我第一个帖子中的原文链接。我有上传到csdn。修改后会更新。




fuxiaoyang13 2010-04-23
  • 打赏
  • 举报
回复
支持下
pbship 2010-04-21
  • 打赏
  • 举报
回复
PB15编译到EXE文件,是否也能被反编译?
sniper2003 2010-04-21
  • 打赏
  • 举报
回复
支持,来看牛人
fengguangyin 2010-04-21
  • 打赏
  • 举报
回复
支持~
xuping_9522 2010-04-21
  • 打赏
  • 举报
回复
支持一下,
hacker3333 2010-04-20
  • 打赏
  • 举报
回复
pb10.2混淆失败 ,不知道是为什么access violation at address 0049c345 in module 'obfuscator.exe'. write of address 01768000
huangguochou 2010-04-20
  • 打赏
  • 举报
回复
两大高手对决。
hufupeng 2010-04-20
  • 打赏
  • 举报
回复
pb8.03 pb11.5 编译的pbd混淆失败。
twozhen 2010-04-20
  • 打赏
  • 举报
回复
接分,谢谢了。
zb63668331 2010-04-20
  • 打赏
  • 举报
回复
牛人们都是夜里出来~
kenshu 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 kenshu 的回复:]
挺好的.

有个小小的建议,pkb的EXE,可以通过,版本特征和PB9一致,但它是UNICODE来判断,不需要用户人工选择.

另外,找到一两个BUG没测试干净,不过这个不会告诉您的,见谅.
[/Quote]

还有,更好的方法,是通过分析PE格式(这个网上大把资料),查找EXE的ImportTable,看看调用那个DLL来判断,这样看起来会专业一点.
kenshu 2010-04-20
  • 打赏
  • 举报
回复
国酬兄在这里,有谁敢说是高手.
zb63668331 2010-04-19
  • 打赏
  • 举报
回复
牛X!
kenshu 2010-04-19
  • 打赏
  • 举报
回复
别人只是顶,我有给实质生的建议,所以您应该给我10分.嘻嘻.
kenshu 2010-04-19
  • 打赏
  • 举报
回复
挺好的.

有个小小的建议,pkb的EXE,可以通过,版本特征和PB9一致,但它是UNICODE来判断,不需要用户人工选择.

另外,找到一两个BUG没测试干净,不过这个不会告诉您的,见谅.
huangguochou 2010-04-19
  • 打赏
  • 举报
回复
支持!!!
提前十分钟 2010-04-19
  • 打赏
  • 举报
回复
支持一下
lao_bulls 2010-04-19
  • 打赏
  • 举报
回复
好像用不了。
加载更多回复(10)

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧