对Andorid逆向工具XXB Demo版本的修改——初尝试
2020-02-16 18:58:00 Author: mp.weixin.qq.com(查看原文) 阅读量:93 收藏

本文为看雪论坛优秀文章
看雪论坛作者ID:Yougar
目前只是删除了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

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

运行命令再修改一下:

最后效果就如我所想,没有了demo弹窗和save功能限制。
- End -

看雪ID:Yougar

https://bbs.pediy.com/user-780633.htm 

* 本文由看雪论坛 Yougar 原创,转载请注明来自看雪社区。

推荐文章++++

CVE-2017-11882理论以及实战样本分析

恶意代码分析之 RC4 算法学习

CVE-2017-0101-Win32k提权分析笔记

ROPEmporium全解

实战栈溢出漏洞

好书推荐

公众号ID:ikanxue
官方微博:看雪安全
商务合作:[email protected]
“阅读原文”一起来充电吧!

文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458303455&idx=1&sn=0df6fe25ab56c08dc9636eab3e6270a5&chksm=b1818b5586f602431b8332d9d0788a7e8d938d35e37d144411644a5d3f8408cd1c46bccab07f#rd
如有侵权请联系:admin#unsafe.sh