pb反编译研究(转)

原文:http://itmed.blog.sohu.com/93681921.html

api hook可以看一下这里
http://www.autodebug.com/

function long LMI_OpenLibrary60(long pbstg_begin,string path,long flag,long l) library 'pbvm60' alias for "LMI_OpenLibrary"

参数1是pbstg_begin的返回,参数2是pbl或pbd路径,3是1,4是0,有兴趣的可以试下参数3、4调换别的值,如果不怕pb狂死的话。
会返回一个libraryhandle(库的句柄,俺命的名)

function long LMI_CloseLibrary60(long libraryhandle) library 'pbvm60' alias for "LMI_CloseLibrary"

参数只有一个就是刚刚的句柄,返回0成功。

function long pbstg_alc(long pbstg_begin,long l,long p) library 'pbvm60'

第一个还是pbstg_begin的返回,第二个是5,第三个是0。顺便说下,这些参数的值是pb调用该函数时候传的,
参数的含义一概不知,而且,还没有到乱试的阶段……,这函数啥意义我也不知道,具体后述

function long LMI_ListEntriesExtended(long libraryhandle,long l) library 'pbvm60'

说实话这函数还不能确定它是两个参数……说白了,现阶段一调这函数似乎就进入了死循环……

基本上pb显示一个pbl或者pbd里边的对象列表调用的函数顺序都是:
LMI_OpenLibrary
pbstg_alc//似乎是分配什么东西,pbstg_begin也有stg,stg到底是什么?shooting game……?
LMI_ListEntriesExtended
LMI_CloseLibrary
也就是说,今天只实现了打开关闭一个库文件……
现在仔细考虑的话,lmi万一是ListManageInteface的话,一切都是绕远啊………………
我现在还是想要不然先解决导入?导入似乎比列表简单些?
列表导入都实现了,然后就差最后一步了,真的能实现么……

 

原理大概是开api hook,截获pb自身如何导入sr*到pbl中,这就解决了libraryimport只能import数据窗的缺陷
至于如何生成sr*……,同样想办法截吧~~
顺便说下截获两个字说起来容易,实质上俺的pb至少非法被关闭30次了……
太难,只能阶段性放上成果,现阶段找到了4个函数
lmi_openlibrary
lmi_libraryinformation//改pbl的注释……
lmi_closelibrary
lmi_createlibrary
其中lmi_createlibrary顾名思义就是创建一个新pbl用的,声明为:
function long LMI_CreateLibrary(long l,string path,long flag) library 'pbvm60'
第一个参数似乎必须写23920744,啥含义我也不知道,反正我机子上写这个就能成功
第二个参数就是要创建的pbl的路径,如:C:\test_pb\pbd2pbl\test.pbl
第三个参数写0吧,别问我为什么……

返回值0是正确,-2是文件已经存在,-19也遇到了,当时是第一个参数写0,今天先到这里吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值