栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Frida定位和还原简单参数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Frida定位和还原简单参数

分析其signature参数的生成逻辑:

首先使用jadx搜索大法,此处先搜索signature,发现有太多搜索结果:

考虑到生成的逻辑,有可能是通过比如"signature=加密参数"这样的方式来赋值的,那么我们尝试搜索一下**"signature**,发现定位到了关键代码:

经观察可以发现signature生成的位置:

尝试hook一下这个地方:

var d_d_test = Java.use('com.iCitySuzhou.suzhou001.d.d')
d_d_test.a.overload('java.lang.String', 'java.lang.String').implementation = function(s1,s2){
    console.log('enter d_d_test!' + '传入的参数s1为:' + s1 + ',传入的参数s2为'+ s2)
    return this.a(s1,s2)
    }


然后点入com.huolang.framework.b.a.a里面,看到:

再尝试hook一下这个函数:

var a_a_test = Java.use('com.hualong.framework.b.a')
a_a_test.a.implementation = function(s1){
    console.log('enter a_a_test!' + '传入的参数为:',s1)
    let return_value = this.a(s1)
    console.log('a_a_test.a的返回值为',return_value)
    return this.a(s1)
}

输出结果:

看到加密结果为a58414330d87cad53bf77b0d7d20c508,此时比对一下抓包工具里的加密结果:

可以看到加密结果是一样的,因此我们定位到了加密的关键代码在com.huolang.framework.b.a.a里。
接下来可以尝试在Frida中用java代码还原一下:

//此处构造传入的str对象
var str_input = Java.use('java.lang.String').$new('IMEI867686020611446-IMSI460024281539610&&1647162519&&f1190aca-d08e-4041-8666-29931cd89dde')       
//此处构造instance对象
var instance = Java.use('java.security.MessageDigest').getInstance("MD5")
//此处构造StringBuffer对象
var StringBuffer = Java.use('java.lang.StringBuffer').$new()
//此处构造Integer对象,源代码里没有$new(),这里也保持一致
var Integer = Java.use('java.lang.Integer')
//与源代码保持一致
instance.update(str_input.getBytes())
var digest = instance.digest()
//用js代码来写源代码中的循环
var len_digest = digest.length
for(let i=0;i>> 4) & 15,16)).append(Integer.toString(digest[i] & 15,16))
}
console.log(StringBuffer.toString())

输出结果看一下,发现结果一致,说明还原正确:


这段代码同样也可以用python还原:

import hashlib

str_input = 'IMEI867686020611446-IMSI460024281539610&&1647162519&&f1190aca-d08e-4041-8666-29931cd89dde'
signature = ''
instance = hashlib.md5()
instance.update(bytearray(str_input.encode('utf8')))
digest = instance.digest()
for i in digest:
    signature = signature + format((i>>4)&15,'x') + format(i&15,'x')

print('signature为:',signature)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/763205.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号