- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
产品路线图PPT-PB反编译,PBDeCompiler,PB加密,powerbuilder加密
PowerBuilder Obfuscator PB混淆器技术路线与设计实现 P-Code混淆功能 将正常的P-Code码分解切分成块 通过连接符进行重新组装,保持逻辑顺序不变 程序块位置随机决定,无固定规律 加入数十种常规运算类逻辑陷阱,阻止静态分析。例如: if (1+2)*3=3+5-6*(2^3) then if 1+2 -3 * 4/5 = 100/3 then //正常出口或一堆乱码 //正常出口或一堆乱码 else else //正常出口或一堆乱码 //正常出口或一堆乱码 end if end if 以上算式,做到随机选择运算种类和运算次数,混淆器能预先计算正常的出口,而反编译无法分析到正确的出口 因为反编译尚不具备编译器的扫描分析能力,并且编译器的能力也仅限语法扫描,编译器也无法预知出口,因为表达式可能有变量存在而非全部是字面量 程序员自定义逻辑陷阱 if fileexists(“c:\123.txt”) and gf_xx(123) gf_yy(“abc”) then //正常出口或一堆乱码 else //正常出口或一堆乱码 end if 由程序员配合设置程序流程的正常出口和逻辑陷阱位置,强力阻止机械反向分析 因为以上函数或者算式需要运行时方可知道结果,连编译器也无法预先得之结果,反编译器更无可能得之 将某个对象(从来不用,专门用来对付反编译的)从十六进制去随机破坏扰乱 反编译反编正常对象没问题,但是要判断一个对象的二进制是否为正常的,不容易,因为没有参照 将某个对象(正常对象如w_main)内部的某个函数(从来不用,专门用来对付反编译的,如wf_get_dogid),将其从十六进制上去破坏扰乱 反编译反编正常函数或事件没问题,但是要判断一个函数或事件的二进制是否为正常的,不容易,因为没有参照 对PBD和DLL文件在文件结构上的某些字节进行移除或者破坏 对Local变量名移除,对函数参数名进行移除,隐藏代码和函数的用途 移除或者替换是绝对不可能还原的,即使重新命名,在非常复杂和晦涩的代码中即使重命名为ll_1,ll_2,ls_1,ls_2也不可能得到有用的代码,这对阻止还原出代码十分有用,也使得代码无可读性,失去被反的价值 混淆器对文件修改时并不留下版本信息,不同版本之间差异非常大 反编译无法根据混淆器的版本特点进行开发反混淆器 多种方法,相同的作用:阻止反编译的正向机械式静态分析,保护软件版权 * 2009.07---2011-05-08 PBD(P-Code 伪码编译模式) 编译后文件: Main.exe,Base.pbd,Ency.pbd,Inv.pbd,Pur.pbd….. 我们的模组信息被PBD,DLL文件名曝光. 我们采用混淆pbd文件名的方式: 001,002,003 不带文件后缀方式; 001.pbd,002.pbd,003.pbd 保持后缀方式 001.sys,002.jpg,003.dbf 改变后缀方式 后缀的意义不大,重要的是文件改名,彻底移除了模组信息 混淆对象名(类名),如w_main.win改为0000001.win 混淆对象的属性,实例变量,控件名等,隐藏对象的功能和接口 混淆对象内的事件,函数,函数参数等敏感信息,隐藏其用途 混淆本地变量名,进入代码无法获知代码实际意义 DLL(Machine-Code 机器码编译方式) PBD中的对象名 通过对象名我们清晰地知道该对象的作用 w_main.win,gf_encryption.fun,w_register.win… 对象内部的事件,窗体函数,外部函数等 通过名字我们就晓得该函数或者事件实现的功能 ue_encode(), ue_register(), wf_register(), wfe_read_dog_info()… 对象中的属性和控件 通过属性和控件我们知道该对象公
文档评论(0)