首页
社区
课程
招聘
SI ObjectBrowser 逆向分析
发表于: 2025-5-16 10:03 2159

SI ObjectBrowser 逆向分析

2025-5-16 10:03
2159

SI ObjectBrowser是一款使用delphi编写的oracle操作工具,首次接触这个工具是2007年,从日本客户手中拿到的,不得不说,性能是真的强,就连后面oracle官方出的工具都不行。


这款软件是日本一家公司开发的,曾经也有过中文版,里面广告满天飞。后来查了一下,12以后再没有官方中文版了,主要是oracle本身只适合银行等大型企业,占有率已经明显不如mysql和postgres了。前两天突然想试试去破解它的注册逻辑,可能是日本盗版没有那么严重吧,软件几乎没有对注册做任何防护。


本文中提到的内容仅用于对汇编、逆向、注册算法的学习,不提供任何注册破解工具。


本文以OB11为例,IDA对于delphi2007的函数解析更精准。


首先,按照惯例,查壳,

无壳,delphi2006/2007编写。

打开IDA,由于整个程序只有一个exe,逻辑全在一个文件里,IDA加载要一段时间。

加载完搜索Tfrm,这个是delphi的界面事件前缀。


登录按钮事件对应的是TfrmRegist_actCommitExecute

查看IDA代码,F5转为C代码

代码内容比较多,sub_52D3BC是检查界面输入是否为空,sub_7179AC为弹窗,可以理解为MessageBox,其它接口下面具体分析。


分析上面代码逻辑:


1、检测当前登录用户是否是管理员,如果不是则报错。


2、检查ProductNo、ProductKey是否为空,为空则报错


3、检查License認証Key是否为空,为空时调用sub_7242FC,如果返回1则报错。sub_7242FC的逻辑会在后面说明


4、调用sub_7245F8,返回0则报错,逻辑在后面会详细说明


5、调用sub_722884获取硬件信息,后面详细说明


6、调用sub_72307C校验license


7、注册信息写入注册表


接下来,我们看一下sub_7245F8的逻辑

具体逻辑如下:


1、ProductKey需要以OB-开头。


2、调用sub_7242A8,判断OB-后面的第4-6位是否是数字,是数字则为旧版本,新旧版本拼接字符串不同,我们以新版本为例,拼接字符串即为"OB11-del2009ent" + ProductNo + "usj"


3、拼接后的字符串间隔8位做异或运算,结果保存在2-1位。并加算每一位的和,结果保留最低1字节,C代码如下

计算结果的低5字节转为16进制字符串。

4、取Key第4-9字节,调用sub_722230进行计算,sub_722230的逻辑转为C代码如下

计算结果转为16进制字符串。


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2025-5-16 10:04 被阿捏利编辑 ,原因:
收藏
免费 8
支持
分享
最新回复 (1)
雪    币: 22
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
请问大佬具体是什么职业?
2025-7-14 00:33
0
游客
登录 | 注册 方可回帖
返回