样本是在某个群里下载的,当时是有人发出来找人帮忙修改下,我是想练练手就下载下来开始修改。

首先拿到应用先看了下是加壳了,腾讯的壳,然后安装看了下需要修改的地方。

需求就是改一下qq群:

Android 加固脱壳 安卓脱壳_安卓逆向


Android 加固脱壳 安卓脱壳_Android 加固脱壳_02


开始动手:

一、脱壳拿到dex文件

我这里直接使用脱壳机脱壳拿到了dex文件,简单粗暴。

二、反编译apk

用apktool反编译apk,得到反编译后的工程的文件夹。

三、修改AndroidManifest.xml

application标签下的com.tencent.StubShell.TxAppEntry替换成应用原来的com.e4a.runtime.android.E4Aapplication。

然后这个meta-data标签就可以删掉了。

Android 加固脱壳 安卓脱壳_数据_03


这个是e4a类的应用,这里的入口activity也可以改一下,把标签替换到下面来,e4a类主界面就是包名+主窗口这个activity。

Android 加固脱壳 安卓脱壳_数据_04


四、修改代码

e4a类应用基本都比较简单,包结构底下就那么几个类,直接分析了不用找什么关键字了。

Android 加固脱壳 安卓脱壳_安卓逆向_05


这还有个判断是不是盗版app,这里重打包的话估计还要过这个校验,然后还有个抓包检出可以不用管我们这里不需要抓包。

Android 加固脱壳 安卓脱壳_安卓逆向_06

Android 加固脱壳 安卓脱壳_数据_07


这里直接就看到群号了,真的都不需要怎么找。。。

这里的群号是解析联网获取的数据,我们直接给它设定个值就行了,不用管它联网获取是啥。

Android 加固脱壳 安卓脱壳_Android 加固脱壳_08


打开主窗口.smali,直接加代码const-string/jumbo v1, "12345678"给群号设置成“12345678”(随便写个号),这样群号就改好了,很简单。

Android 加固脱壳 安卓脱壳_数据_09


以为到这里重打包就完了么,没这么快,前面说到过还要过它的校验。就几个判断直接改下if的条件跳过就好了或者直接把这些代码全删了,想法还是优先简单粗暴解决,结果是最后能运行但是没有上面我们贴的动态的界面,说明这种简单粗暴的方法解决不了。。ok继续看问题出在哪

Android 加固脱壳 安卓脱壳_Android 加固脱壳_10


找到了问题的关键“文本”,这里必须要联网获取到数据才能运行到qq群那个界面,这个文本的值又是联网必须的参数,文本是前面几个判断里面的拿到的,跳过了那些判断的模块就拿不到正确的文本,也就是联网参数不对。

Android 加固脱壳 安卓脱壳_Android 加固脱壳_11


找到了问题就好办了,直接hook大法。找它的调用链直接hook拿数据。

这样一看就比较清晰了,就是取app信息这里拿到的参数,直接改这个方法的返回数据,获取该取指定文本2的数据也是一样的,再或者直接改联网参数,把代码里面的文本[0]文本[1]什么的直接改成它对应的值。

Android 加固脱壳 安卓脱壳_应用破解_12


我这里是改的指定文本2,把它的返回值改成了上面hook到的数据。

Android 加固脱壳 安卓脱壳_安卓逆向_13


五、重新编译,签名就完成了。