Android逆向1-smali
Android逆向2
APK文件结构简介
apk 全称 Android Package,它相当于一个压缩文件,只要在电脑上将apk后缀改为zip即可解压。
文件 | 注释 |
---|---|
assets目录 | 存放APK的静态资源文件,比如视频,音频,图片等 |
lib 目录 | armeabi-v7a基本通用所有android设备,arm64-v8a只适用于64位的android设备,x86常见用于android模拟器,其目录下的.so文件是c或c++编译的动态链接库文件 |
META-INF目录 | 保存应用的签名信息,签名信息可以验证APK文件的完整性,相当于APK的身份证(验证文件是否又被修改) |
res目录 | res目录存放资源文件,包括图片,字符串等等,APK的脸蛋由他的layout文件设计 |
AndroidManifest.xml文件 | APK的应用清单信息,它描述了应用的名字,版本,权限,引用的库文件等等信息 |
classes.dex文件 | classes.dex是java源码编译后生成的java字节码文件,APK运行的主要逻辑 |
resources.arsc文件 | resources.arsc是编译后的二进制资源文件,它是一个映射表,映射着资源和id,通过R文件中的id就可以找到对应的资源 |
应用双开
学习第一种,后面标记一下,目前对初学者较难
原理 | 解释 |
---|---|
修改包名 | 让手机系统认为这是2个APP,这样的话就能生成2个数据存储路径,此时的多开就等于你打开了两个互不干扰的APP |
修改Framework | 对于有系统修改权限的厂商,可以修改Framework来实现双开的目的,例如:小米自带多开 |
通过虚拟化技术实现 | 虚拟Framework层、虚拟文件系统、模拟Android对组件的管理、虚拟应用进程管理 等一整套虚拟技术,将APK复制一份到虚拟空间中运行,例如:平行空间 |
以插件机制运行 | 利用反射替换,动态代{过}{滤}理,hook了系统的大部分与system—server进程通讯的函数,以此作为“欺上瞒下”的目的,欺骗系统“以为”只有一个apk在运行,瞒过插件让其“认为”自己已经安装。例如:VirtualApp |
第一步,断网,因为看评论区np管理器要收费开会员,避免不能使用先断网
第二步,拖入安装包安装
第三步,设置手机版:
第四步,提取安装包
第五步,双开设置
要钱换np
np管理器被拒绝授予超级用户权限,面具授予即可
打开np管理器
确定后安装即可
但是如果开发者作了签名校验,改包名后双开会出现闪退崩溃情况
汉化
逆向流程:
基本上字符串都是在arsc里,建议一键汉化,然后再润色。少量没汉化到的字符串参考视频中的方法定位去逐个汉化。
这里还需要注意的是,如果要直装应用,那就应该先签名安装,看看是否有签名校验导致的闪退
查看,右上角搜索
点击,然后进去再点反编译,又要登录,没办法换np,但是没有搜索字符串功能,只能手动换目录
回mt管理器
然后安装(这里我做错了,在哪改就在那安装,得回np管理器安装)
成功,但是下面还又不知道什么语言,需要开发者助手
点击页面资源分析
在resource.arsc里,点击选择翻译模式
右下角可汉化,或直接修改字符串
这里又踩坑了,之前用的是np管理器,不能用mt修改,签名不一致
只能先卸载,再装
点class,选第一个
然后搜索字符串,改Reverse,保存后安装
AndroidManifest.xml
AndroidManifest.xml文件是整个应用程序的信息描述文件,定义了应用程序中包含的Activity,Service,Content provider和BroadcastReceiver组件信息。每个应用程序在根目录下必须包含一个AndroidManifest.xml文件,且文件名不能修改。它描述了package中暴露的组件,他们各自的实现类,各种能被处理的数据和启动位置。
属性 | 定义 |
---|---|
versionCode | 版本号,主要用来更新,例如:12 |
versionName | 版本名,给用户看的,例如:1.2 |
package | 包名,例如:com.zj.52pj.demo |
uses-permission android:name=”” | 应用权限,例如:android.permission.INTERNET 代表网络权限 |
android:label=”@string/app_name” | 应用名称 |
android:icon=”@mipmap/ic_launcher” | 应用图标路径 |
android:debuggable=”true” | 应用是否开启debug权限 |
通用编辑修改图标(共享文件夹)
作业
一:
安装纸飞机
这句英文在resource里
双开
修改名字图标:
但不知道为啥不能改图像最后
二:不要一个个找,用ID定位
复制,然后去resource里Arsc找ID
52pj改成cf.jpg然后赋值过去