当前位置:网站首页>寻找消失的类名
寻找消失的类名
2022-08-04 15:56:00 【公众号: 奋飞安全】
一、目标
前几天有个朋友问了我一个新手问题,frida提示: 找不到 p009cn.com.chinatelecom.gateway.lib.C1402a 这个类
1:main
原因是,jadx反编译的时候,为了反混淆,会把类名做个处理,加上几个数字,这样好让你分辨,不会满眼都是变量a。
实际上他已经提示你了,这个类的真实类名是 cn.com.chinatelecom.gateway.lib.a
本以为事情就这么过去了,谁知道没过两天,在一个夜黑风高的的晚上,我也遇到了这个问题。
二、步骤
类名是奇怪字符
老江湖也遇到新问题了,这个类名是什么鬼?
1:step1
现在的App太不讲武德了,混淆我也就忍了,搞出个鬼画符,是什么操作?
这个符可不好打出来,常规操作是直接把类名复制到js里面,结果不好使,frida依然抱怨 找不到这个类。
查了一下js文档,有个 encodeURIComponent() 函数,可以把这种鬼画符通过 UTF-8 编码的转义 然后打印出来。
但是这个类名的转义字符是啥呢?
遍历之
我们可以找个取巧的方式,把这个包下的类都遍历出来,这样不就可以知道这个类名的UTF-8 编码的转义了吗?
Java.enumerateLoadedClasses({ onMatch: function(className) { if(className.indexOf('com.google.android.material.tooltip') >=0 ){ console.log(className.toString()); console.log(encodeURIComponent(className.toString())); } }, onComplete:function(){ }});
跑一下,符显形了。
1:show1
Hook之
拿到了转义编码之后如何hook呢? 这时候就需要 decodeURIComponent函数了
var hookCls = Java.use(decodeURIComponent('com.google.android.material.tooltip.%DB%A4%DB%A4%DB%9F%DB%A6'));
这次frida就不抱怨找不到类名了。
成员函数名
找到了类名当然不是我们的目的,我们的目的是星辰大海,哦不,是hook成员函数呀。
1:step2
不出所料,它的方法名,依然是鬼画符。
这时候我们就需要去遍历方法名了
var hookCls = Java.use(decodeURIComponent('com.google.android.material.tooltip.%DB%A4%DB%A4%DB%9F%DB%A6'));var methods = hookCls.class.getDeclaredMethods();for (var i in methods) { console.log(methods[i].toString()); console.log(encodeURIComponent(methods[i].toString().replace(/^.*?.([^\s.()]+)(.*?$/, "$1")));}
结果倒是没问题,就是分辨起来还有点麻烦。只能从成员函数的入参和返回值来分辨我们想要hook的成员函数
1:show2
Hook这个成员函数的代码如下
hookCls[decodeURIComponent("%DB%9F%DB%A3%DB%A5%DB%9F%DB%A3")] .implementation = function () { console.log("m1344 =============== "); return "xxx"; }
搞定,收工~
三、总结
为了抵抗分析,App能想的办法都想了。只能比谁藏的更深,找的更快了。
总把平生入醉乡
Tip:
: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。
关注微信公众号: 奋飞安全,最新技术干货实时推送
边栏推荐
- GPS satellite synchronization clock, NTP network synchronization clock, Beidou clock server (Jingzhun)
- Redis的主从复制和集群
- Go 事,如何成为一个Gopher ,并在7天找到 Go 语言相关工作,第1篇
- 你一定从未看过如此通俗易懂的YOLO系列(从v1到v5)模型解读
- 《2022 年上半年全球独角兽企业发展研究报告》发布——DEMO WORLD世界创新峰会圆满落幕
- Roslyn 在 msbuild 的 target 判断文件存在
- 07-输入输出系统
- 功率放大器的设计要点
- 有哪些好用的IT资产管理平台?
- 【打卡】广告-信息流跨域ctr预估(待更新)
猜你喜欢
随机推荐
成员变量与局部变量的区别有哪些
保证通信的机制有哪些
重构指标之如何监控代码圈复杂度
C# 写系统日志
DMS 有接口获取每个实例下的数据库列表吗
OGG判断mgr状态并自动启动脚本
2022-08-04日报:量化细胞内的信息流:机器学习时代下的研究进展
线上一次JVM FullGC搞得整晚都没睡,彻底崩溃
To ensure that the communication mechanism
无心剑七绝《七夕牵手》
吴恩达机器学习[12]-机器学习系统设计
可视化大屏丑?这篇文章教你如何做美观大屏!
Summary of some pytorch knowledge points that have been updated for a long time
What is an artifact library in a DevOps platform?What's the use?
dotnet core 添加 SublimeText 编译插件
【二叉树】根据描述创建二叉树
How to monitor code cyclomatic complexity by refactoring indicators
#夏日挑战赛# HarmonyOS 实现一个滑块验证
Tomato assistant downloading tomatoes
MetaAI科学家解读最新模型:200+语言互译,扩充千倍翻译数据,全球元宇宙用户自由交流