通过NativeFunction执行so中的函数
本文最后更新于 2024年7月31日 上午
案例
最近在逆向过程中遇到一个这样的so中的函数,看起来是个md5。

上述入参第一个为待hash字符串,第二个为长度,第三个为结果。hook之后如下:
hook代码如下:

这时候如果想要确认该md5算法有没有魔改,直接把参数1的整个hex复制下来,转为bytes进行md5计算再比较就行了。(因为从上上个图可以看到入参是不可见的字符,只有通过hex还原bytes)
那能否能直接执行这个函数,让它对“123456”进行加密,再对比是否等于正常md5的结果,这样来判断呢?试一下。
结果如下:

这个结果与标准的md5算法结果一致。
这样,如上述,直接执行的结果和标准md5结果一致,所以该算法就是标准的md5。
总结
就像上面的例子一样,逆向过程中,当我们需要执行so里的某些函数的时候,也就可以借助NativeFunction来实现。
需要注意的是,写脚本时,指针类型的参数需要用Memory.allocUtf8String、Memory.alloc等函数实现。
官方说明见这里:https://frida.re/docs/javascript-api/#nativefunction
通过NativeFunction执行so中的函数
http://spiderx.cc/2024/07/29/通过NativeFunction执行so中的函数/