大家好,我是极客范的本期栏目编辑小友,现在为大家讲解利用Xposed去hook住Android系统框架层函数去脱壳问题。
对于“反向基本问题1 :认证登录”的反向问题,我们需要先shell。我们之前讲过很多shell的方法,比如《逆向基础题21:ART环境下使用IDA脚本shell》中使用IDA脚本shell。下面介绍如何使用Xposed来挂接安卓系统框架层的DexClassLoader函数来摆脱外壳。Xposed的使用可以参考文章《反向基础18:安卓的Xposed框架》。下图显示了公开的核心代码。根据DexClassLoader的第一个参数,它是要加载的apk的路径,所以我们可以直接获取apk文件,然后我们先读取apk文件并将其存储在字节数组中,然后将字节数组的内容写入/data/data/packagename的路径中。
安装完Xposed插件后,运行要去壳的APK,然后可以在/data/data/packagename的路径中找到dumper.apk。我们把文件拿到窗口,用JADX打开它。之前,我们通过修改Smali代码打印出用户名和密码。这次,我们直接分析源代码来获取用户名和密码。核心代码如下:调用checkNameAndPassword函数,base64加密后传入用户名、密码和字符串作为密钥。
继续跟踪代码,发现base64解码的用户名是‘U2hlMTFfTjZSYw==’,密码是基于用户名SHA1加密的,取前16个字节生成。
直接在线解码网页,结果如下,获得用户名和密码。
对于“反向基本问题1 :认证登录”的反向问题,我们需要先shell。我们之前讲过很多shell的方法,比如《逆向基础题21:ART环境下使用IDA脚本shell》中使用IDA脚本shell。下面介绍如何使用Xposed来挂接安卓系统框架层的DexClassLoader函数来摆脱外壳。Xposed的使用可以参考文章《反向基础18:安卓的Xposed框架》。下图显示了公开的核心代码。根据DexClassLoader的第一个参数,它是要加载的apk的路径,所以我们可以直接获取apk文件,然后我们先读取apk文件并将其存储在字节数组中,然后将字节数组的内容写入/data/data/packagename的路径中。
安装完Xposed插件后,运行要去壳的APK,然后可以在/data/data/packagename的路径中找到dumper.apk。我们把文件拿到窗口,用JADX打开它。之前,我们通过修改Smali代码打印出用户名和密码。这次,我们直接分析源代码来获取用户名和密码。核心代码如下:调用checkNameAndPassword函数,base64加密后传入用户名、密码和字符串作为密钥。
继续跟踪代码,发现base64解码的用户名是‘U2hlMTFfTjZSYw==’,密码是基于用户名SHA1加密的,取前16个字节生成。
直接在线解码网页,结果如下,获得用户名和密码。dfma {
相对位置:
宽度: 1000 px;
margin: 0 auto
}。dfma a:after {
绝对位置:
left : 0;
bottom : 0;
宽度: 30px;
线高: 1.4;
文本对齐:中心;
背景-color: rgba(0,0,0, 5);
color: # fff
font-size : 12px;
内容:“广告”;
}。dfma img {
display:块;
}
