本文主要是介绍雷电模拟器上使用第一个frida(五)用python实现逆向分析并模拟登陆以及两篇好用文章adb devices出现emulator-5554 offline的解决方案和Frida Hook方法大全,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
上篇通过hook确定了登录代码的位置,参考雷电模拟器上使用第一个frida(四)第一个HOOK之抓包-CSDN博客
接下来逆向分析一下,并用python实现其功能,并模拟登陆。
通过抓包分析,其实只要找到riskSecret如何生成的就行了。
在jadx逆向代码中,很明显
hashMap.put("riskSecret", MD5Utils.getMD5(packageName + str2 + currentTimeMillis + str + userToken2));
为了有一个直观认识,我们先HOOK一下getMD5这个函数,看看它的参数是什么内容?
在函数名上右键,“跳到声明”,发现有好多个getMD5,是重载函数。
参考雷电模拟器上使用第一个frida(三)简单的使用实例_小小爬虾的博客-CSDN博客
启动pc端和手机端的frida。
重载函数的frida的hook写法:
import frida
import sys
#重载函数
#运行代码前,一定要先在手机模拟器上启动该app
rdev = frida.get_remote_device()session = rdev.attach("com.beauty.drama")#包名scr = """
Java.perform(function () {var act = Java.use("com.television.amj.utils.MD5Utils"); console.log(act.getMD5);act.getMD5.overload('java.lang.String').implementation = function (a) {console.log(a);var result = this.func.overload('java.lang.String').call(this,a)console.log(result);return result;
}});
"""script = session.create_script(scr)script.load()
sys.stdin.read()
拆分一下:
com.beauty.drama包名
1a16d06bc57b69a1uuid(经过多次测试,本机是固定值)
1697369091599时间戳
将这三个字符串拼接起来做md5加密,就得到了riskSecret的值。
顺便写一下hook普通函数(带参数、带返回值)
import frida
import sys#运行代码前,一定要先在手机模拟器上启动该app
rdev = frida.get_remote_device()session = rdev.attach("com.beauty.drama")#包名scr = """
Java.perform(function () {//包.类var UserModel = Java.use("com.television.amj.application.UserModel");UserModel.getAndroidId.implementation = function(a){console.log(a);var res = this.getAndroidId(a);console.log(res);return res;}});
"""script = session.create_script(scr)script.load()
sys.stdin.read()
对应关系:
此篇备注两个好用的文章:
(1)adb devices出现emulator-5554 offline的解决方案
参考adb devices出现emulator-5554 offline的解决方案_长进长进的博客-CSDN博客
(2) Frida Hook方法大全(普通、重载、构造)
参考Frida Hook方法大全(普通、重载、构造)_frida hook 重载函数-CSDN博客
这篇关于雷电模拟器上使用第一个frida(五)用python实现逆向分析并模拟登陆以及两篇好用文章adb devices出现emulator-5554 offline的解决方案和Frida Hook方法大全的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!