frida hook 得到某东app的签名
前提:
电脑安装了夜神模拟器
电脑安装了frida-tool
模拟器安装了某东app
模拟器安装了firda-server
1、新建python文件,代码如下(其中body_string的格式非常关键,不能包含 \ 符号,否则得到的签名是错误的):
from pydoc import cli
import frida
import json
rpc_sign = """
rpc.exports = {
getsign: function(function_id, body_string, uuid, client, clientversion){
var sig = "";
Java.perform(
function(){
//拿到context上下文
var currentApplication = Java.use('android.app.ActivityThread').currentApplication();
var context = currentApplication.getApplicationContext();
var BitmapkitUtils = Java.use('com.jingdong.common.utils.BitmapkitUtils');
sig = BitmapkitUtils.getSignFromJni(context, function_id, body_string, uuid, client, clientversion);
//console.log(context, uuid)
}
)
return sig;
}
};
"""
def get_sign(function_id, body_string, uuid, client, clientversion):
process = frida.get_remote_device().attach('com.jingdong.app.mall')
script = process.create_script(rpc_sign)
script.load()
sign = script.exports.getsign(function_id, body_string, uuid, client, clientversion)
return sign
if __name__ == '__main__':
body_string = '{"category":"9987;653;655","isCurrentSku":false,"isFirstRequest":true,"num":"10","offset":"1","pictureCommentType":"A","shadowMainSku":"0","shieldCurrentComment":"1","shopType":"0","sku":"100026667858","sortType":"5","tagId":"","tagType":"","type":"0"}'
#此处 body_string 不能包含类似 \" 的符号,具体格式可看fiddler的body参数的格式
function_id = 'getCommentListWithCard'
uuid = '请输入自己的uuid'
client = 'android'
clientversion = '10.0.2'
sign = get_sign(function_id, body_string, uuid, client, clientversion)
print(sign)
2、启动模拟器
3、连接模拟器,启动frida-server。
adb connect 127.0.0.1:62001
adb forward tcp:27042 tcp:27042
adb shell
cd /data/local/tmp/
./frida-server-15.0.0

4、打开cmd,执行脚本, python jd_sign_hook.py,得到结果

5、替换掉fiddler中的st,sign,sv的值,能正常返回结果,说明签名正确。

浙公网安备 33010602011771号