转载

android加固系列—4.加固前先学会破解,无源码调试apk

【版权所有,转载请注明出处。】

项目关键java代码为,将tv设置为从jni读取的字符串,这里的破解内容是直接从apk动态调试修改最终显示在tv里的字符内容

android加固系列—4.加固前先学会破解,无源码调试apk

1.工具介绍

Apktool ,反编译源码用

Android studio+smalidea 插件,动态调试用

2.准备工作

A. 配置插件

下载插件smalidea ,地址 https://bitbucket.org/JesusFreke/smali/downloads

这个 android加固系列—4.加固前先学会破解,无源码调试apk

下载完成后,打开android studio 的 Settings | Plugins ,点击 android加固系列—4.加固前先学会破解,无源码调试apk 选中下载好的zip压缩包。并apply 。

此步骤的目的是让 android studio 能识别 smali 代码,并能正常下断点。

B. 反编译 apk

下载 apktool 并反编译 apk

android加固系列—4.加固前先学会破解,无源码调试apk

3.动态调试

首先在 android studio 新建一个项目,然后把刚才反编译的 smali 源码

android加固系列—4.加固前先学会破解,无源码调试apk

全部拷到项目的app | src | main | java 下,把这个目录下之前的全部删除。

android加固系列—4.加固前先学会破解,无源码调试apk

在MainActivity$1 文件的这里下个断点,如下图

android加固系列—4.加固前先学会破解,无源码调试apk

接下来先以debug 模式启动程序,注意,是在手机上启动。

如果你手机上有这些选项,设置 |  开发者选项  |  选择调试应用(选择 crackme ) |  等待调试器(勾选),

然后就可以直接点击程序图标,会出现 Waiting For Debugger 对话框。

如果手机上没有这些选项,可以用 adb 命令的方式启动,先从反编译的 androidmanifest.xml 中找到对应的包名 com.example.crackme 和主 activity 名 MainActivity 。然后 cmd 窗口输入

adb shell am start -D -n com.example.crackme/.MainActivity

android加固系列—4.加固前先学会破解,无源码调试apk

手机上出现Waiting For Debugger 对话框。

这时打开 as 的 android加固系列—4.加固前先学会破解,无源码调试apk ,大概等待两三秒就会出现

android加固系列—4.加固前先学会破解,无源码调试apk

然后再点击Run | Edit Configurations ,新建一个 Remote 并起码假设 crack ,填写端口为上图的 com.example.crackme 对应的端口 8700 ,选择 source using module ’s classpath 为我们之前创建的项目,点击 OK

现在终于可以开始调试了,点击 Run | Debug  ‘crack’,注意一定要关闭其他 IDE 以防止端口占用,否则会出现类似下面的错误

android加固系列—4.加固前先学会破解,无源码调试apk

程序已经调试起来了,因为我们设断点的地方需要先点击一下按钮“检测是否被crack”,停在了断点处

android加固系列—4.加固前先学会破解,无源码调试apk

这就和java 断点调试差不多了,可以 watch 寄存器 v0,v1,v2 等,这里 v1 接收的是从 jni 层返回的字符串

这里我们只需要把最后程序界面的文字显示成 huaxiaozhou 就可以了, 找到textView 设置的从 jni 层返回的字符串

android加固系列—4.加固前先学会破解,无源码调试apk

对 mTransformed 右键 Set Value ,在双引号内输入 huaxiaozhou 并敲回车键,会出现等待框

android加固系列—4.加固前先学会破解,无源码调试apk

然后此变量的值就变了,这时候点击 Resume 或 stop

android加固系列—4.加固前先学会破解,无源码调试apk

手机界面上就显示huaxiaozhou 了。

【 项目地址 】

【 smalidea地址 】

原文  http://www.cnblogs.com/joey-hua/p/5138585.html
正文到此结束
Loading...