android加固系列—2.加固前先要学会破解,调试内存值修改程序走向
【版权所有,转载请注明出处。出处:http://www.cnblogs.com/joey-hua/p/5138585.html】
因公司项目需要对app加固,经过本人数月的研究,实现了一套完整的仿第三方加固如爱加密等的加固方案(第三方加固价钱不菲,一整套针对金融app方案10~20万/年),从对原项目java源码dex文件加密在新项目中jni层解密之并替换当前进程到jni的反调试和linux对其加壳等一系列完整的方案及代码实现。在这准备做成一套教程供大家参考和互相学习指出不足之处。
因对纯java的破解过于简单所以我的加固方案是建立在jni技术的前提下,java的破解就不介绍了,apktool能反编译其源码。但用jni加密并对其加固了并不代表就万无一失了,最安全的方案就是建立在服务端不信任任何客户端发来的请求的前提下,策略是只要接口访问本身是合法的就是安全的。好了,废话不多说了,加固只是提升一个安全档次而已。
要想对自己的app加固首先得学会破解才能知道是不是真的加固成功了。这里就先介绍一下最常见的也是最强大的破解技巧——IDA动态调试:
项目jni的关键代码(项目地址见文章底部),获取当前程序的包名com.example.shelldemo和com.example.nocrack对比,正常运行结果是this app is illegal,编译jni我就不介绍了,项目中也带了编译好的so
1.工具介绍
IDA6.5,本人使用的所有IDA版本中只有这个版本能成功真机动态调试,手机系统版本为4.4及以下,需root
2.准备工作
A.传输android_server
首先找到IDA目录下的dbgsrv目录下的android_server,将其用adb推送到手机中,命令如下:
adb push android_server /data/local/tmp/
在手机上使用root explorer并赋予root权限检查手机的/data/local/tmp下是否有android_server,这个文件是连接手机和IDA调试器的工具。
B.启动android_server
分别执行以下命令
adb shell
su
chmod 777 /data/local/tmp/android_server
/data/local/tmp/android_server
C.重定向调试端口
这时启动另一个命令窗口并执行如下命令
adb forward tcp:23946 tcp:23946
23946是和IDA上设置的端口对应
3.配置IDA
首先在手机上运行项目程序,然后:
选择对应的项目程序包名
然后就会出现
直接cancel,接下来的对话框点击OK或关闭按钮都行,进入
4.选择对应的so及将要调试的函数
找到项目的so文件
双击进入后找到对应的函数名
双击进入
往下拖,拖到关键代码处,按F2设置断点,然后按F9等待下次运行至此函数
在手机上点击按钮“检测是否被crack”后进入断点,并能够单步执行,F8-step over,F7-step into,单步运行到这一行的时候
关键寄存器就是R0,观察下面一行BEQ loc_75D09ED0,意思是如果上面一行CMP比较指令的R0等于0则跳转到loc_75D09ED0,也就是running successfully那段代码,代表破解了。
那么现在来修改R0的值为0:
输入0
OK后F9看你手机显示running successfully。
注:中国象棋也在jni用了类似的判断手法,有兴趣的可以去破解玩下
【IDA工具地址】
android加固系列—2.加固前先要学会破解,调试内存值修改程序走向的更多相关文章
- android加固系列—5.加固前先学会破解,hook(钩子)jni层系统api
[版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5138585.html] crackme项目jni的关键代码(项目地址见文章底部),获取当前程序 ...
- android加固系列—4.加固前先学会破解,无源码调试apk
[版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5138585.html] 项目关键java代码为,将tv设置为从jni读取的字符串,这里的破解内 ...
- android加固系列—3.加固前先学会破解,静态修改so
[版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5138585.html] 项目jni的关键代码(项目地址见文章底部),获取当前程序的包名com. ...
- 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 ...
- Android Studio系列教程二--基本设置与运行
Android Studio系列教程二--基本设置与运行 2014 年 11 月 28 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处! 上面一篇博客,介绍了Studio的 ...
- Android设计模式系列
http://www.cnblogs.com/qianxudetianxia/category/312863.html Android设计模式系列(12)--SDK源码之生成器模式(建造者模式) 摘要 ...
- Android学习系列(17)--App列表之圆角ListView(续)
http://www.cnblogs.com/qianxudetianxia/archive/2011/09/19/2068760.html 本来这篇文章想并到上篇Android学习系列(16)- ...
随机推荐
- java类加载器-前序
前序 前几天,一个人经常在QQ群里问一些java热更新的知识.后来他实现了热更新,但是还是遇到各种问题.我给他做了解答,并看了下他写的类加载器,他的实现大概是这样子的: (问我此问题的网友,如果你看到 ...
- Windows Azure Traffic Manager (5) Traffic Manager Overview
<Windows Azure Platform 系列文章目录> 笔者默默地看了一下之前写的Traffic Manager内容,已经差不多是3年前的文章了.现在Azure Traffic M ...
- Azure Redis Cache (4) 配置和管理Redis Cache
<Windows Azure Platform 系列文章目录> 我们在创建完Azure Redis Cache后,经常需要切换Redis Cache的服务级别,这里我简单介绍一下使用Azu ...
- linux专题一之文件归档和压缩(tar、file、zip)
本文主要从以下几个方便来说明文件的归档和压缩,同时比较几种不同压缩方法的压缩比率及特点. 文件归档命令tar,tar.gz源码包的安装管理 创建tar包-解压-查询tar包内容 zip命令的用法 为 ...
- Windows 8 应用商店无法连接到网络的终极完美解决方案
当你看到以下几个步骤的时候,你可能会不以为然,因为你已经试过了,还是没成功,依然提示"你的电脑没有连接到Internet或者现在无法使用Windows应用商店,要使用Windows应用商店, ...
- C语言学习011:带参数的main函数
直接上代码 #include <stdio.h> int main(int argc,char *argv[]){ printf("%i \n",argc); int ...
- C语言学习009:管道连接输入输出
现在我们需要对gpsdata.csv文件中的数据进行筛选,然后将符合条件的数据输出到output.json文件中,第一种方式当然是在之前的代码中进行修改,但是如果我们不想修改原来的代码就能得到我们期望 ...
- Hichart 资料收集
Hichart简单使用Highcharts选项配置详细说明文档(zz) http://www.helloweba.com/view-blog-156.html by 澳米科技 Highcharts提 ...
- 半连通分量--Tarjan/Kosaraju算法
一个有向图称为半连通(Semi-Connected),满足:对于图中任两点u,v,存在一条u到v的有向路径或者从v到u的有向路径. 若满足,则称G’是G的一个导出子图. 若G’是G的导出子图,且G’半 ...
- csharp:using OpenXml SDK 2.0 and ClosedXML read excel file
https://openxmlexporttoexcel.codeplex.com/ http://referencesource.microsoft.com/ 引用: using System; u ...