-
-
[原创]FlexLM 11.16版的特点和Patch方法
-
2020-8-13 16:57
8455
-
[原创]FlexLM 11.16版的特点和Patch方法
分析了几个11.16版的守护神,发现它比11.15及以前的版本做了部分改变 (当然直接通过找SIGN%s=的Patch方法仍然有效):
1、 函数l_pubkey_verify一定是位于.textidx段中。在x86版中,IDA分析得到的Arguments一定是24,Locals会有变化,Lengths也在三个数字范围内。X64版中, IDA分析的Arguments一定是44,Locals会有变化,Lengths也在三个数字范围内。

2、 分析发现11.16版本发现该函数的流程图与11.15及之前版本不一样,增加了某些判断。11.15及之前版本该函数是 .textidx段中Lengths是最大的,容易识别,但11.16.版本较少的样本分析发现无此规律。
3、 11.16版本函数l_pubkey_verify的流程图,按照1的提示在.textidx段里查看,函数流程图如下图的准是它。(一共个没几个,很容易识别),找到后Patch最后一个call。另外需要强调的一点是,凡调用函数l_pubkey_verify的那个函数,直接通过F5就可以找到(过滤出)Pubkey在守护神文件中的RVA地址。

4、 11.16版本找不到“case 46”,可以找“case 49”,第一个就是:

5、 双击后在IDA-View窗口里以图形方式查看,顺着“case 49”的红线流程找到第二个call函数(x64版如果没有红线流程就直接跟着蓝线走),该函数就是要直接Patch的函数:


如果你觉得这样找太费神,可以直接按F5后,在伪代码中找到“case 48”及“case 49”,这两个分支紧挨着。“case 48”里面的第一个return函数,也就是“case 49”里的第二个return函数,就是要直接Patch的函数。

该函数流程图的大概样子:

6、 双击该函数,到该函数的头部。直接从头部开始修改为”xor eax, eax”和“retn“
[2023春季班]《安卓高级研修班(网课)》月薪两万班招生中~
最后于 2020-8-13 17:17
被yangmyron编辑
,原因: 改