配置抓包工具

关闭捕获主机通讯关闭

portainer 镜像离线下载 apkpure镜像站_portainer 镜像离线下载

portainer 镜像离线下载 apkpure镜像站_portainer 镜像离线下载_02

配置:

portainer 镜像离线下载 apkpure镜像站_portainer 镜像离线下载_03

portainer 镜像离线下载 apkpure镜像站_字符串_04

在手机端进行配置

进入wifi设置,长按网络

portainer 镜像离线下载 apkpure镜像站_portainer 镜像离线下载_05

高级选项->手动设置代理

portainer 镜像离线下载 apkpure镜像站_字符串_06

测试是否设置成功,手机上随便开应用看抓包器是否有反应

portainer 镜像离线下载 apkpure镜像站_java_07

打开抓包目标apk(恋恋,登录)

portainer 镜像离线下载 apkpure镜像站_反编译_08

portainer 镜像离线下载 apkpure镜像站_portainer 镜像离线下载_09

portainer 镜像离线下载 apkpure镜像站_java_10

目标找出加密算法

使用AndroidKiller反编译

portainer 镜像离线下载 apkpure镜像站_portainer 镜像离线下载_11

使用geb工具查看(使用前必须配置环境),geb打开目标apk

portainer 镜像离线下载 apkpure镜像站_反编译_12

根据上文分析ctrl+f查找字符串

portainer 镜像离线下载 apkpure镜像站_字符串_13

大致浏览反编译后的java代码

portainer 镜像离线下载 apkpure镜像站_portainer 镜像离线下载_14

猜测肯能是字符串加密函数跟进

portainer 镜像离线下载 apkpure镜像站_portainer 镜像离线下载_15

查看encryptString()发现调用so文件,

portainer 镜像离线下载 apkpure镜像站_字符串_16

浏览整个代码

portainer 镜像离线下载 apkpure镜像站_java_17

根据System.loadLibrary(“jni”)确定调用的so文件名是(lib+jni+so格式)“jni”。

使用IDA分析

记载后根据分析在exports中查找导出的接口encryptString()函数命名规则

portainer 镜像离线下载 apkpure镜像站_字符串_18

查看IDA反编译后的代码,导入jni.h头文件

portainer 镜像离线下载 apkpure镜像站_反编译_19

根据JNI的接口,在exports定位目标函数

portainer 镜像离线下载 apkpure镜像站_反编译_20

,导入之后修改导出函数的参数,前两个参数一般是固定

portainer 镜像离线下载 apkpure镜像站_java_21

portainer 镜像离线下载 apkpure镜像站_java_22

浏览整个函数代码

portainer 镜像离线下载 apkpure镜像站_反编译_23

隐藏类型转换,

portainer 镜像离线下载 apkpure镜像站_字符串_24

猜测是初始化, 跟进查看

portainer 镜像离线下载 apkpure镜像站_java_25

根据代码分析可知,此函数初次调用进行初始化,再次调用直接返回key,则进一步分析initAddr()函数,jniStr是

portainer 镜像离线下载 apkpure镜像站_portainer 镜像离线下载_26

字符串,对initInflect()函数分析,对相应的参数重新设定类型,得到

portainer 镜像离线下载 apkpure镜像站_反编译_27

调用java层com.Reflect.func函数。使用geb定位查看

portainer 镜像离线下载 apkpure镜像站_字符串_28

字符串转换成16进制,initInflect()将输入的字符串“/key-i im lianai”+ alien。

注入smali代码输出信息

跟据上述分析,在java层返回到最初定位字符串加密代码的地方

portainer 镜像离线下载 apkpure镜像站_反编译_29

查看引用的函数,发现只有这一处,则在此处进行smali注入,在Androidkill插入定位代码位置插入smali使用的log封包将相关的smali文件复制到相同文件夹下,插入代码并编译运行查看输出信息。

使用ddm查看输出信息(说明:静态函数的参数从p0开始,动态函数参数从p1开始) 注意:使用AndroidKill反编译时先保存

portainer 镜像离线下载 apkpure镜像站_java_30

至此确认分析的代码是该apk的帐户密码的加密函数