找回密码
 立即注册
查看: 398|回复: 0

看雪安卓逆向高级研修两万三万班学习体会

[复制链接]
发表于 2022-2-6 07:12 | 显示全部楼层 |阅读模式
安卓逆向就是将安装包apk文件还原成打包前的样子。

android代码和资源编译打包会形成安装包apk,反过来就是逆向了。

Apk文件其实是一个zip文件,解压之后可以看到其中的目录结构

AndroidManifest.xml  已经过编译,包括activity、权限等配置

java程序生成的.class文件经过打包生成

资源文件索引

此文件夹包括布局文件、图片、strings等文件,可以通过R.java引用

lib用到的第三方库,包括.so文件。.so文件不易破解

assets

不经编译的资源文件,可以通过AssetManager类访问

META-INF

应用签名文件,用于验证apk中的文件没有被修改过

使用dex2jar和jdgui查看java代码

首先将apk或者apk中的dex文件拖到d2j-dex2jar.bat上,会得到一个jar文件

用jdgui打开此jar文件,即可看到java源码

注意,部分源码无法正确得到

使用apktool反编译和打包

反编译命令apktool d *.apk

重新打包命令apktool p folder

使用auto-sign重签名

将apk改名为update.zip,复制到签名工具的目录下,运行Sign.bat

重新打包之前可以修改smali文件夹下的源码达到破解的目的

使用IDA Pro查看.so文件

窗口左侧选中函数后,按F5可以在Pseudocode窗口查看反编译得到的C代码

同样可以动态调试.so代码

常用apk保护方法

加固/加壳

加壳指的是将dex文件加密后和加密apk写入一个新的dex文件,运行时首先通过加密apk解密得到源dex文件,再通过DexClassLoader动态加载源dex

运行时必然将源dex加载到内存中运行,因此在加载源dex后dump内存中对应区块即可得到源dex文件,即脱壳成功

混淆java或者C#(Unity)代码,即使反编译也无法看懂源代码,增加分析代码逻辑的难度

对于java代码,可以配置proguard脚本生成apk时混淆classes.dex

对于Unity项目,反编译后得到的Assembly-CSharp.dll即可使用.NET Reflector直接查看源代码,建议使用Obfuscar混淆

链接:https://pan.baidu.com/s/1U4SS4cP3psKC2eORVY-YuA

提取码:6dCi
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 19:32 , Processed in 0.112311 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表