# 第二题 简单 so
还是直接搜索找到如下位置
编写 frida 脚本,hook 一下这个 encodeToString 是啥
Java.perform(function(){ | |
console.log("so start:") | |
var ByteString = Java.use("com.android.okhttp.okio.ByteString"); | |
var NativeLib = Java.use('com.yuanrenxue.challenge.two.NativeLib'); | |
var Base64 = Java.use('android.util.Base64'); | |
NativeLib.encrypt.implementation = function(a, b){ | |
console.log('SigEntity.generatorSig.a: ', ByteString.of(a).utf8()); | |
console.log('SigEntity.generatorSig.b: ', b); | |
let result = this.encrypt(a, b); | |
console.log('result:', ByteString.of(result).hex()); | |
Base64.encodeToString.overload('[B', 'int').implementation = function (val1, val2) { | |
// console.log(val1); | |
// console.log(val2); | |
let result1 = this.encodeToString(val1, val2); | |
console.log(result1); | |
return result1 | |
} | |
return result; | |
}; | |
}); |
很明显,这个就是我们想要的结果了,然后就跟进去 NativeLib.encrypt,发现是个 native 方法
大致翻译一下:
使用 native 方法加密,第一个参数是由页数冒号时间戳组成的 byte 数组第二个参数就是时间戳
很明显,加密函数对应的 so 文件如图所示,直接用 ida 打开
点进去 发现逻辑有点复杂,就不考虑继续分析 so 了