首页
社区
课程
招聘
[求助]发现 FlexLm v11.16下,patch掉 l_pubkey_verify后,程序 core dump了。。。。
发表于: 2021-4-2 21:24 8768

[求助]发现 FlexLm v11.16下,patch掉 l_pubkey_verify后,程序 core dump了。。。。

2021-4-2 21:24
8768

最近找到了一个新版本的软件,以前版本11.14以前的,按照大家的说法,找到 l_pubkey_verify后,把指令改成 31c0c3 (xor %eax,%eax retq )后,能不验证ECC,给一个 SIGN=3419E4A07DBE 这样的许可即可通过验证。

 

11.16版本后,同样操作,发现 Segmentation fault (core dumped)。

 

不patch l_pubkey_verify,报 status: -8, reason: Bad encryption code

 

请问各位大佬,该如何破呢?谢谢!!


[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

收藏
免费
支持
分享
最新回复 (22)
雪    币: 13055
活跃值: (5768)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

不会玩这个,等大牛来解答
2021-4-3 09:39
0
雪    币: 805
活跃值: (2553)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
         通常情况是找错了 patch 位置,导致函数堆栈失衡,从而出错。楼主,你在 patch 前至少要找到被 patch 函数的入口和出口,看上一眼反汇编代码核实一下对错吧?
2021-4-3 13:06
0
雪    币: 107
活跃值: (200)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不是33 C0 C3吗?
2021-4-3 20:02
0
雪    币: 45
活跃值: (915)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
老伙计 通常情况是找错了 patch 位置,导致函数堆栈失衡,从而出错。楼主,你在 patch 前至少要找到被 patch 函数的入口和出口,看上一眼反汇编代码核实一下对错吧?
谢谢老伙计指点,确认找到了l_pubkey_verify的位置,就是在函数第一条指令处,修改为 31c0c3,以前版本没有问题,现在11.16就不行了,初步对比了一下新旧版本,l_pubkey_verify入口指令没有区别。。。
2021-4-3 20:56
0
雪    币: 45
活跃值: (915)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
wztuxw 不是33 C0 C3吗?
貌似31c0c3也是一样的,指令代码都是 xor %eax,%eax retq
2021-4-3 20:57
0
雪    币: 45
活跃值: (915)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
在老伙计的指点下,对比了一下11.14和11.16两个版本的 l_pubkey_verify,反汇编出来的指令一摸一样,看来问题,出在 返回后的其它函数导致的core dump,11.14  31c0c3直接返回可以,11.16版本下, 31c0c3 直接返回的话,可能导致后续函数的执行出现了coredump。。。。
2021-4-3 21:21
0
雪    币: 45
活跃值: (915)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8

上传的附件:
2021-4-3 21:24
0
雪    币: 45
活跃值: (915)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
贴图重复了。。。
2021-4-3 21:25
0
雪    币: 6878
活跃值: (4413)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10

push    r15
mov     r15, rcx
push    r14
mov     r14d, r8d
push    r13
push    r12
mov     r12d, edx
push    rbp
push    rbx
mov     rbx, rdi

最后于 2021-4-4 22:51 被厉害了我的谁编辑 ,原因:
2021-4-4 22:39
0
雪    币: 45
活跃值: (915)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
厉害了我的谁 push    r15mov      ...
厉害哥,谢谢指点,请问,这段指令加在哪里?加在 l_pubkey_verify 最前面吗?
2021-4-5 00:57
0
雪    币: 6878
活跃值: (4413)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我手上刚好有个 64 bit Linux flexnet v11.16.2.0 的文件, 这是它的 l_pubkey_verify 开始的几个指令, 给你参考或比对一下。
2021-4-5 08:12
0
雪    币: 45
活跃值: (915)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
厉害了我的谁 我手上刚好有个 64 bit Linux flexnet v11.16.2.0 的文件, 这是它的 l_pubkey_verify 开始的几个指令, 给你参考或比对一下。
哦哦,谢谢厉害哥,我这个是linux版的 V11.16.5.0,看起来这个函数的差异还挺大的呢?单看这个函数,在我这个软件里,和以前的11.14.0.1版本的没有差异,我逐行对比了
2021-4-5 11:49
0
雪    币: 45
活跃值: (915)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
厉害了我的谁 我手上刚好有个 64 bit Linux flexnet v11.16.2.0 的文件, 这是它的 l_pubkey_verify 开始的几个指令, 给你参考或比对一下。
厉害兄,请问:如果采用替换pubkey,生成自己的license,是不是就不用patch  l_pubkey_verify 了呢?
以前,我一般采用patch l_pubkey_verify 之后,采用12位SIGN的方式,目前版本11.16后,只一个办法不好用了,折腾了几天没有任何进展,盼厉害兄指点迷津,事成之后,必有致谢!!
2021-4-5 22:45
0
雪    币: 6678
活跃值: (7380)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
daemonix 哦哦,谢谢厉害哥,我这个是linux版的 V11.16.5.0,看起来这个函数的差异还挺大的呢?单看这个函数,在我这个软件里,和以前的11.14.0.1版本的没有差异,我逐行对比了[em_10]

厉害兄指的位置是对的。我一直观察到版本v11.17.2(目前最新时V11.18.0 , https://community.flexera.com/t5/FlexNet-Publisher-News/Product-News-FlexNet-Publisher-2021-R1-11-18-0-is-Now-Available/ba-p/179201/jump-to/first-unread-message),该函数没明显变化。已私信你

最后于 2021-4-6 10:03 被yangmyron编辑 ,原因:
2021-4-6 09:42
0
雪    币: 6678
活跃值: (7380)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
16
daemonix 厉害兄,请问:如果采用替换pubkey,生成自己的license,是不是就不用patch l_pubkey_verify 了呢? 以前,我一般采用patch l_pubkey_verify 之后, ...
替换pubkey生成自己的license就不需要patch了。但你说的采用patch l_pubkey_verify 之后,采用12位SIGN的方式验证,只是把原本的ECC验证强制改为Flexlm的一般验证,跟真正的pubkey替换还不是一码事
2021-4-6 09:46
0
雪    币: 45
活跃值: (915)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
yangmyron 替换pubkey生成自己的license就不需要patch了。但你说的采用patch l_pubkey_verify 之后,采用12位SIGN的方式验证,只是把原本的ECC验证强制改为Flexlm的一 ...
谢谢 yangmyron 兄的回复,守护神这边,貌似没有问题,我给的 12位 SIGN license在11.14和11.16下都能够验证通过,应用端申请许可证时,守护神也有应答 OUT /IN,我感觉还是在应用端的问题,不patch正常报告 status: -8, reason: Bad encryption code,patch 31c0c3之后运行就coredump,我能找到 l_pubkey_verify的位置,确任没有patch错地方,并且在11.14下,应用端patch是正确的。
麻烦 yangmyron 判断一下,问题可能出在哪里呢?
2021-4-6 11:09
0
雪    币: 6678
活跃值: (7380)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
18
daemonix 谢谢 yangmyron 兄的回复,守护神这边,貌似没有问题,我给的 12位 SIGN license在11.14和11.16下都能够验证通过,应用端申请许可证时,守护神也有应答 OUT /IN,我感 ...
你把安装好的程序打包放百度网盘上发给我看看。守护神有应答说明服务端没问题,而客户端千差万别,可能有各种暗桩,不分析怎么可能知道问题在哪
2021-4-6 11:27
0
雪    币: 45
活跃值: (915)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
yangmyron 你把安装好的程序打包放百度网盘上发给我看看。守护神有应答说明服务端没问题,而客户端千差万别,可能有各种暗桩,不分析怎么可能知道问题在哪
已发,请查收,多谢!
2021-4-6 14:30
0
雪    币: 6678
活跃值: (7380)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
20
楼主误导大家了,根本不是V11.16版,是较早的v11.3版
2021-4-6 15:44
0
雪    币: 45
活跃值: (915)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
yangmyron 楼主误导大家了,根本不是V11.16版,是较早的v11.3版
高人,惭愧~~~我是用 lmver  lmgrd 看的版本号
2021-4-6 16:48
0
雪    币: 101
活跃值: (743)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
22
11.16 patch函数头部会导致程序运行保错。可以在函数里面改跳转流程。
2021-8-3 07:50
0
雪    币: 1191
活跃值: (4887)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
23

可以试试这么改

public lc_checkout

lc_checkout proc near


var_28= qword ptr -28h

var_20= dword ptr -20h

var_1C= dword ptr -1Ch

var_18= qword ptr -18h

var_10= qword ptr -10h

var_8= qword ptr -8


; __unwind {

push    rbp

mov     rbp, rsp

mov     [rbp+var_8], rdi

mov     [rbp+var_10], rsi

mov     [rbp+var_18], rdx

mov     [rbp+var_1C], ecx

mov     [rbp+var_20], r8d

mov     [rbp+var_28], r9

mov     eax, 0

pop     rbp

retn

; } // starts at 40052D

lc_checkout endp


最后于 2021-8-16 00:13 被ericyudatou编辑 ,原因:
2021-8-16 00:12
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册