Android逆向基础

APK文件目录结构

asset 不经过 aapt 编译的资源文件
lib .so文件
META-INF文件摘要,摘要加密和签名证书文件目录
CERT.RSA 公钥和加密算法描述
CERT.SF 加密文件,它是使用私钥对摘要明文加密后得到的密文信息,只有使用私钥配对的公钥才能解密该文件
MANIFEST.MF 程序清单文件,它包含包中所有文件的摘要明文
Res 资源文件目录,二进制格式
drawable 图片
layout 布局
menu 菜单
resources.arsc 经过 aapt 编译过的资源文件
classes.dex 可执行文件
AndroidManifest.xml 配置文件

APK打包流程

	打包资源(res/assets/AndroidManifest.xml/Android基础类库)文件,生成R.java和resources.ap_文件
	处理AIDL文件,生成对应的.java文件
	编译Java文件,生成对应的.class文件
	把.class文件转化成Davik VM支持的.dex文件
	.java=>.class=>.dex
	打包生成未签名的.apk文件
	对未签名.apk文件进行签名
	对签名后的.apk文件进行对齐处理# 欢迎使用Markdown编辑器

APK安装流程

1.安装方式
	系统程序安装
	通过Android市场安装
	ADB安装
	手机自带安装	
2.安装过程
	复制APK安装包到/data/app目录下,解压并扫描安装包,把dex文	件(Dalvik字节码)保存到/data/dalvik-cache目录,
	并/data/data目录下创建对应的应用数据目录。
3.安装后文件所在目录
	/system/app 
		系统自带的应用程序,获得adb root权限才能删除
	/data/app 
		用户程序安装的目录,安装时把apk文件复制到此目录
	/data/data
		存放应用程序的数据
	/data/dalvik-cache
		将apk中的dex文件安装到dalvik-cache目录下	
4.卸载过程
	删除安装过程中在上述三个目录下创建的文件及目录。

虚拟机

1.java虚拟机	
java字节码
基于栈架构 
2.dalvik虚拟机(jit机制)
Android 5.0以下
dalvik字节码
dalvik可执行文件体积更小
基于寄存器架构
dex文件反汇编工具:smali.jar\ddx.jar
3.art虚拟机(aot机制)
Android 5.0版本及以上
注意:
	.dex =>dexopt=>.odex  dalvik加载执行的odex文件
	.dex=>dex2oat=>.oat    art加载执行的是oat文件

快速定位关键代码:

  1. 分析流程
    搜索特征字符串
    搜索关键api
    通过方法名来判断方法的功能
  2. 快速定位关键代码
    反编译APK程序
    AndroidManifest.xml=>包名/系统版本/组件
    程序的主activity
    每个Android程序有且只有一个主Activity
    分析程序的执行流程
    需重点关注的application
    pplication执行时间
    授权验证
  3. 定位关键代码的技巧
    信息反馈法(资源id/字符串)
    特征函数法(api函数)
    顺序查看法(分析程序执行流程/病毒分析)
    代码注入法(动态调式/插入log/查看logcat/分析加解密)
    栈跟踪法(动态调式/函数调用流程)
    Method Profiling(方法剖析=>动态调式/热点分析//函数调用流程)

游戏内购

去除可能会产生费用的危险权限
	android.permission.SEND_SMS
	android.permission.CALL_PHONE
支付接口
	电信支付接口
		logcat字符串定位(Egame支付成功/Egame支付Cancel/orderid)=>搜索字符串,向上分析,回溯分析/函数名替换
	联通支付接口
		logcat字符串定位(Unicom支付cancel/Unicom支付成功)=>在下面类修改处理,可以用goto或switch方法
	移动支付接口
		logcat字符串定位(购买道具:[] 成功/购买道具:[] 失败)=>在下面类修改	
特征码	                    
	中国移动	46000、46002、46007、46020	
	中国联通	46001、46006、46010	       
	中国电信	46003、46005、46011	     	
内购技巧
	从静态代码分析程序逻辑,找到修改点
	程序逻辑分析=>最重要的又是流程分析/流程图=>核心(层次)
	关键性信息查找=>静态(整体分析与局部分析)/动态
	移动MM:onbillingfinish,onresult无用
	对关键onsuccess()函数的筛选与定位
	4399:notifyDeliverGoods
	支付宝:搜索字符串 “9000”
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值