赞
踩
PK
,dex文件头部二进制的标识的dex x.x(版本号)
APK其本质为压缩包,通过修改后缀,即可解压查看(用7z可以直接对apk解压)
(相当于把所有需要的文件进行打包压缩)
NP管理器
或者MT管理器
来查看apk文件
class.dex
文件转化成.jar
不会被编译处理
的文件,一般是资源性质的文件或者配置文件;res
目录不同之处在于,assets目录支持任意深度
的子目录,我们的开发者可以根据自己的需求来任意部署文件夹的架构res
目录下的文件会在.R文件
中生成与其对应的资源ID,assets不会自动生成对应的id,访问的时候需要AssetManager类 完整性
和系统的安全。校验计算
,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。
CERT.RSA
,CERT.DSA
是开发者利用私钥对APK进行签名的签名文件CERT.SF
和MANIFEST.MF
记录了文件中文件的SHA-1哈希值。软件修改后需要将里面的证书文件删除(.RSA、.SF、.MF三个文件),否则软件无法安装。
ARM
,ARM-v7a
,MIPS
,X86
,分别对应着ARM架构,ARM-V7架构,MIPS架构和X86架构,这些so库在apk包中构成如图:ARM
或者ARM-v7a
架构的。平板和模拟器上
。 自我介绍
配置文件,Android系统可以根据Androidmanifest.xml文件来完整的了解这个APK应用程序的咨询。该文件是每个应用都必须定义和包含的
,它描述了应用的名字、版本、权限、引用的库文件等等信息
压缩
的,可以通过AXMLPrinter2
工具解开,具体命令为: java -jar AXMLPrinter2.jar AndroidManifest.xml
寄存器
的虚拟机的一个实现。共享数据
。dex数量不止一个
,而且都比较小,很可能是被加固了(不将重要的代码放到dex,dex只是承担初始化的功能(只有需要加载什么库,需要释放什么文件的代码逻辑),把java文件写到so库里面,在app runtime的时候,把lib目录下so文件的java代码释放到内存中去) 映射关系
,用来根据资源ID寻找资源。findviewbyid()
就可以得到资源文件,每当在res文件夹下放一个文件,aapt就会自动生成对应的ID保存在.R文件,我们调用这个ID就可以,但是只有这个ID还不够,.R
文件只是保证编译程序不报错,实际上在程序运行时,系统要根据ID去寻找对应的资源路径,而resources.arsc文件就是用来记录这些ID
和资源文件位置
对应关系的文件。 .java
->.class
->.dex
--(+resources.arsc
)-->.apk
.c
->.so
->arm
Aapt
: Android Asset Packaging Tool,在SDK的build-tools出录下。该工具可以查看,创建,更新ZIP格式的文档附件(zip, jar, apk)。也可将资源文件编译成二进制文件。AIDL
: Android Interface Definition Language,即 Android接口定义语言。
jarsigner
:JDK提供的签名工具可对apk进行签名。
jarsigner -verbose -keystore D: ltestlmykeystore -signedjar D:ltestitemplout.apk D:ltestlinput.apk alias
Zipalign
:提高了优化后的Applications Android系统的交互效率,从而可以使整个系统的运行速度有了较大的提升。
空间换时间以提高执行效率
,如果不采取对齐的标准,处理器无法准确和快速的在内存地址中定位相关资源。Keystore
:密钥库在apk下载完成后,系统会对安装包进行签名验证,以确保应用程序的安全性。主要校验的内容包括:如果任何一个
检查失败,则系统将拒绝安装该应用程序。
签名证书的链是否有效
:证书链是一组证书,它们被用来证明证书的签发者是受信任的。
签名是否被篡改
:系统会使用预定义的算法(算法可能包括 SHA-256 等)验证签名的完整性。签名是否过期
应用程序的签名是否与先前安装的应用程序的签名相匹配
/system/app
, 第三方应用在/data/app
下(存储着已安装的APK文件,包括代码文件、资源文件、库文件等)。
/data/dalvik-cache
目录./data/system/packages.list
和/data/system/packages.xml
。删除在创建过程中三个路径下产生的文件夹
,以及有可能后面创建的外部存储目录/storage/emulated/0/Android/data/${package_name}
。/data/data
下面的数据目录,并从PMS的内部数据结构上清除当前卸载的package信息/data/app/${package_name}
文件,删除存在/data/dalvik-cache
文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
#项目/短视频/抖音 #技术栈/python爬虫/用adb模拟点击来控制手机刷抖音 原理::python脚本实现:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
打开AndroidKiller安装包所在位置,找到cfgs文件夹下的injectcode文件夹,将里面的插件删除,替换成新的injectcode。
<!--SR:!2023-01-16,3,250-->
反编译成功......
::需要重启AndriodKiller ,在工程
中打开刚刚的项目。 <!--SR:!2023-01-23,4,270-->
<!--SR:!2023-01-15,3,250-->
#坑/逆向/app逆向/AndroidKiller/签名 AndroidKiller回编译出来的apk无法安装::编译的时候没有对apk签名,选择AndroidKiller
#坑/逆向/app逆向/AndroidKiller/签名 签名后还是无法安装重新打包的apk::需要先把原版卸载掉,才能安装修改后的apk,因为原版的apk签名无法拿到,原版的apk的签名信息和AndroidKiller回编译出来的apk的签名信息不一样,无法共存。用AndroidKiller回编译的时候,签出来的签名是一样的,所以修改后的apk可以共存,从而实现多开。
其实是因为手机里面已经安装了抖音,修改后的apk的包名是抖音的包名,冲突了。卸载原版抖音即。
<!--SR:!2023-01-23,4,272-->
#项目/短视频/抖音 #技术栈/app逆向/逆功能/去除软件更新
解决办法2:adb报错信息可能不准确,push到手机上安装,看具体是什么报错信息,发现还是一样的报错,其实是因为手机里面已经安装了抖音,修改后的apk的包名是抖音的包名,冲突了,卸载原版抖音即。
#坑/逆向/app逆向/adb 中文名字的文件push到手机会出问题::需要改成英文名字
#坑/逆向/app逆向/AndroidKiller/回编译 adb install的时候,提示INSTALL_FAILED_CONFLICTING_PROVIDER::因为系统中已经安装的apk的provider
中的authorities
相同了,导致在安装到手机时,安装包管理器检测到相同的provider,报错导致的。
#坑/逆向/app逆向/adb 误删了/data/local/tmp文件夹,新建了一个文件夹,adb push到这个文件夹提示权限不够::新建的文件夹权限发生变化了,参考nexus 5这个目录的权限,改成一样,记得要执行chcon -R u:object_r:shell_data_file:s0 /data/local/tmp
1 |
|
解决办法1:新建的文件夹权限发生变化了,参考nexus 5这个目录的权限,改成一样的,有效。
chcon -R u:object_r:shell_data_file:s0 /data/local/tmp
模块在线安装
和MagiskHide
,红米9A是联发科的芯片,只能安装magisk最新版本,这个方法行不通了。替代解决办法:修改magisk的配置文件ro.debuggable为1,还是没有效果
。 1 2 3 4 5 |
|
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。