首先学习一下安卓程序的四大组件:
活动Activity程序所用显示的界面都是活动负责展示的,它是和用户交互的窗口,是一个程序不可缺少的组成部分。服务Service服务是负责后台一直进行处理或运算的一种功能 可以由活动来启动或终止。广播接收器BroadcastReceiver程序注册了广播接收器就可以接收到指定的广播消息,从而进一步的处理。内容提供者Content Provider内容提供者是不同应用之间共享传递数据的桥梁。接着补充一个知识点,Android的安装包apk程序其实就是一个压缩包,可以使用解压缩软件进行解压和查看。
其中:assets和res为安装包的资源文件
- assets文件夹内包含的是未经过编译的资源文件,像是一些字体文件,网页html等等。一些配置不规范的应用甚至会在其内部存储一些密钥。
- res内存放的是应用程序的资源文件,这里的资源和assets内资源的不同之处就是res内的文件都是用来展示的,比如一些应用图标,按钮的图标素材,布局资源xml等,而且是经过编译的二进制文件。
META-INF为程序的签名证书和hash文件
- CERT.RSA包含了安装包签名的公钥信息和发布机构信息。
- MANIFEST.MF存储了安装包内每一个文件对应的hash值。这个值为该文件SHA-1值再进行base64编码后的结果。
- CERT.SF内存储的也是文件的hash,但它多了一个SHA1-Digest-Manifest的值,这个值是MANIFEST.MF文件的SHA1并base64编码得到的。hash签名运算的作用就是防止其他人恶意篡改应用内的文件,提高程序的安全性。
AndroidManifest.xml为安装包内清单文件它包含了APP的详细配置信息(包括应用名称,包名,版本号,所需要的权限,组件信息等一些属性)。classes.dex为安装包应用程序代码文件它是Android系统中可以在Dalvik虚拟机上直接运行的文件格式。java源代码经过编译后转换城的Dex文件,如果程序源码较大,可能会编译为classse2.dex classes3.dex等。resource.arsc为应用的资源索引文件应用程序可以通过这个索引找到指定的数据或文件。lib内文件为Android的so动态库文件使用c/c++编写的代码会生成so文件并保存在lib文件夹下,可能内部还会根据不同架构存在/x86 /armeabi-v7a /armeabi等等一些文件夹Apktool:反编译资源和dex文件,并可以将反编译后的项目重新打包成apkapktool d test.apk -o output #反编译test.apk 生成output目录apktool b input -o output.apk #回编译input目录生成output.apkkeytool和apksigner:签名/验证 工具keytool -genkeypair -keystore 密钥库名 -alias 密钥别名 -validity 天数 keyalg RSA #生成密钥对keytool -list -v -keystore 密钥库名 #查看密钥详情apksigner sign --ks 密钥库名 --ks-key-alias 密钥别名 input.apk #对input.apk签名apksigner verify -v --print-certs input.apk #签名验证dex2jar:将dex转换为.jard2j-dex2jar.bat classes.dexjd-gui:反编译查看 .jar源码java -jar jd-gui-1.5.0.jar使用鼠标点击选择jar内class即可实现反编译。jadx:是一款功能强大的快速安卓反编译工具Dalvik VM是在Android系统上运行Android程序的虚拟机,其指令集是基于寄存器架构的,执行特有的文件格式(dex字节码)来完成对象生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等重要功能。Smali是用于Dalvik的反汇编程序实现。支持注解,调试信息,行数信息等基本Java的基本特性,很接近Java编译在JVM上的中间语言.我们可以通过对dex的反编译得到smal来分析程序的执行逻辑。smali的数据类型反编译出来的数据类型与源jave有一定的区别。smali的B表示java里边的数据类型byte;java中的char在smali用C表示。......具体对比如下图所示:smali的数据的语法说明smali逻辑运算符smali函数定义函数的定义一般为:函数名(参数类型1参数类型2......)返回值类型。基本数据类型的参数与参数之间没有任何分隔符,对象数据类型使用,结束。
例如:smali代码实例下面我们使用一下代码在as中进行编译:编译后我们使用反编译工具来查看下其smali:具体的讲解欢迎大家试听。
扫码试听
我们学习了安卓app的静态逆向分析,就可以根据IOT设备进行针对性的app漏洞渗透测试。使用动态调试等方式可以更快地分析程序逻辑和运行时的变量情况。有关的IOT安全课程在我们的《物联网安全入门》中都有详细的讲解哦!!看雪好评满满的资深讲师为你带来
物联网小白最全的新手村指南课程简介
本课程主要面向物联网安全零基础及其他行业安全从业者。讲解的内容涵盖物联网安全的方方面面,包含硬件层、固件层、协议层、移动应用层、嵌入式Web层等。除了理论知识讲解,也结合实战。让学员可以进行系统性的学习。* 报名前40名学员,赠送50个IoT设备的POC/EXP!! 即刻报名~
课程目录第一章 逆向基础
课时一 逆向入门介绍
课时二 ARM寄存器及汇编指令讲解
课时三 MIPS寄存器及汇编指令讲解
课时四 逆向分析环境搭建
课时五 IDA使用详解
课时六 Ghidra使用详解
课时七 Radare2使用详解
第二章 PWN基础
课时一 PWN入门介绍/PWN环境搭建
课时二 PWN常见工具详解
课时三 MIPS堆栈溢出
课时四 ARM堆栈溢出
第三章 物联网硬件层安全讲解
课时一 物联网硬件层安全讲解
课时二 物联网通信接口调试
课时三 物联网硬件渗透测试流程
第四章 物联网固件层安全讲解
课时一 文件系统详解
课时二 常见嵌入式操作系统详解
1. 实时操作系统:RTOS,VxWorks
2. 分时操作系统:Linux
课时三 固件分析环境搭建&常用分析工具详解
1. binwalk
2. qemu
3. Firmadyne
4. angr
5. IDA/Ghidra
6. ....
课时四 固件提取详解
课时五 实际漏洞分析
第五章 物联网架构之嵌入式web
课时一 http协议讲解
课时二 Tinyhttpd源码分析讲解
课时三 soap协议讲解
课时四 常见嵌入式web应用分析讲解
1. lighttpd
2. GoAhead
课时五 常见嵌入式web漏洞分析讲解
1. 敏感信息泄露
2. 任意文件下载
3. 命令执行
4. 未授权访问
第六章 物联网架构之物联网协议
课时一 wifi协议讲解
课时二 Zigbee讲解
课时三 BlueTooth/BLE协议讲解
课时四 RFID讲解
课时五 MQTT等协议讲解
第七章 物联网渗透测试之移动应用
课时一 安卓应用程序分析
课时二 iOS应用程序分析
课时三 动态调试分析工具使用
课时四 安卓/iOS应用 网络接口分析
第八章 物联网安全防护
课时一 物联网各层防御措施讲解
- 硬件层
- 固件层
- 嵌入式Web层
- 协议层
- 移动应用层
讲师介绍崔洪权(网络ID:色豹),信睿网络 CEO,吉林大学CTF战队指导教师,SSC安全峰会、DC0571 演讲嘉宾。拥有多个IoT相关CVE漏洞编号,并荣获2018年赛博地球杯工业互联网安全大赛 一等奖。 立即报名1. 本课程采取预售模式。
课程价格:1024元
预售时间:2020/10/16—2020/11/11
2. 预报名人数不到40人,则退款。
3. 报名前40名学员,赠送50个IoT设备的POC/EXP!!还在为在物联网安全的大门外徘徊而苦恼吗?想要快速、高效地系统学习物联网安全入门的知识吗?想要收获良师益友,共同学习进步吗?想要早日撕下物联网小白“标签”?即刻报名
前40还送POC/EXP哦!
- End -公众号ID:ikanxue
官方微博:看雪安全求分享
求点赞
求在看 |