问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
安卓学习(一)
移动安全
安卓一步步的学习
Android学习 基础知识 ==== 前言 -- 安卓5.0开始试用ART虚拟机,安卓系统也开始分32位和64位版本 APK基本结构 ------- 1、assets这里面一般放的是资源,这里面的资源通常是没有编译过的,像js、html等 2、lib目录放的一般是so文件,也就是本地代码 arm8、x64位的CPU.....APK很少有64位的,在动态调试的时候会有静态分析和动态分析arm代码是不一样的 armeabi:为了做兼容的:arm5的cpu armeabi-v7a:是arm7的cpu libs文件夹︰引用第三方的java包 3、META-INF: APK的签名 我们每次打包APK后都需要做一个签名,在系统里面是需要做验证的,不管是代码验证还是在安卓系统里面都需要签名验证 假设如果把APK文件改了,在放回去的话本身的签名和修改后放回去签名是不对应的,这时候怎么解决呢? 需要破解器破解系统核心,就算不重签名也可以放上去 或者安装在模拟器上面进行操作,模拟器支持不重签名也可以操作 4、res目录:放的资源,程序的图标、样式、布局、XML等,编译之后的文件,直接查看是乱码,需要反编译的 工具AndroidKiller即可反编译查看 5、AndroidManifest.xml:清单文件,直接查看大部分是乱码 清单:APK需要使用的一些权限、包名是什么、APK是否支持调试等等内 6、resources.arsc:编译之后的文件,语言包、程序内容等 7、classes.dex:dex文件,运行在Dalivk虚拟机上的文件,是smali代码也就是源代码,需要反编译转换为smali代码,还可以把smali代码转换为java代码或者直接des转换为jar包也可以 大型的apk里面会有好几个classes,分开放的原因,是因为文件大小是有限制的 JVM、DVM、ART ----------- JVM:简单来说就是java虚拟机,运行的是`.java`文件编译后的`.class`文件 DVM: Dalvik虚拟机 在Android4.4及以前使用的都是Dalivk虚拟机,我们知道APK在打包的过程中会将java等源码通过`javac`编译成`.class`文件 但Dalvik虚拟机只会执行`.dex`文件,所以dx工具会将`.class`文件打包成`.dex`文件在丢给Dalvik虚拟机执行,但是Dalivk虚拟机在启动时候会将`.dex`文件转换成快速与进行的看机器码,又因为65535这个问题,导致我们在应用冷启动的时候有一个合包的过程,最后导致的一个结果就是APP启动慢,这就是Dalvik虚拟机的JIT特性。 这里要了解一下:如果超过65535就会重新生成`.dex`文件 ART:ART虚拟机 ART虚拟机是在Android5.0才开始试用的Android虚拟机,ART虚拟机必须要兼容Dalvik虚拟机的特性,但是ART有一个很好的特性AOT(ahead of time),这个特性就是在安装APK的时候就将dex直接处理成可直接供ART虚拟机使用的机器码,ART虚拟机将`.dex`文件转换成可直接运行的`.oat`文件,ART虚拟机天生支持多dex,所以也不会有一个合包的过程,所以ART虚拟机会很大的提升APP冷启动速度。 APK的打包流程 --------  Android开发工具 =========== 1.java环境安装 ----------   环境变量配置   验证安装   2.adt-bundle ------------ 这个是绿色版的 无需安装  以命令形式调试安卓模拟器或者真机 ddms可以看模拟器进程的端口、log等输出的信息 3.Eclipse --------- 创建一个项目   创建完成  然后这里要做几个 配置 配置java编译环境   配置java运行环境  要添加新java环境的 如下操作    配置当前文件的编码  要支持 中文的 选择UTF-8   配置Java代码提示 ```php abcdefghijklmnopqrstuvwxyz ```  创建一个class文件 勾选之后 会自动生成主函数  进行简单的输出   Android逆向工具配置 ============= 1.AndroidKiller --------------- 这个工具的搜索功能 非常的强大!!! 集Apk反编译、Apk打包、Apk签名,编码互转, ADB通信(应用安装-卸载-运行-设备文件管理)等特色功能于一身,支持logcat日志输出,语法高亮, 基于关键字(支持单行代码或多行代码段)项目内搜索,可自定义外部工具;吸收融汇多种工具功能与特点,打造一站式逆向工具操作体验,大大简化了用户在安卓应用/游戏修改过程中的各类繁琐工作。 SDK安装 命令行模式 调试APK文件  解压之后 目录下有这两个文件 然后进行环境变量的配置  验证安装  安装NDK    进行安装AndroidKiller  进行关联Java包  APKtool加载   配置完毕 丢个apk进去  然后呢 进行对比一下  ```php classes.dex--反编译成--&gt;smali classes2.dex--反编译成--&gt;smali_classes2 ``` `AndroidManifest.xml`是APK的配置文件 同时也是可以打开的 有三大功能: ```php 1.工程信息 2.工程管理器 3.工程搜索 ``` 然后 工程搜索功能 这个 功能很强大  当我们进行搜索的时候 它是一条一条的列举出来 很方便 点击 即可跳转 历史记录管理  文本转换  字符编码  进行分析xml配置文件 ```php &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; standalone=&quot;no&quot;?&gt;&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; package=&quot;com.tudou.android&quot; platformBuildVersionCode=&quot;25&quot; platformBuildVersionName=&quot;7.1.1&quot;&gt; ``` 前面是 版本 编码 和官网 **重点是package是标签名** 修改之后 要和`&lt;provider`进行对应  继续 `&lt;uses-permission`是权限的意思 访问的网络 存储等  这个 icon是图标的意思 `android:icon=&quot;@drawable/icon&quot;`  `android:label=&quot;@string/tudou_app_name&quot;` 这个是APP的名字  然后进行模拟器的安装 这边推荐逍遥模拟器和雷电模拟器 而且 要注意在本机安装 模拟器是吃CPU的 安装在虚拟机 卡的不要不要的。。。   ### 实操一、(改APP名) 拿`火柴人突击格斗.apk`进行举例 还是一样 直接丢进来  然后`@string`是索引 我继续搜索`app_name`  最后发现APP的名字 都是指向了这个`strings.xml`文件  进行修改 即可 修改之后 记得保存!  然后进行编译  丢到模拟器中进行查看  可以看到是成功的 ### 实操二、(改APP图标) 然后下面进行修改图标 搞一个土豆视频 我随意截了一张图  是jpg的图像 这里 要去进行转换 **千万不要自己直接改后缀,因为两者像素是不一样** 可以去这里:<https://app.xunjiepdf.com/img2png/> 然后进行搜索 ```php @drawable/icon ```  要找的不是这个 继续搜索`icon` 这里有太多的文件  继续添加后缀进行搜索 ```php /icon.png ```  总共是6个  进行替换  其他几个也是一样 进行编译   编译失败了 我感觉是图片的问题 重新搞一张  这次成功了 还是建议找一张原本是`png`的图片  进行安装查看图标 成功 替换图标  ### 实操三、(去广告) 以火柴人APK为例  启动时候 发现了广告 直接丢进来 这个APP是很老的游戏了 但是广告还是最新的 因为网络的原因 开始分析静态文件中的权限部分  把`NETWORK_STATE`和`WIFI_STATE`这两部分先删除  那么 这个APP就获取不到网络 是不是就没有广告了? 其实不然 它变成了一个空页面 只是没有了内容 这里要了解一下:`activity`  只要`MAIN`和`LAUNCHER`结合在一起 并在一个activity内 那么就是最先跳出来的页面  那么我们可以把它删除 然后把下面那个页面 改为`MAIN`和`LAUNCHER`的组合 作为第一个跳转  记得保存 然后进行编译输出  安装尝试  可以看到直接就进来了 2.Android官网逆向助手少月版V2018 ----------------------- 需要Java的环境 主要用的是这三个功能  3.jadx ------ 这是一个反编译的工具  ```php jadx -d out classes.dex ``` 就可以将dex文件反编译成java文件 4.JEB -----   丢进去一个APK 按键Q可以进行:Smali代码和Java代码的转换 CTRL+B:进行断点(Smali代码下才可以) Android调试工具 =========== 1.JEB ----- 这里就不再阐述了 2.IDEA ------   然后 一路默认过去  3.IDA\_Pro ---------- 因为是破解版 所以关闭杀软   安装完成   Android辅助工具 =========== 1.APK helper ------------  丢一个APK进来 可以快速的看到包名  2.PKiD ------ 可以快速的查壳  Android流量抓包 =========== Fiddler -------   几大功能 清除目前所有的包  抓包  Capturing出现 是抓所有的包 点了之后 是只抓APP的包 再看另一个   Decode是进行http字节压缩 防止乱码 HTTPS抓包设置     这里的代理默认端口是:8888  建议不要默认 这边我改成9977 这里是调节 字体大小  然后关闭重新启动 就可以了 Fiddler抓websocks ```php static function OnWebSocketMessage(oMsg: WebSocketMessage ) { // Log Message to the LOG tab FiddlerApplication.Log.LogString(oMsg.ToString()); } ``` 进行添加   然后抓到的websocks会在log中进行输出 HTTP Debugger Pro -----------------   burp ---- 打开之后 进行设置代理服务器  这里是本机的IP 然后打开模拟器 进行设置  进入WLAN 左键点住   保存 当我点击 逍遥向导 已经开始了抓包  然后进行设置 抓HTTPS的包 进行下载证书  证书导入   弹出一个警告  然后继续操作 进行导出  是一个`crt`的文件  直接拖进模拟器中来  点击进行安装  进行设置  设置完成 之后 提示已经安装`a001`  然后 打开浏览器 随意输入一个`HTTPS`的网址 进行抓包   可以看到是可以的 文章转载于:<https://www.freebuf.com/articles/mobile/280471.html>
发表于 2021-07-29 15:00:10
阅读 ( 7098 )
分类:
WEB安全
2 推荐
收藏
1 条评论
神秘海域6454
2022-10-31 18:13
期待更新安卓系列
请先
登录
后评论
请先
登录
后评论
略略略
36 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!