android加固系列—4.加固前先学会破解,无源码调试apk
【版权所有,转载请注明出处。出处:http://www.cnblogs.com/joey-hua/p/5138585.html】
项目关键java代码为,将tv设置为从jni读取的字符串,这里的破解内容是直接从apk动态调试修改最终显示在tv里的字符内容

1.工具介绍
Apktool,反编译源码用
Android studio+smalidea插件,动态调试用
2.准备工作
A.配置插件
下载插件smalidea,地址https://bitbucket.org/JesusFreke/smali/downloads
这个
下载完成后,打开android studio的Settings | Plugins,点击
选中下载好的zip压缩包。并apply。
此步骤的目的是让android studio能识别smali代码,并能正常下断点。
B.反编译apk
下载apktool并反编译apk

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

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

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

接下来先以debug模式启动程序,注意,是在手机上启动。
如果你手机上有这些选项,设置 | 开发者选项 | 选择调试应用(选择crackme)| 等待调试器(勾选),
然后就可以直接点击程序图标,会出现Waiting For Debugger对话框。
如果手机上没有这些选项,可以用adb命令的方式启动,先从反编译的androidmanifest.xml中找到对应的包名com.example.crackme和主activity名MainActivity。然后cmd窗口输入
adb shell am start -D -n com.example.crackme/.MainActivity

手机上出现Waiting For Debugger对话框。
这时打开as的
,大概等待两三秒就会出现

然后再点击as的Run | Edit Configurations(注意不是DDMS的run),新建一个Remote并起码假设crack,填写端口为上图的com.example.crackme对应的端口8700,选择source using module’s classpath为我们之前创建的项目,点击OK
现在终于可以开始调试了,点击Run | Debug ‘crack’,注意一定要关闭其他IDE以防止端口占用,否则会出现类似下面的错误

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

这就和java断点调试差不多了,可以watch寄存器v0,v1,v2等,这里v1接收的是从jni层返回的字符串
这里我们只需要把最后程序界面的文字显示成huaxiaozhou就可以了,找到textView设置的从jni层返回的字符串

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

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

手机界面上就显示huaxiaozhou了。

android加固系列—4.加固前先学会破解,无源码调试apk的更多相关文章
- android加固系列—2.加固前先要学会破解,调试内存值修改程序走向
[版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5138585.html] 因公司项目需要对app加固,经过本人数月的研究,实现了一套完整的仿第三 ...
- 1. Smalidea无源码调试android应用
一.安装smalidea https://github.com/JesusFreke/smali/wiki/smalidea 1. 进入IntelliJ IDEA/Android Studio开始 ...
- android加固系列—5.加固前先学会破解,hook(钩子)jni层系统api
[版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5138585.html] crackme项目jni的关键代码(项目地址见文章底部),获取当前程序 ...
- android加固系列—3.加固前先学会破解,静态修改so
[版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5138585.html] 项目jni的关键代码(项目地址见文章底部),获取当前程序的包名com. ...
- 【Android】AndroidStudio(Eclipse)如何使用天天模拟器进行调试apk应用。
作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 大家都知道,我们这些Android开 ...
- Android Studio 动态调试 apk 反编译出的 smali 代码
在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...
- android黑科技系列——获取加固后应用App的所有方法信息
一.前言 在逆向应用的时候,我们有时候希望能够快速定位到应用的关键方法,在之前我已经详细介绍了一个自己研发的代码动态注入工具icodetools,来进行动态注入日志信息到应用中,不了解的同学可以查看这 ...
- Android拓展系列(11)--打造Windows下便携的Android源码阅读环境
因为EXT和NTFS格式的差异,我一直对于windows下阅读Android源码感到不满. 前几天,想把最新的android5.0的源码下下来研究一下,而平时日常使用的又是windows环境,于是专门 ...
- Android Studio系列教程四--Gradle基础
Android Studio系列教程四--Gradle基础 2014 年 12 月 18 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzhang ...
随机推荐
- js实现对json数据的序列化(兼容ie6以上浏览器)
/** * 增加对JSON数据的序列化方法, * 主要用于IE6.7不支持JSON对象的浏览器 */ var xue = xue || {};xue.json = xue.json || {}; xu ...
- Azure ARM (7) ARM Template - 使用Visual Studio编辑
<Windows Azure Platform 系列文章目录> 之前介绍的ARM Template,都是使用文本编辑器来编辑JSON文件的. 文本讲介绍如何使用Visual Studio, ...
- c# 游戏策划配置工具
该工具是提供策划配置excel数据,导出到mysql数据库,以及生成xml文件,和对应的xml解析实体类 实现了程序 excel 列名 ID =P 表示ID这列是唯一字段 =S=300 表示这列类型是 ...
- 相同版本的CDH集群间迁移hdfs以及hbase
前言 由于项目数据安全的需要,这段时间看了下hadoop的distcp的命令使用,不断的纠结的问度娘,度娘告诉我的结果也让我很纠结,都是抄来抄去, 还好在牺牲大量的时间的基础上还终于搞出来了,顺便写这 ...
- C#--声明类
- 关于IE6中做兼容的那点事。
前言 对于程序员来说,一听到你做的程序必须兼容IE6(当然主流浏览器肯定得兼容的),那颗滚烫的心瞬间哇凉哇凉的,但是有时,项目就要求这样,你也只能硬着头皮跟IE6来个亲密接触,最近正好做了个项目,关于 ...
- LeetCode - Convert Sorted Array to Binary Search Tree
题目: Given an array where elements are sorted in ascending order, convert it to a height balanced BST ...
- Inno Setup info
Introduce: Inno Setup is a free installer for Windows programs. First introduced in 1997, Inno S ...
- VirtualBox网络设置的问题
在VirtualBox里新建了一个虚拟Linux系统,默认的连接方式是网络地址转换(NAT).发现主机不能访问虚拟机的samba服务器,ping了一下,虚拟机可以ping主机,但是主机不能ping虚拟 ...
- 数据操作语言DML与运算符
数据操作语言DML(添加,修改,删除) 1.添加数据 insert into insert into 表名 (字段列表) values (值列表),值列表要和字段列表按顺序匹配. insert int ...