dex

Android ***测试学习手册(三)Android 应用的逆向和审计

断了今生、忘了曾经 提交于 2020-08-04 18:25:55
在本章中,我们将查看 Android 应用程序或 .apk 文件,并了解其不同的组件。 我们还将使用工具( 如 Apktool,dex2jar 和 jd-gui) 来逆向应用程序。 我们将进一步学习如何通过逆向和分析源代码来寻找 Android 应用程序中的各种漏洞。 我们还将使用一些静态分析工具和脚本来查找漏洞并利用它们。 3.1 Android 应用程序拆解 Android 应用程序是在开发应用程序时创建的数据和资源文件的归档文件。 Android 应用程序的扩展名是 .apk ,意思是应用程序包,在大多数情况下包括以下文件和文件夹: Classes.dex (文件) AndroidManifest.xml (文件) META-INF (文件夹) resources.arsc (文件) res(文件夹) assets(文件夹) lib (文件夹) 为了验证这一点,我们可以使用任何归档管理器应用程序( 如 7zip,WinRAR 或任何首选应用程序) 简单地解压缩应用程序。 在 Linux 或 Mac 上,我们可以简单地使用 unzip 命令来展示压缩包的内容,如下面的截图所示: 这里,我们使用 -l ( list) 标志,以便简单地展示压缩包的内容,而不是解压它。 我们还可以使用 file 命令来查看它是否是一个有效的压缩包。 Android 应用程序由各种组件组成

2020年最新 Android 面试点梳理,新手必看避免踩雷,轻松拿offer!

限于喜欢 提交于 2020-07-29 10:35:54
现在想想,移动互联网的发展不知不觉已经十多年了,Mobile First 也已经变成了 AI First。换句话说,我们已经不再是“风口上的猪”。移动开发的光环和溢价开始慢慢消失,并且正在向 AI、区块链等新的领域转移。移动开发的新鲜血液也已经变少,最明显的是国内应届生都纷纷涌向了 AI 方向。 ​ 可以说,国内移动互联网的红利期已经过去了,现在是增量下降、存量厮杀,从争夺用户到争夺时长。比较明显的是手机厂商纷纷互联网化,与传统互联网企业直接竞争。另外一方面,过去渠道的打法失灵,小程序、快应用等新兴渠道崛起,无论是手机厂商,还是各大 App 都把出海摆到了战略的位置。 其实如果你技术深度足够,大必不用为就业而忧愁。每个行业何尝不是这样,最开始的风口,到慢慢的成熟。Android初级在2019年的日子里风光不再, 靠会四大组件就能够获取到满意薪资的时代一去不复返。 经过一波一波的淘汰与洗牌,剩下的都是技术的金子。就像大浪褪去,裸泳的会慢慢上岸。 而真正坚持下来的一定会取得不错成绩。毕竟Android市场是如此之大。从Android高级的蓬勃的就业岗位需求来看,能坚信我们每一位Android开发者的梦想 。 接下来我们针对Android高级展开的完整面试题。 Android 基础 Activity 生命周期 A 打开 B 界面,会先执行 A 的 onPause,再执行 B 的

Android反编译三件套 apktool 、dex2jar、jd-gui

自作多情 提交于 2020-07-29 10:23:31
1.还是老话下载三件套(点击下载)   或者自己在百度搜索下载    2.使用apktool反编译apk   cd到D:\TESTCODE\android\android反编译三件套目录下   输入java -jar apktool_2.3.4.jar d -f yv.apk -o vpn   yv.apk (要反编译的apk名字) vpn(反编译后存到vpn目录下),注:我的yv.apk和apktool 、dex2jar、jd-gui 处于同一目录下。    3.查看vpn目录下的反编译情况    4.使用dex2jar反编译apk得到Java源代码   将yv.apk解压将其中的classes.dex文件放到dex2jar-2.0 目录下    5.dos命令定位到dex2jar.bat所在目录,输入"d2j-dex2jar classes.dex",效果如下:       6.使用【jd-gui】工具将class文件反编译成java源代码   双击jd-gui.exe 将classes-dex2jar.jar 拖入jd-gui.exe即可      参考:https://blog.csdn.net/s13383754499/article/details/78914592   也有在线反编译的工具 http://www.javadecompilers.com/jad 来源:

