转载

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...