`
buliedian
  • 浏览: 1243763 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

powerbuilder pbd文件保护方式-pb防止反编译研究

阅读更多

pb中编译后的变量名是于明码方式放置并形成一个列表。如:

ls_111.ls_222.ls_333.ls_444

如上,"."代表的是0x00,就是分隔符号。

紧跟变量列表后面,有一个数据结构来表明变量的顺序(也就是变量ID:ls_1就是0,ls_2就是1,依次类推,也就是说,对vm而言,变量的名字无关紧要,学过编程我们也晓得,变量只是有类型的地址段而已。)和类型。而它只标明变量的开始位置,反编译软件就是取得开始位置,结束位置为0x00,所以就能把代码中的变量名显示出来。

最新Powerbuilder混淆器加密器下载:

http://chengg0769.download.csdn.net/

其表达式在对象内引用时,实际上对变量名是采用变量ID。如1A 01 05,代表引用ID为5的变量。

以下贴的就是变量列表部分

000014f0h: 00 20 20 20 20 20 20 20 00 70 61 72 6D 31 00 70 ; . .parm1.p
00001500h: 61 72 6D 32 00 61 61 6161 61 61 61 61 61 61 61 ; arm2.aaaaaaaaaaa
00001510h: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 ; aaaaaaaaaaaaaaaa
00001520h: 61 61 61 00 61 61 61 62 62 62 62 62 62 62 62 62 ; aaa.aaabbbbbbbbb
00001530h: 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 ; bbbbbbbbbbbbbbbb
00001540h: 62 62 00 6C 73 5F 61 61 61 61 61 61 61 61 61 61 ; bb.ls_aaaaaaaaaa
00001550h: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 00 ; aaaaaaaaaaaaaaa.

那我们就可以采用这样的方式来防止反编译:

1. 把变量位置的字符全部抹掉为0x00.这样反编译出来就无法显示。

000014f0h: 00 20 20 20 20 20 20 20 00 70 61 72 6D 31 00 70 ; . .parm1.p
00001500h: 61 72 6D 32 00 00 00 00 00 00 00 00 00 00 00 00 ; arm2............
00001510h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00001520h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00001530h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00001540h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00001550h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................

反编译后:
integer
long
string = "123"


integer(?????)
long(?????)

2. 把中间部分字符改为0x00,使得反编译时字符自动截取:

000014f9h: 70 61 72 6D 31 00 70 61 72 6D 32 00 61 61 61 00 ; parm1.parm2.aaa.
00001509h: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 ; aaaaaaaaaaaaaaaa
00001519h: 61 61 61 61 61 61 61 61 61 61 00 61 61 61 00 62 ; aaaaaaaaaa.aaa.b
00001529h: 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 ; bbbbbbbbbbbbbbbb
00001539h: 62 62 62 62 62 62 62 62 62 00 6C 73 5F 61 61 61 ; bbbbbbbbb.ls_aaa
00001549h: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 ; aaaaaaaaaaaaaaaa
00001559h: 61 61 61 61 61 61 00 ; aaaaaa.

反编译后:

integer aaa
long aaa
string ls_aaaaaaaaaaaaaaaaaaaaaaaaa = "123"


aaa = integer(ls_aaaaaaaaaaaaaaaaaaaaaaaaa)
aaa = long(ls_aaaaaaaaaaaaaaaaaaaaaaaaa)
return (aaa + aaa)

3. 也可以改其他字符,如127(7F),或者0x01-0x20和0x1F这些字符都可以,因为无法正常查看。利用文件控件包括notepad无法正常显示的缺点使得代码不可读。

000014f0h: 00 20 20 20 20 20 20 20 00 70 61 72 6D 31 00 70 ; . .parm1.p
00001500h: 61 72 6D 32 00 01 02 03 04 05 06 07 08 09 0A 0B ; arm2............
00001510h: 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B ; ................
00001520h: 1C 1D 1E 00 61 61 61 62 62 62 62 62 62 62 62 62 ; ....aaabbbbbbbbb
00001530h: 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 ; bbbbbbbbbbbbbbbb
00001540h: 62 62 00 6C 73 5F 61 61 61 61 61 61 61 61 61 61 ; bb.ls_aaaaaaaaaa
00001550h: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 00 ; aaaaaaaaaaaaaaa.

反编译后:

long aaabbbbbbbbbbbbbbbbbbbbbbbbbbb
string ls_aaaaaaaaaaaaaaaaaaaaaaaaa = "123"

declare

cursor for
;

= integer(ls_aaaaaaaaaaaaaaaaaaaaaaaaa)
aaabbbbbbbbbbbbbbbbbbbbbbbbbbb = long(ls_aaaaaaaaaaaaaaaaaaaaaaaaa)
return (

+ aaabbbbbbbbbbbbbbbbbbbbbbbbbbb)

当然要说清楚,从pbkiller上拷贝来的代码,贴在ue中还是可以用hex方式查看的。

4. 改成关键字,如if...then ,while,create,open,destroy等。这样使得代码无法阅读。

000014f0h: 00 20 20 20 20 20 20 20 00 70 61 72 6D 31 00 70 ; . .parm1.p
00001500h: 61 72 6D 32 00 69 66 20 74 75 72 65 20 74 68 65 ; arm2.if ture the
00001510h: 6E 0D 0A 09 69 66 20 74 72 75 65 20 74 68 65 6E ; n...if true then
00001520h: 0D 0A 09 09 09 69 66 20 74 72 75 65 20 74 68 65 ; .....if true the
00001530h: 6E 0D 0A 0D 0A 62 62 62 62 62 62 62 62 62 62 62 ; n....bbbbbbbbbbb
00001540h: 62 62 00 6C 73 5F 61 61 61 61 61 61 61 61 61 61 ; bb.ls_aaaaaaaaaa
00001550h: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 00 ; aaaaaaaaaaaaaaa.

反编译后:
integer if ture then
if true then
if true then

bbbbbbbbbbbbb
long if true then

bbbbbbbbbbbbb
string ls_aaaaaaaaaaaaaaaaaaaaaaaaa = "123"

if ture then
if true then
if true then

bbbbbbbbbbbbb = integer(ls_aaaaaaaaaaaaaaaaaaaaaaaaa)

if true then

bbbbbbbbbbbbb = long(ls_aaaaaaaaaaaaaaaaaaaaaaaaa)
return (if ture then
if true then
if true then

bbbbbbbbbbbbb + if true then

bbbbbbbbbbbbb)

当然,类似的,也可以把ls_111 = "abc"通过修改ls_111部分。类似c的宏替换一样,把它混淆成:

aaa=100

bbb=200

ccc = "abc"这样。只要把字符串"ls_111"通过ue修改为“aaa=100 0x0A回车 bbb=200 0x0A回车 ccc ="即可。

*我现在还没仔细研究pbd混淆器工作原理。但是这个方法的确可以混淆代码的。除非反编译器把字串中的关键字和空格,不可见字符干掉(就是这个方法),不过非常麻烦。

但是,反编译软件其实也可以把这些不可显示字符变为例如:ls_1,ls_2...ls_n这样的无意义变量代号。只是可读性就不好了。对于含部分不可显示字符或者0x0A,0x0D这样的影响显示的字符,它也可以替换之(只保留字母和数字等可显示字符)。

*这个世界总是有矛又有盾的。因为只要是可以再现和有规律可行的事物,人就可以分析。

分享到:
评论

相关推荐

    pb 反编译的好工具

    标题中的“pb反编译的好工具”指的是PowerBuilder(PB)的应用程序反编译工具,这类工具主要用于解析和理解基于PowerBuilder开发的.pbd或.dll文件。PowerBuilder是一款流行的可视化的面向对象的开发环境,主要用于...

    PB程序反编译流程

    - **PB反编译精灵**:这是一款功能强大的PB反编译工具,支持多种版本的PB文件格式。 - **PowerBuilder Decompiler**:这款工具提供了图形界面,便于用户操作,并支持多种PB文件的反编译。 - **PBDecompiler**:这是...

    pb反编译功能

    PB反编译功能是针对PowerBuilder(PB)应用程序的一种逆向工程工具,它允许开发者查看并理解原始的源代码逻辑,即使源代码丢失或者不可用。在标题和描述中提到的"pbkill2.5.1.8"是一款PB反编译软件的版本号,表明这...

    PB修改器,PB反编译,powerbuilder反编译,pb写的软件反编译源码,pb反编译大师,powerbuilder源码下载

    PB修改器,PB反编译,powerbuilder反编译,pb写的软件反编译源码,pb反编译大师,powerbuilder源码下载。最新测试版:PB DeCompiler_V2023.01.01_DEMO.rar 1). 反编译powerbuilder编译后的pbd文件,支持版本5,6.5,...

    pb_killer(pbd反编译工具)

    PB_KILLER是一款专用于反编译PowerBuilder(PB)应用程序的工具,主要处理PowerBuilder的.pbd文件。PowerBuilder是一种流行的、基于事件驱动的编程环境,尤其在企业级应用开发中广泛使用。PBD文件是PowerBuilder的...

    Powerbuilder-pbd文字移除與代碼混淆加密器

    总的来说,`Powerbuilder-pbd文字移除與代碼混淆加密器`是一种针对PowerBuilder应用的保护工具,旨在通过移除文字、混淆代码和加密来增加反编译的难度,从而提高代码的安全性。然而,它应该被视为多层安全策略的一...

    pb6.PBD反编译工具.rar

    PB6.PBD反编译工具是一款专为PowerBuilder 6.0开发的工具,用于将PBD文件(PowerBuilder的编译后库文件)转换回源代码,以便开发者可以查看或恢复丢失的源代码。PowerBuilder是Sybase公司(现为SAP所有)推出的一种...

    反编译pbd的软件

    DePB是一款专为PowerBuilder开发的反编译工具,它能够解析PBD文件,并尝试恢复出尽可能接近原始PowerScript的代码。使用DePB,用户可以查看函数定义、变量声明、事件处理等信息,尽管反编译的结果可能不如原始源代码...

    PBD文件查看DW

    标题中的"PBD文件查看DW"指的是使用特定工具或方法来查看PowerBuilder(PB)的PBD文件中的DataWindow对象。PBD文件是PowerBuilder应用程序的编译后二进制文件,其中包含了各种对象如窗口、菜单、数据窗口等的定义。...

    处理PB编译后的pbd,exe,dll文件。

    标题中的“处理PB编译后的pbd,exe,dll文件”指的是处理PowerBuilder(PB)编译生成的三种类型的文件。在PowerBuilder开发环境中,`.pbd`是工程数据文件,包含了源代码的信息;`.exe`是应用程序可执行文件;`.dll`则...

    Pb的反编译大师

    标题中的“Pb的反编译大师”指的是PowerBuilder(简称PB)的反编译工具。PowerBuilder是一种基于事件驱动的编程环境,主要用于开发企业级的数据库应用系统。反编译工具则是用来将已编译的PB应用程序(如EXE或PBD文件...

    PowerBuilder反编译,不需要注册

    但有时候,为了学习、研究或者修复已有的PowerBuilder应用程序,可能需要对这些二进制文件进行反编译。 "PowerBuilder反编译,不需要注册"这一主题指的是存在一种工具或技术,可以将编译后的PowerBuilder应用程序...

    powerbuilder反编译

    然而,由于PowerBuilder编译的.PBD文件是二进制格式,其源代码通常对外部隐藏,这就引出了“PowerBuilder反编译”的需求。 “PowerBuilder反编译”是指通过特定工具将.PBD文件转换回源代码,以供学习、分析或修复旧...

    PowerBuilder反编译的工具

    1. **PB反编译器:** 这类工具如PBDDecompiler和PBD2Source等,它们能够解析PowerBuilder的.PBD文件,并尝试重建源代码。这些工具通常只能提供部分源代码,因为PowerBuilder的编译过程丢失了一些元信息。 2. **调试...

    pbd to pbl 反编译

    3. 兼容性问题:旧版的PBD文件可能无法在新版本的PowerBuilder中直接打开,反编译可以帮助解决这个问题。 然而,需要注意的是,反编译并不总是可行或者合法的。它可能会违反软件的许可协议,特别是当PBD文件来自...

    PB反编译工具

    PB反编译工具,全称为PowerBuilder反编译工具,是专门针对使用Sybase PowerBuilder开发的应用程序设计的一款辅助工具。PowerBuilder是一款流行的可视化编程环境,用于构建数据库应用程序。PBD文件是PowerBuilder生成...

    PBD加密,防止被反编译(注意 :360会报木马,纯属误报)

    对于PB(PowerBuilder)开发者来说,PBD文件是他们的源代码编译后的中间产物,包含了程序的关键逻辑和结构,因此,防止PBD文件被反编译就显得尤为重要。标题和描述提到的"PBD加密"就是一种这样的技术,旨在保护PB...

    PB反编译软件

    PB反编译软件是针对PowerBuilder(PB)开发的应用程序设计的专业工具,它主要用于解析和显示PBL(PowerBuilder Library)或PBD(PowerBuilder Debug)文件中的源代码。PowerBuilder是一款流行的、基于事件驱动的可视...

    P B 反 编 译 工 具

    "PB反编译"再次强调了这个工具的主要功能,即反编译PowerBuilder的应用程序。 在压缩包文件名称列表中,我们只看到“PB反编译”。这可能是指实际的反编译工具的可执行文件或者是一套包含该工具的文件集。通常,这样...

Global site tag (gtag.js) - Google Analytics