APK反向分析之签名和smali注入绕过技术

      APK的重新包装和重新签名技术是反向分析发布APK的基础。修改发布APK后,需要使用重新包装和重新签名技术来运行修改后的APK。Smali注入技术通常涉及APK重新签名过程或修改APK过程。APK重新包装和重新签名技术包括重新包装、Smali注入和签名绕过三种技术。

因为APK是一个压缩包,所以可以在解包修改后重新打包。重新打包使用APKtool重新打包工具,使用命令APKtoold-f-r-o可以解包APK包,APKtool会自动将其中的dex文件转换成Smali代码,实际上也可以调用Baksmali。使用APKtoolb-o命令重新编译和打包修改后的目录。重新打包后的APK包需要重新签名,需要先手动生成一个keystore文件作为下一个二次签名,然后使用工具jarsiger实现APK的二次签名。

outputo-20210813-092639-312-salj.png

Smali注入技术是Android逆向的常用技术。结合Smali注入技术和重打包技术,可以完成修改应用中函数执行逻辑、获取函数执行信息等操作。比如结合Smali注入技术和MetasploitAndroid木马,甚至可以远程控制Android设备。修改函数执行逻辑是指修改源代码中的一些条件句子,根据具体目的进行修改。常用插入简单句子,如添加日志输出、添加toast提示信息、弹出消息框等。,这有助于分析某个特定函数是否正在运行,显示运行中间结果希望将自己编写的一个或多个Java文件注入Android,而非单个Smali句子,方法是将Java文件转换为Smali文件,然后在应用入口函数中调用自定义函数。首先,将需要注入的Java文件编译成class文件。编译Java文件时,可能依赖于第三方jar包,最基本的是系统包android.jar。对于多个Java文件,放在同一个文件夹下一起编译。接下来,您可以使用dx工具将class文件转换成dex文件,然后使用baksmali工具将dex文件转换成Smali文件,从而实现对Java文件的转换。将生成的Smali文件重新打包到APK应用程序中,在应用程序执行入口添加函数调用Smali代码,自己编写的Java代码注入目标应用程序。

分享: