对andorid逆向工具XXB Demo版本的修改--初尝试
2020-02-09 14:23:28 Author: bbs.pediy.com(查看原文) 阅读量:100 收藏

[原创]对andorid逆向工具XXB Demo版本的修改--初尝试

17小时前 266

[原创]对andorid逆向工具XXB Demo版本的修改--初尝试

目前只是删除了demo版本提示框,去除了demo版本无法使用保存功能的限制。之前没有逆向破解过基于JVM的应用,这里记录下使用的工具和方法。本文仅用于学习交流。

目标环境信息

jdk 1.8

XXB demo-3.11.1

arthas 3.1.7

jd-cli 1.0.1.Final

分析过程

第一次运行demo,需要生成key才能使用。由于是demo版本,因此每次运行都会弹出demo版本限制提示窗口:


让界面停留在此,用arthas attach到运行的demo上,通过查看函数调用栈找到弹这个窗口的函数:


查看所有线程:


界面一般是运行在主线程中,这里查看main线程的函数调用栈:


 从打印出的函数调用栈中,我看到了可能的弹窗函数,使用jad反编译这个class,分析其代码:



好像是这个函数显示的弹窗,为了确认,再分析这个函数的调用者:



看到这些就确定是这个函数了,只需要删除相关的代码就可以去除弹窗,删除后重新编译:


可以使用redefine命令直接热patch上去查看修改后的效果,但这个函数由于调用时机在我们attach之前,因此这里不好用这种方式,可以采用javaagent的方式,下面再写。

接下来分析保存功能的限制,打开一个apk,再点击save,会出现限制功能提示框:


与上面的方法相同我们如法炮制:

找到了可能的函数,反编译看看:


 发现调用了另外一个像是判断注册码的函数,反编译看看:


这个文件里面有很多通过build_type判断的函数,这次只是初尝试,因此这里我改的面比较小,我只是改了一个full build函数的返回值,改成了true,之后再重新编译后,热patch上去:



 看看效果:


好的,可以了。

编写破解agent

这里我使用javaagent替换目标class字节码的方式来patch这两处函数,处理过程就是匹配目标class的名字,然后返回patch后的字节码,替换的字节码就是实验过程中热补丁验证过的。这里我把字节码转换为base64编码然后写死到代码里了。代码如下:


运行命令再修改一下:


最后效果就如我所想,没有了demo弹窗和save功能限制。最后附的javaagent,如果你想看看最后完整的代码可以逆向这个jar包看看。

2020安全开发者峰会(2020 SDC)议题征集 中国.北京 7月!


文章来源: https://bbs.pediy.com/thread-257577.htm
如有侵权请联系:admin#unsafe.sh