当前位置:网站首页>寻找消失的类名
寻找消失的类名
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 讨论下。
关注微信公众号: 奋飞安全,最新技术干货实时推送
边栏推荐
- 面了三十个人,说说真实感受
- DocuWare平台——用于文档管理的内容服务和工作流自动化的平台(上)
- 【已解决】allure无法生成json文件和AttributeError: module ‘allure‘ has no attribute ‘severity_level‘
- 荐书 | 《大脑的奥秘:人人要懂的脑科学》:大脑里面有什么
- Xi'an Zongheng Information × JNPF: Adapt to the characteristics of Chinese enterprises, fully integrate the cost management and control system
- 74行代码实现浪漫的红心下落的动画效果
- jasmine.any(Function) 的一个使用场景
- 吴恩达机器学习[13]-支持向量机
- 初学爬虫笔记(收集数据)
- 第三章 Scala运算符
猜你喜欢
[TA-Frost Wolf_may-"Hundred Talents Project"] Art 2.7 Metallic and Speculer Process
To ensure that the communication mechanism
录音文件识别
js判断一个对象是否在一个对象数组中
74行代码实现浪漫的红心下落的动画效果
一文详解什么是软件部署
成功 解决 @keyup.enter=“search()“ 在el-input 组件中不生效的问题
《电磁兼容防护EMC》学习笔记
软考 --- 软件工程(2)软件开发方法
Projector reached the party benefits 】 【 beginners entry - brightness projection and curtain selection - from entry to the master
随机推荐
Task Computing【动态规划_牛客】
(2022杭电多校五)C - Slipper (dijkstra+虚拟结点)
B 站又上热搜了, HR 称「核心用户都是 Loser」
dotnet core 添加 SublimeText 编译插件
番茄插件番茄助手下载
不需要服务器,教你仅用30行代码搞定实时健康码识别
Go Go 简单的很,标准库之 fmt 包的一键入门
爬虫小白笔记(昨天的对于注意解析数据的补充)
解决dataset.mnist无法加载进去的情况
邮差"头":{“retCode”:“999999”
数据分析入门导读
5 基本引用类型
DocuWare Platform - Content Services and Workflow Automation Platform for Document Management (Part 1)
【Gopher 学个函数】边学边练,简单为 Go 上个分
An article to answer what is the product library of the DevOps platform
把boot和APP一起烧录进MCU
dot net core 使用 usb
可视化大屏丑?这篇文章教你如何做美观大屏!
numpy入门详细代码
【Es6中的promise】