今天做了一个简单的structrue,编译得到一个pbd文件,在pb中,全局结构是代码最少的。
发现几个问题:
1.pbkiller无法得到blob{n}这种申明,ue查看是他少分析了一部分字节,比如dec{2},dec{4}都不能反编译,全部编译为:dec。
2.pbkiller目录下的文件vmxxx.dat大致为一个包含pb所有内置对象,函数,实践,属性调用的例程。可能视图通过此样本与客户代码比较得到反编译信息。具体还得研究。另外shudepb当时应该也是参考此软件,我记得之前好像他说参考pbkiller不断对比调试之类的话,在哪里看到的搞忘了。
*经查:vm196.dat来自pbvm90.dll的0x422200h处的资料。看样子是pb9的全部枚举和对象清单。
3.对pbkiller的原理进行了透析:编译一个pbd,然后启动pbkiller,然后ue修改pbd的字节,逐渐推断和比较,终于分析出pbkiller依赖的部分,这些部分就形成解析源码的依据。目前我对structrue已经完全解析,而且知道了各部分的真正含义。包括blob{256}是如何申明和表示的。后续其他对象可能很复杂,比如window。但我现在已经打开思路,并会沿着这个思路一致研究下去。
4.附上我分析的pbd文件,是一个结构:
a。源码:
global type str_a from structure
blob{256}aaa
booleanbbb
characterccc
checkboxddd
commandbuttoneee
datawindowfff
datawindowchildggg
datehhh
datetimeiii
decimal { 0 }jjj
decimal { 2 }kkk
decimal { 4 }lll
doublemmm
w_bbbbnnn
end type
b。关键字节(无关字节我已经抹为00了),具体含义我就不便写的太明白了。本来写在这里也主要给自己留个参考。
00001200h: 44 41 54 2A 00 14 00 00 F6 01 00 00 08 00 00 00 ; DAT*....?......
00001210h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00001220h: 00 00 DE 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ..?............
00001230h: 00 00 73 74 72 75 63 74 75 72 65 00 73 74 72 5F ; ..structure.str_
00001240h: 61 00 61 63 63 65 73 73 69 62 6C 65 73 74 61 74 ; a.accessiblestat
00001250h: 65 00 61 63 63 65 73 73 69 62 69 6C 69 74 79 00 ; e.accessibility.
00001260h: 6D 61 69 6C 72 65 63 69 70 69 65 6E 74 00 65 6E ; mailrecipient.en
00001270h: 76 69 72 6F 6E 6D 65 6E 74 00 6D 61 69 6C 66 69 ; vironment.mailfi
00001280h: 6C 65 64 65 73 63 72 69 70 74 69 6F 6E 00 6D 61 ; ledescription.ma
00001290h: 69 6C 6D 65 73 73 61 67 65 00 64 61 74 61 77 69 ; ilmessage.datawi
000012a0h: 6E 64 6F 77 63 68 69 6C 64 00 6C 69 73 74 76 69 ; ndowchild.listvi
000012b0h: 65 77 69 74 65 6D 00 74 72 65 65 76 69 65 77 69 ; ewitem.treeviewi
000012c0h: 74 65 6D 00 63 6F 6E 6E 65 63 74 69 6F 6E 69 6E ; tem.connectionin
000012d0h: 66 6F 00 63 68 65 63 6B 62 6F 78 00 63 6F 6D 6D ; fo.checkbox.comm
000012e0h: 61 6E 64 62 75 74 74 6F 6E 00 64 61 74 61 77 69 ; andbutton.datawi
000012f0h: 6E 64 6F 77 00 77 5F 62 62 62 62 00 70 6F 77 65 ; ndow.w_bbbb.powe
00001300h: 72 6F 62 6A 65 63 74 00 54 01 00 00 00 00 FF FF ; robject.T.....
00001310h: 00 00 08 00 00 00 00 00 00 00 40 15 00 00 00 00 ; ..........@.....
00001320h: 00 00 FF FF 00 00 12 00 00 00 00 00 00 00 00 15 ; ..............
00001330h: 00 00 00 00 00 00 FF FF 00 00 18 00 00 00 02 00 ; ..............
00001340h: 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 28 00 ; ............(.
00001350h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF ; ..............
00001360h: 00 00 36 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ..6.............
00001370h: 00 00 FF FF 00 00 44 00 00 00 00 00 00 00 00 00 ; ....D.........
00001380h: 00 00 00 00 00 00 FF FF 00 00 50 00 00 00 00 00 ; ........P.....
00001390h: 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 64 00 ; ............d.
000013a0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF ; ..............
000013b0h: 00 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ..p.............
000013c0h: 00 00 FF FF 00 00 80 00 00 00 00 00 00 00 00 00 ; ....€.........
000013d0h: 00 00 00 00 00 00 FF FF 00 00 8D 00 00 00 00 00 ; ........?....
000013e0h: 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 9A 00 ; ............?
000013f0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF ; ..............
00001400h: 44 41 54 2A 00 16 00 00 F6 01 00 00 A9 00 00 00 ; DAT*....?..?..
00001410h: 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 ; ..............
00001420h: B2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ?..............
00001430h: FF FF 00 00 C0 00 00 00 00 00 00 00 00 00 00 00 ; ..?..........
00001440h: 00 00 00 00 FF FF 00 00 CB 00 00 00 00 00 00 00 ; ......?......
00001450h: 00 00 00 00 00 00 00 00 FF FF 00 00 D2 00 00 00 ; ..........?..
00001460h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 ; ................
00001470h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00001480h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00001490h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
000014a0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
000014b0h: 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ; ................
000014c0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
000014d0h: 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; @...............
000014e0h: 61 61 61 00 62 62 62 00 63 63 63 00 64 64 64 00 ; aaa.bbb.ccc.ddd.
000014f0h: 65 65 65 00 66 66 66 00 67 67 67 00 68 68 68 00 ; eee.fff.ggg.hhh.
00001500h: 69 69 69 00 6A 6A 6A 00 6B 6B 6B 00 6C 6C 6C 00 ; iii.jjj.kkk.lll.
00001510h: 6D 6D 6D 00 6E 6E 6E 00 18 01 00 00 00 00 FF FF ; mmm.nnn.......
00001520h: 00 00 08 00 00 00 00 00 00 00 00 1D 0B 00 00 00 ; ................
00001530h: 00 00 FF FF 00 00 0C 00 00 00 00 00 00 00 00 00 ; ..............
00001540h: 07 00 00 00 00 00 FF FF 00 00 10 00 00 00 00 00 ; ..............
00001550h: 00 00 00 00 12 00 00 00 00 00 FF FF 00 00 14 00 ; ..............
00001560h: 00 00 00 00 00 00 00 00 0C 80 00 00 00 00 FF FF ; .........€....
00001570h: 00 00 18 00 00 00 00 00 00 00 00 00 0D 80 00 00 ; .............€..
00001580h: 00 00 FF FF 00 00 1C 00 00 00 00 00 00 00 00 00 ; ..............
00001590h: 0E 80 00 00 00 00 FF FF 00 00 20 00 00 00 00 00 ; .€...... .....
000015a0h: 00 00 00 00 08 80 00 00 00 00 FF FF 00 00 24 00 ; .....€......$.
000015b0h: 00 00 00 00 00 00 00 00 0C 00 00 00 00 00 FF FF ; ..............
000015c0h: 00 00 28 00 00 00 00 00 00 00 00 00 0E 00 00 00 ; ..(.............
000015d0h: 00 00 FF FF 00 00 2C 00 00 00 00 00 00 00 00 00 ; ....,.........
000015e0h: 05 00 00 00 00 00 FF FF 00 00 30 00 00 00 00 00 ; ........0.....
000015f0h: 00 00 04 0D 05 00 00 00 00 00 FF FF 00 00 34 00 ; ............4.
00001600h: 44 41 54 2A 00 00 00 00 A2 00 00 00 00 00 00 00 ; DAT*....?......
00001610h: 08 0D 05 00 00 00 00 00 FF FF 00 00 38 00 00 00 ; ..........8...
00001620h: 00 00 00 00 00 0D 04 00 00 00 00 00 FF FF 00 00 ; ..............
00001630h: 3C 00 00 00 00 00 00 00 00 00 0F 80 00 00 00 00 ; <..........€....
//补充
主要任务:
1. 各种对象的编译后数据结构分析(主要是win,structre,menu,funciton,uo,比如函数的变量在哪,变量的类型,accesstype,返回值类型等)
2. 从对象角度看:pb中都是对象(structre除外,它保持c的习惯;function除外,它也保持c函数习惯,其他几种都可以看做对象object,凡是对象就有几个要素:a.它的名字就是新类型;2.属性区(共享和实例);3.函数(分外部和局部)与事件;4.控件,比如tab里面放置的子控件;5.局部结构体)
3. 分析要点:a. 各种对象存放编译后数据的框架(结构);b.变量申明和初始值;c. 文字和数字字面量; d.赋值操作; e. 混合运算; f.函数和事件调用;g. 特殊语法分析,如if,for,while,try...catch,throws等;h.sql语法嵌入和变量绑定。
分享到:
相关推荐
不多说了,经典的PB反编译器PBKiller 可以反编译powerbuilder6.5-9.0版本的程序,优秀程序员必备工具 文件列表: PB反编译器PBKiller 1.5.07 破解版\FileList.TXT PB反编译器PBKiller 1.5.07 破解版\kernel.dat PB反...
总之,pbkiller是PowerBuilder开发社区的一个重要工具,它填补了反编译PBD文件的空白,为那些需要理解或维护没有源代码的PowerBuilder应用提供了可能。然而,使用这类工具时,一定要尊重知识产权,遵守相关的法律...
- 分析.PBD文件结构:理解PowerBuilder应用的内部工作原理,包括数据窗口、事件处理、函数和过程等。 - 恢复源代码:将编译后的代码转换为可读的PBL或PBL源代码文件,便于编辑和调试。 - 保留原始格式:好的反编译...
通过分析和运行这个示例,你将更深入地理解PowerBuilder 12.5开发Web Service的具体步骤和技术细节。 总之,PowerBuilder 12.5为开发者提供了一套强大而直观的工具,使得创建和使用Web Service变得简单易行。不论你...
这意味着,无论你手头上的.PBD文件来自哪个年代的PowerBuilder项目,pbkiller都有可能帮助你解析其内部结构和逻辑。 使用pbkiller进行反编译,用户可以查看隐藏在二进制文件背后的源代码,这对于理解已有的业务逻辑...
1. **PB反编译器:** 这类工具如PBDDecompiler和PBD2Source等,它们能够解析PowerBuilder的.PBD文件,并尝试重建源代码。这些工具通常只能提供部分源代码,因为PowerBuilder的编译过程丢失了一些元信息。 2. **调试...
《PowerBuilder案例开发集锦(第二版)》是一本专注于PowerBuilder应用开发的实战书籍,其主要内容涵盖了使用PowerBuilder进行企业级应用系统开发的各种实践案例。PowerBuilder是一款强大的数据库应用程序开发工具,...
总的来说,`Powerbuilder-pbd文字移除與代碼混淆加密器`是一种针对PowerBuilder应用的保护工具,旨在通过移除文字、混淆代码和加密来增加反编译的难度,从而提高代码的安全性。然而,它应该被视为多层安全策略的一...
5.可以直接生成pbl,但有BUG,函数和事件的次序错乱,需在PBL中IMPORT第3点中导出的*.SR*.(如果没有PBL就直接导入,手工工作量相当大,因为PB会提示这个没有那个没有) 6.全面支持PB6\7\8\9\10\10.5(可以随时加入对PB11.0...
标题中的“pb反编译的好工具”指的是PowerBuilder(PB)的应用程序反编译工具,这类工具主要用于解析和理解基于PowerBuilder开发的.pbd或.dll文件。PowerBuilder是一款流行的可视化的面向对象的开发环境,主要用于...
PowerBuilder 反编译工具 ,完美反编译PBD文件,dw可以另存为PBL
4. **bell.pbd**: 这是一个PowerBuilder的数据窗口对象文件,很可能包含了游戏界面的布局和逻辑,数据窗口是PowerBuilder中用于显示和操作数据库数据的组件。 5. **images**: 文件夹,包含了游戏中的各种图片资源,...
powerbuilder-pbd混淆器,代码混淆,加密,防止无意义的解密
总的来说,"pbd to pbl 反编译"是一个涉及到逆向工程和PowerBuilder对象恢复的技术过程,需要谨慎处理,以确保遵循适当的法律和道德规范。对于那些需要理解和修复PowerBuilder应用程序的开发者而言,这是一个重要的...
在PowerBuilder中,为了更好地管理和配置数据库对象,提供了一系列系统表,这些系统表存储了有关数据库结构的信息,包括表、列、显示格式、有效性规则和编辑样式等。 #### 二、PBCatTbl - 数据库中的表 PBCatTbl是...
PowerBuilder是一款强大的数据库应用开发工具,它以其独特的DataWindow控件和可视化编程界面深受程序员喜爱。在这个"PowerBuilder 抽奖程序源码"中,我们可以深入理解如何利用PowerBuilder进行事件驱动编程,以及...
属性设置是 PowerBuilder 开发中的一项重要技能,例如 AppName 和 DisplayName 属性在定义时创建,无法修改。MicroHelpDefault 属性设置默认状态下窗口底部的提示信息;DWMessageTitle 设置运行期间数据窗口的消息...
《PowerBuilder 9.0 PBL文件结构解析》 在PowerBuilder(PB)开发环境中,PBL(PowerBuilder Library)文件是重要的组成部分,它存储了PB应用程序中的所有用户对象,如窗口、表单、控件、函数等。理解PBL文件的内部...
PBKiller,全称为PB反编译器,是一款专为PowerBuilder(PB)开发的逆向工程工具。它针对PB6.7.8.9版本编译的程序进行反编译,使开发者能够查看并理解原本被编译成二进制格式的对象和源代码,从而帮助用户在维护、...
PBKiller V2.5.18是一款专为PowerBuilder(PB)开发的反编译工具,主要用于处理PB10及以下版本生成的PBD、DLL和EXE文件。这款工具的强大之处在于它能够将这些编译后的二进制文件转换回完整的PowerBuilder源代码,这...