329337656 发表于 2024-1-11 02:42

当frida hook遇上混淆的字符,你确定能分得清吗?

本帖最后由 329337656 于 2024-1-11 02:59 编辑

前言:
最近遇到了Frida hook 出错,返回提示找不到类(关键字:ClassNotFoundException:Didn't find class)文章最后有彩蛋~

问题过程:
明明jadx反编译回来直接复制粘贴,为什么找不到该类?贴上hook代码:

function hook(){
    var huishao=Java.use('脱敏处理.KkkKKkkKkK.p007kkkkkkkKkKkkk.KKkKkKkkkkKKKkK')
    huishao.m27kkkkkkkKkKkkk.implementation=function (){
      return this.m27kkkkkkkKkKkkk();

    }
}
Java.perform(function (){
    hook();
})

以及jadx代码:





==========================================================================
涉及到高风险app,大面积脱敏处理。望理解,不影响我们分析问题 我们继续放大jadx代码研究:
==========================================================================



翻译过来就是:重命名自:包和类名 原因:无效类名和无效包

也就是告诉你了。这个原来是这个名字:



什么?K? k ?还有一个字符是什么鬼?



反正我是头晕了:dizzy:,分享一下给bing吧。





显而易见,就是这货了,为什么会出现这样的情况?

因为混淆的时候就是需要这样的效果,让你稍微不留意就进入了混淆的坑,让你万劫不复。


先总结目前遇到的问题:   

Jadx反编译的时候为了反混淆,会将类名还有方法名做个处理。这样好让你不会满屏都是变量K实际上jadx已经提示你了,这个类名是:



解决方法:
好了,知道问题所在,我们就要想办法解决这样的问题(我这里其实直接复制过去也是可以的,不过有些字符复制过去就是找不到这货。)


经过探索,这个应该就是Unicode 字符(我自己的理解,非严谨)


既然是Unicode,应该就可以encodeURIComponent呀,打开浏览器测试了一下:




还原一下:





妥了。跟着我内心的想法继续改造脚本进行验证 将类名复制到浏览器进行编码



方法名也处理一下



把字符复制下来,在脚本先定义并且转码保存起来,用的时候直接调用就可以了。代码如下:



function hook(){
    //定义混淆的类名
    var classname=decodeURIComponent("cn.tongdun.android.KkkKKkkKkK.k%E2%82%ADkk%E2%82%ADk%E2%82%ADkkkK%E2%82%ADk%E2%82%ADKk%E2%82%ADk%E2%82%AD%E2%82%ADk.KKkK%E2%82%AD%E2%82%ADkKkkkkKKKk%E2%82%ADK")
    //使用混淆的类名
    var huishao=Java.use(classname)
    //定义混淆的方法名
    var funstr=decodeURIComponent("k%E2%82%ADkk%E2%82%ADk%E2%82%ADkkkK%E2%82%ADk%E2%82%ADKk%E2%82%ADk%E2%82%AD%E2%82%ADk")
    console.log(classname)
    console.log(funstr)
}



可以正常打印了。

总结一下解决方法 既然混淆代码之后会给我们特殊的字符串,让我们无从下手,我们应该要更加细心

1:将字符串编码之后,我们能够随意复制粘贴

2:在hook的js代码里,利用decodeURIComponent还原回来

这样就能解决混淆送我们踩的坑了。



最后的彩蛋是:当大家遇上反混淆的app需要逆向hook的时候(有特殊字符的情况下),最好就是利用frida进行hook类下面所有的方法,并且以encodeURIComponent形式返回,这样你会少走很多坑~~如有不同意见或者错误希望大神提出指正!

WXjzc 发表于 2024-1-11 11:46

如果你用GDA去生成hook模板,你会发现它是自动帮你用解码的方式处理的

wasm2023 发表于 2024-1-11 11:43

楼主,优秀

shengforever 发表于 2024-1-11 12:16

这个坑 确实大。。

sunzhw 发表于 2024-1-11 13:13

这个坑,学习了

maxwellhw 发表于 2024-1-11 14:23

学习了学习了

iamafailor 发表于 2024-1-11 14:33

我猜是 tongdun:lol (脱密不完全)

lyie15 发表于 2024-1-11 15:33

学习,后面遇上可以多一个思路

爱飞的猫 发表于 2024-1-12 06:32

如果魔改类名,例如加上 `\x00` 字符,还能这样处理吗

SysEntry 发表于 2024-1-12 16:54

类名混淆贼难受
页: [1] 2
查看完整版本: 当frida hook遇上混淆的字符,你确定能分得清吗?