目前只是删除了demo版本提示框,去除了demo版本无法使用保存功能的限制。之前没有逆向破解过基于JVM的应用,这里记录下使用的工具和方法。本文仅用于学习交流。
第一次运行demo,需要生成key才能使用。由于是demo版本,因此每次运行都会弹出demo版本限制提示窗口:让界面停留在此,用arthas attach到运行的demo上,通过查看函数调用栈找到弹这个窗口的函数:界面一般是运行在主线程中,这里查看main线程的函数调用栈:从打印出的函数调用栈中,我看到了可能的弹窗函数,使用jad反编译这个class,分析其代码:好像是这个函数显示的弹窗,为了确认,再分析这个函数的调用者:看到这些就确定是这个函数了,只需要删除相关的代码就可以去除弹窗,删除后重新编译:可以使用redefine命令直接热patch上去查看修改后的效果,但这个函数由于调用时机在我们attach之前,因此这里不好用这种方式,可以采用javaagent的方式,下面再写。接下来分析保存功能的限制,打开一个apk,再点击save,会出现限制功能提示框:发现调用了另外一个像是判断注册码的函数,反编译看看:这个文件里面有很多通过build_type判断的函数,这次只是初尝试,因此这里我改的面比较小,我只是改了一个full build函数的返回值,改成了true,之后再重新编译后,热patch上去:
这里我使用 java agent 替换目标class字节码的方式来patch这两处函数,处理过程就是匹配目标class的名字,然后返回patch后的字节码,替换的字节码就是实验过程中热补丁验证过的。这里我把字节码转换为base64编码然后写死到代码里了。代码如下:最后效果就如我所想,没有了demo弹窗和save功能限制。看雪ID:Yougar
https://bbs.pediy.com/user-780633.htm
* 本文由看雪论坛 Yougar 原创,转载请注明来自看雪社区。好书推荐
文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458303455&idx=1&sn=0df6fe25ab56c08dc9636eab3e6270a5&chksm=b1818b5586f602431b8332d9d0788a7e8d938d35e37d144411644a5d3f8408cd1c46bccab07f#rd
如有侵权请联系:admin#unsafe.sh