[原创]针对FlexLM V11.11以上版本的ECC Patch方法
在本论坛里看到部分朋友对FlexLM V11.11以上版本的ECC Patch的方法和步骤感到困惑,认为老方法可能不好使了。通过我的研究发现V11.11以上版本需要Patch两个地方才能达到任意许可都不需要验证的效果。第一个地方大神们早就给出了方法,就是Patch函数l_pubkey_verify的返回值;第二个地方有部分坛友提到,但没有总结出好的定位办法。我就不谈原理,直接把两个Patch地址的定位方法做一总结,与大家分享!
工具材料:IDA Pro V7.0 (含插件Keypatch), UltraEdit
参考资料:各位大神在本论坛的神贴,不再一一列举
第一个地方:
(Patch函数l_pubkey_verify的返回值, 全文参考附件文档)
第二个地方:
1) 在IDA中查找字符串“case 46“,一般会找到5个左右。
2)双击每一个找到的“case 46“,在小Graph Overview窗口观察显示,细长型的那个才是我们要的,这点很重要!而且在大IDA-View窗口能同时看到附近有”case 47“的存在,一般对应上面找到的第二个“case 46“(不排除有例外情况)。
3)在大IDA-View窗口拖动流程图,沿“case 46“的绿色分支观察,其中有一个call调用的函数。沿“case 47“的的红色再到绿色分支中也有call调用这个函数。这个函数就是我们要Patch的目标函数。
4)双击该函数,到该函数的头部。直接从Push ebp开始修改为”xor eax, eax”和“retn“。(在x64里,因为没有Push语句,直接从mov语句开始修改)
5)利用IDA的Production File生成dif文件,用UltraEdit修改相应的字节值即完成Pacher。
