本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《
阿里云开发者社区用户服务协议
》和
《
阿里云开发者社区知识产权保护指引
》。如果您发现本社区中有涉嫌抄袭的内容,填写
侵权投诉表单
进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
关键方法使用函数指针的方式调用,默认函数地址是试用版函数地址。
fpdfsdk.dll有导出函数FPDF_UnlockDll函数,此函数传入license key和unlock_code.
当调用此方法, 通过某种变换解密计算序列号, 如果是正式版的序列号,则能够成功解码得到正式版的函数位置
并将正式版的函数地址 设置到函数指针上,诸多限制就被卸掉了。
我只想去除水印。找了一下,1028FB48应该就是Render有关的函数指针位置了。
这个内存位置的默认值指向一个试用版的函数地址,那么Render出来就有水印。
只要将此函数指针设置成正式版的函数地址就可以了。
要得到正式版的函数地址很简单,申请一个试用版的序列号,调用此解锁函数。
在10014BD5处,修改Zero标识位跟踪进入此分支执行(试用版即使有序列号也是不会进入这个分支的),正式版的函数的地址就在eax寄存器中了。
Bingo!
记下来直接改到 1028FB48, 则完全不需要调用解锁函数也可使用无水印Render.