前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1.安卓逆向学习入门记录

1.安卓逆向学习入门记录

作者头像
全栈工程师修炼指南
发布2022-09-29 15:44:29
7540
发布2022-09-29 15:44:29
举报

0x00 前言

Android 安全与逆向分析, 自从2017年网络安全法的实施,网络安全受到越来越多的企业和行业的重视,Android 安全的重要性已无需多言,只要有智能机的朋友无论是apple还是Android都是离不开其内部的生态圈的, 所以自2017年起各大主流的加固采取VM优化代码,加之各厂商协议越来越底层和采用证书, 更越发重视服务器的风险控制和安全保障, 所以对安卓软件和安卓系统的渗透测试已成为热门的学习方向;

学习流程:

  • 1.环境搭建
  • 2.APK文件结构
  • 3.APK打包流程
  • 4.APK安装流程
  • 5.APK反编译与回编译
  • 6.基础知识点(编程语言:Java C/C++ , 虚拟机)
  • 7.Dalvk字节码
  • 8.small文件
  • 9.快速定位关键代码
0x01 基础环境

常用工具集:

  • 运行环境: JDK/SDK/NDK
    • JDK:Java开发与运行环境。
    • NDK:使您能在 Android 应用中使用 C 和 C++ 代码。 下载地址
  • IDE:Eclipse(推荐) / AndroidStudio
  • 逆向工具:AndroidKill / Jeb / Jadx / GDA /Android逆向助手 / IDA / GDB (后面单独介绍各逆向工具的使用)
  • 签名:Apkhelper / getsign / APK 上上签
  • 安卓模拟器:雷电(快速) / 海马玩(稳定)
  • 常用软件: adb.exe / RE文件管理器 / MT 管理器

基础软件安装:

代码语言:javascript
复制
# 静默安装
jdk-8u251-windows-x64.exe /s
# setx JAVA_HOME "C:\Program Files\Java\jdk1.6.0_31" /M
# setx JRE_HOME "C:\Program Files\Java\jre6" /M
# setx CLASSPSTH ".;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;" /M
# setx PATH "%JAVA_HOME%\bin\;%PATH%" /M

# setx JAVA_HOME "D:\jdk1.7.0_67" /M
# setx JRE_HOME "D:\jdk1.7.0_67\jre" /M
# setx CLASSPSTH ".;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;" /M
# setx PATH "%JAVA_HOME%\bin\;%PATH%" /M


# 环境变量
setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0_251" /M
setx NDK_HOME "C:\Android-Resever\android-ndk-r21" /M
setx CLASSPSTH ".;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;" /M
setx PATH "%PATH%;%JAVA_HOME%\bin\;%NDK_HOME%" /M


# 安装软件版本
C:\Users\Weiyi>java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)

C:\Users\Weiyi>ndk-build
Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
C:\Android-Resever\android-ndk-r21\build\\..\build\core\build-local.mk:151: ***
Android NDK: Aborting    .  Stop.

注意事项:

1.JDK与NDK的配置路径中不能有中文和空格;

2.安装包文件不全则运行会出错;

3.安装完成后需要校验设置的环境变量;

4.如果在运行ndk-build提示api-ms-win-crt-convert-l1-1-0.dll找不到时候将本机的32位与64位分别放置于system32、SysWOW64目录之中然后注册该DLL;

代码语言:javascript
复制
@echo 开始注册
copy api-ms-win-crt-convert-l1-1-0.dll %windir%\sysWOW64
regsvr32 %windir%\sysWOW64\api-ms-win-crt-convert-l1-1-0.dll /s
@pause
0x02 APK文件与目录介绍
APK 文件

描述:APK全称为Android Package的缩写即Android安装包,APK是类似于Symbian sis 或者 Sisx 的文件格式。通过将APK文件直接转入到Android手机或者Android模拟器中即可安装执行;

APK 文件目录

描述:将APK文件通过解压缩包进行解压,然后可以看见应用程序的一些代码和资源;

代码语言:javascript
复制
❯ tree -L 1 -r
├── third_party
├── resources.arsc
├── res # 通用 - 编译过的文件(二进制)以及应用静态资源(图片/xml/)即UI界面的一些东西;
    ├── drawable #图片
    ├── layout   #布局
    └── menu     #菜单
├── org
├── okhttp3
├── lib  # 通用 - 静态链接文件so 
├── jsr305_annotations
├── javax
├── freemarker
├── error_prone
├── entity.ftl
├── dao.ftl
├── dao-unit-test.ftl
├── dao-session.ftl
├── dao-master.ftl
├── dao-deep.ftl
├── content-provider.ftl
├── classes.dex  #通用 - java编译后的可执行文件(android中)
├── build-data.properties
├── resources.arsc # 经过AAPT编译过的资源文件,字符串文件以及显示样式文件夹
├── assets  #通用 - 不经过AAPT编译的资源文件
├── androidsupportmultidexversion.txt
├── META-INF #通用 - 文件摘要(摘要加密和签名证书文件目录)
    ├── GOFUN.RSA  #公钥加密算法描述
    ├── GOFUN.SF   #加密文件它是使用私钥对摘要名称加密后得道的密文信息,只有使用私钥配对的公钥才能进行解密该文件;
    └── MANIFEST.MF  #程序清单文件,它包括所有文件的摘要信息
└── AndroidManifest.xml # 通用 - 配置清单文件(安卓的配置清单)

文件:MANIFEST.MF

代码语言:javascript
复制
Manifest-Version: 1.0

Name: AndroidManifest.xml
SHA-256-Digest: sCLLLPEivWLfeMHwNEz7Bt3yeBWMiT+EjPcIL9QdvxI=

文件:gofun.sf (采用公钥对MANIFEST.MF文件中的资源进行再次摘要加密)

代码语言:javascript
复制
Signature-Version: 1.0
Created-By: 1.0 (Android)
SHA-256-Digest-Manifest: WPorAy8iCJO3Rl5xbczVMiBhZOXOQXjVwylG1xL2ulA=
X-Android-APK-Signed: 2

Name: AndroidManifest.xml
SHA-256-Digest: GFXtodin/suAdOtSKFP/1RSvvOFy/Hx6dxlcJyZYRYc=
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
    • 0x01 基础环境
      • 0x02 APK文件与目录介绍
      相关产品与服务
      网站渗透测试
      网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档