消息推送SDK如何保证稳定性和安全性?看看个推资深专家怎么说

梦想与她 提交于 2020-07-29 10:10:38
一个好的消息推送SDK应该具备稳定、易用、安全、小巧灵活等特点。个推作为国内第三方推送市场的早期进入者,一直致力于为开发者提供高效稳定的推送SDK。经过多年的打磨和创新,个推沉淀了丰厚的技术经验。这期文章将从“小”、“稳”、“好用”以及“安全”四个角度分享个推推送SDK的技术经验。 1 小 1.1 65535限制 好的消息推送SDK首要需考虑到包体的小巧灵活性。为什么选择更小体积的包体?从代码层面来看,是由于系统的“65535限制”。如上图(左)所示,我们的程序最终会生成dex文件,dex文件主要由以下几部分组成:header(标头)、一连串的ids(标识符列表)、data(数据区)以及link_data(静态链接文件中使用的数据)。细看上图(右),它包含了一个method_ids_size字段,该字段的主要作用是定义个数。根据谷歌的定义,uint是一个16位的short类型,最长长度是65535。如果将dex工程反编译,会生成很多smali的文件,再去看smali里的函数调用(比如invoke direct {***} 函数名@BBB),会发现调用的地址其实就是刚才unit里定义的偏移量计算得出的。因此,这个函数地址最多也只能有65535个。 1.2 如何使包体体积变小 如何减小包体的体积,可以从以下几个方面考虑: (1) 自研,不嵌套 :在研发SDK时

Android反编译(二) 之反编译XML资源文件

主宰稳场 提交于 2020-07-29 02:10:58
Android反编译(二) 之反编译XML资源文件 [目录] 1、工具 2、反编译步骤 3、重新编译APK 4、实例 5、装X技巧 6、学习总结 1、工具 1).反编译工具 apktool http://code.google.com/p/android-apktool/downloads/list 命令: apktool d [目标.apk] [目标文件夹] ---------反编译(decode) apktool b [文件夹] [编译之后的名称.apk]---------编译(buid) apktool if framework-res.apk --------加载资源(install framework) 2、反编译步骤 步骤1:将目标apk包,拷贝至apktool工具目录下 步骤2:CMD进入apktool文件夹, 运行反编译命令 CMD> apktool d Thinkdirve.apk APK_SRC (意思是将Thinkdirve.apk解包到当前APK_SRC目录下,APK_SRC文件夹不用创建,会自动生成) 3、重新编译APK 步骤1:将修改后资源文件后(APK_SRC)的文件夹重命名ThinkDrive_src 步骤2:CMD进入apktool文件夹, 运行打包命令 CMD> apktool b ThinkDrive_src ThinkDrive_src

Android反编译(一) 之反编译JAVA源码

放肆的年华 提交于 2020-07-27 14:48:36
Android 反编译(一) 之反编译JAVA源码 [目录] 1、工具 2、反编译步骤 3、实例 4、装X技巧 1、工具 1).dex反编译JAR工具 dex2jar http://code.google.com/p/dex2jar/downloads/list 2).JAVA反编译工具 JD-GUI http://jd.benow.ca/ 2、反编译步骤 步骤1:把apk文件后缀名改为.zip 步骤2:解压zip包得到classes.dex 步骤3:将Dex反编译为Jar包(工具:dex2jar) 命令: CMD> dex2jar.bat classes.dex 步骤4:用jd-gui查看反编译的jar包 3、实例 步骤1:把apk文件后缀名改为.zip 步骤2:解压zip包得到classes.dex 步骤3:将Dex反编译为Jar包(工具:dex2jar) 步骤4:用jd-gui查看反编译的jar包 注: jd-gui可将JAR,保存为 JAVA源文件的 *src.zip,需要看.java,解压即可。 4、装X技巧 以下介绍两种装X技巧: 一)装X初级篇: 简化步骤3,每次打开CMD,手敲 dex2jar.bat classes.dex,痛苦了、太痛苦了... 1).在dex2jar目录下,新建[ 反编译.bat ]文件,输入 [ 反编译.bat ] dex2jar.bat

Android热修复原理

故事扮演 提交于 2020-07-27 13:04:44
AndFix:阿里 Tinker:微信 Qzone:QQ空间 Robust:美团 一、AndFix 采用的是 底层替换方案,类似反射 不同: AndFix 采用的是替换ArtMethod结构体中的字段 所有信息,包括执行入口、访问权限、所属类和代码执行地址等等 ,这样会有兼容问题,因为厂商可能会修改ArtMethod结构体,导致方法替换失败。AndFix采用native。 阿里的Sophix 采用的是替换整个ArtMethod结构体,这样不会存在兼容问题。 缺点: 由于它并没有整体替换class, 而field在class中的相对地址在class加载时已确定,所以AndFix无法支持新增或者删除filed的情况 (只能修改值) 使用:在Application.onCreate() 中添加以下代码 二、Qzone(Dex插桩)、Tinker:类替换 类的加载机制: 类的加载ClassLoader(KitKat - 4.4.4_r1): parent为BootClassLoader,双亲(我理解为2个亲戚)委托机制,父加载器不是父类 Qzone和Tinker的热修复方案: 第二个参数是dex文件的保存目录 自定义Tinker实现的适配: v14、V19、V23的区别是Android api参数个数这些修改后反射要做适配 Android N以上Tinker要做适配,官方有发布文档

Is there a way to get a list of all classes from a .dex file?

谁都会走 提交于 2020-06-24 02:00:27
问题 I have a .dex file, call it classes.dex . Is there a way to "read" the contents of that classes.dex and get a list of all classes in there as full class names, including their package, com.mypackage.mysubpackage.MyClass , for exmaple? I was thinking about com.android.dx.dex.file.DexFile, but I cannot seem to find a method for retrieving an entire set of classes. 回答1: You can use the dexlib2 library as a standalone library (available in maven), to read the dex file and get a list of classes.

Android 8.0源码编译问题记录

女生的网名这么多〃 提交于 2020-05-06 23:01:28
记录日常问题 1 替换framework.jar不起作用 第一种方法:不编译优化成odex 第二种方法:不删除dex文件。 其他一些使用的指令 2 adb disable-verity 3 unknown package name of class file 4 fastboot 烧录指令 5 设置系统语言默认为中文 6 nexus 8.0刷机,重启后时间和上次时间不一致,差别大。 7 nexus 8.0刷机,自动确定日期和时间无效 8 nexus 8.0连接WiFi成功,但提示“已连接 但无法访问互联网” 9 nexus 8.0 设置日期弹框以2007.1.1开始 清理make clean; make clobber 更严格。 1 替换framework.jar不起作用 使用nexus 烧录system后,单独替换framework.jar不起作用。 研究出两种解决方案。亲自测试有效。 第一种方法:不编译优化成odex 默认情况在linux编译系统 会开启odex的。 build/make/core/dex_preopt.mk # The default values for pre - opting : always preopt PIC . # Conditional to building on linux , as dex2oat currently does not

安卓应用加固之各代加壳保护技术详解

穿精又带淫゛_ 提交于 2020-05-06 03:10:47
#0x00 前言 安卓应用加固技术是伴随安卓应用破解技术一同发展起来的。加固技术分为加壳保护和反反汇编保护技术。市面上成熟的加固厂商一般会使用加壳保护技术配合反反汇编技术对安卓应用进行加固。 安卓反反汇编技术的总结在我以下博客中将进行详细探讨(未写完),链接: 反反汇编: https://www.cnblogs.com/victor-paladin/p/11406646.html 反动态调试: https://www.cnblogs.com/victor-paladin/p/11406740.html 安卓应用加壳技术的发展可以划分为以下几代壳技术: 第一代壳——动态加载壳 :对用户端的Dex、so、资源进行混淆及加密,在运行时再解密,最后通过自定义ClassLoader动态加载源APK 第二代壳——代码抽取壳 :抽取Dex中方法的实现代码加密存储在用户端,APK运行时调用壳的Native方法解密Dex中被加密的方法,执行完后再加密 第三代壳——代码混淆壳 :指令变换、花指令混淆、指令膨胀、代码流程混淆等 #0x01 第一代壳 一、Dex、so混淆 1.代码混淆 即将源程序代码中的类名、方法名修改为a、b、c()的形式,让破解这不能通过类名、方法名轻易地寻找/猜测到函数所实现的功能,增加逆向分析的难度 2.编译期混淆 若APK在开发时使用的是LLVM编译套件进行编译