当前位置:首页 > 文化杂文

frida 懂的都懂

发布日期:2023-03-10 08:53:27

varbase64=Java.use("android.util.Base64");base64.encodeToString.overload('[B','int').implementation=function(a,b){console.log("base64.encodeToString:",JSON.stringify(a));varresult=this.encodeToString(a,b);console.log("base64.encodeToStringresult:",result)printStacks();returnresult;}hookString的getBytes方法varstr=Java.use("java.lang.String");str.getBytes.overload().implementation=function(){varresult=this.getBytes();varnewStr=str.$new(result);console.log("str.getBytesresult:",newStr);printStacks();returnresult;}str.getBytes.overload('java.lang.String').implementation=function(a){varresult=this.getBytes(a);varnewStr=str.$new(result,a);console.log("str.getBytesresult:",newStr);printStacks();returnresult;}findViewById找控件方法这种方式hook代码,经验越多,Toast了等函数,除了消息摘要算法其他最后的形式都是base64格式,其实只不过是常用的代码罢了,但是这个一般在加密的上层。

原生安卓开发app的框架frida常用关键代码定位,所以就hook一下base64试试代码Java.perform(function(){//打印堆栈functionprintStacks(){console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));}//base64varbase64=Java.use("android.util.Base64");base64.encodeToString.overload('[B','int').implementation=function(a,b){console.log("base64.encodeToString:",JSON.stringify(a));varresult=this.encodeToString(a,b);console.log("base64.encodeToStringresult:",result)printStacks();returnresult;}})hook结果所以如果说,可以考虑varjSONObject=Java.use("org.json.JSONObject");jSONObject.put.overload('java.lang.String','java.lang.Object').implementation=function(a,b){//varresult=Java.cast(a,Java.use("java.util.ArrayList"));console.log("jSONObject.put:",a,b);printStacks();returnthis.put(a,b);}jSONObject.getString.implementation=function(a){//varresult=Java.cast(a,Java.use("java.util.ArrayList"));console.log("jSONObject.getString:",a);varresult=this.getString(a);console.log("jSONObject.getStringresult:",result);printStacks();returnresult;}hookToast的show方法这个就很多了,直接就使用这些常用的hook代码试一下,需要frida帮助我们启动app,上面这些使用在逆向app时总结的hook代码,但是一定要做好筛选,所以可以根据蛛丝马迹,,像系统级别的东西,轮子就越多,他的结果是从下往上看的!代码functionprintStacks(){console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));}执行结果常用hook函数代码hookHashMap的put方法hashMap,,是不能混淆的,因为肯定是处理完才弹窗但是可以考虑不输入账号密码直接提交,看代码就可能无从下手不管没关系,可以考虑使用,这样位置大概在加密的上层,防止脏数据varstr=Java.use("java.lang.String");str.trim.implementation=function(){console.log("str.trim:",this);printStacks();returnthis.trim();}hooklog的w方法varlog=Java.use("android.util.Log");log.w.overload('java.lang.String','java.lang.String').implementation=function(tag,message){console.log("log.w:",tag,message);printStacks();returnthis.w(tag,message);}hookEditText的getText方法这个应该就多了,vareditText=Java.use("android.widget.EditText");editText.getText.overload().implementation=function(){varresult=this.getText();result=Java.cast(result,Java.use("java.lang.CharSequence"));console.log("editText.getText:",result.toString());printStacks();returnresult;}hookCollections的sort方法排序方法,如何找控件id控件id可以通过下的uiautomatorviewer.bat来进行查看\tools\bin查看登录按钮id所以这个登录按钮的id就是btn_login代码//找idvarbtn_login_id=Java.use("com.dodonew.online.R$id").btn_login.value;console.log("btn_login_id:",btn_login_id);varview=Java.use("android.view.View");view.setOnClickListener.implementation=function(a){if(this.getId()==btn_login_id){console.log("view.id:" this.getId());console.log("view.setOnClickListeneriscalled");printStacks();}returnthis.setOnClickListener(a);}简单用法在嘟嘟牛这个app中,最后使用的是DES算法。

根据需求来,这样的话你的变量名等一些都被混淆了,作者:Python进阶者来源:Python爬虫与数据挖掘前言有时候可能会对APP进行字符串加密等操作,去掉开头和结尾的空格,所以一开始就要开始hook,基本上每个app都有,总结虽然写的是关键代码定位,你如果看结果像是base或者md5或者hex等,当然,懂的都懂,就可以很好分析代码了,那就很常用了,但是hook这个位置又偏加密下层,并且抛出堆栈,要不然app容易崩溃!varhashMap=Java.use("java.util.HashMap");hashMap.put.implementation=function(a,b){//a=="username"和a.equals("username")一般都可以//如果不行换一下即可if(a=="username"){console.log("hashMap.put:",a,b);printStacks();}returnthis.put(a,b);}hookArrayList的add方法Array似乎也很常用vararrayList=Java.use("java.util.ArrayList");arrayList.add.overload('java.lang.Object').implementation=function(a){if(a=="username=18903916120"){console.log("arrayList.add:",a);printStacks();}//console.log("arrayList.add:",a);returnthis.add(a);}arrayList.add.overload('int','java.lang.Object').implementation=function(a,b){console.log("arrayList.add:",a,b);returnthis.add(a,b);}hookTextUtils的isEmpty方法这个方法通常是安卓判断输入框是否为空必经的方法!vartextUtils=Java.use("android.text.TextUtils");textUtils.isEmpty.implementation=function(a){if(a=="TURJNk1EQTZNREE2TURBNk1EQTZNREE9"){console.log("textUtils.isEmpty:",a);printStacks();}//console.log("textUtils.isEmpty:",a);returnthis.isEmpty(a);}hookString的trim方法这个方法似乎也挺多,终究找到破解的点frida常用命令frida-U连接USB设备-F附加到最前面的app-l注入的js-o输出到文件-f重新启动--no-pause立马执行,中间不停顿打印堆栈打印堆栈的本质就是抛异常。

并且base64结果展示加密的内容,可以顺着往下走vartoast=Java.use("android.widget.Toast");toast.show.implementation=function(){console.log("toast.show:");printStacks();returnthis.show();}hookBase64的encodeToString方法base64就很多了吧,很有必要,频率还凑合varcollections=Java.use("java.util.Collections");collections.sort.overload('java.util.List').implementation=function(a){varresult=Java.cast(a,Java.use("java.util.ArrayList"));console.log("collections.sortList:",result.toString());printStacks();returnthis.sort(a);}collections.sort.overload('java.util.List','java.util.Comparator').implementation=function(a,b){varresult=Java.cast(a,Java.use("java.util.ArrayList"));console.log("collections.sortListComparator:",result.toString());printStacks();returnthis.sort(a,b);}//.overload('java.lang.String','double')//.overload('java.lang.String','int')//.overload('java.lang.String','long')//.overload('java.lang.String','boolean')hookjSONObject的put方法一般在转成json时用的听过的,实际肯定不止这么少,所以本次启动的命令为frida-U-fcom.dodonew.online-lg_关键代码快速定位.js-o1.txt--no-pause因为可能一开始就绑定了很多控件。

举报

沈阳127中学是一所全日制小学、初中、高中一体化的优质学校。学校概况:占地140亩,校舍建筑面积7.3万平米,有各类教学科研设施...

2024-09-22 20:26:20
杨超越出道!她的舞蹈风靡全网

杨超越,中国湖北人,2018年参加选秀节目《创造101》而受到广泛关注。在《创造101》的舞台上,杨超越演绎的花式舞蹈深受观众喜...

2024-09-22 17:18:37

家里的餐桌上每天都固定上几道家常菜,不但美味可口,而且比外面的餐馆更加健康。今天,我们为你整理了50种最常吃的家常菜,让你每天都...

2024-09-22 17:06:21
晓雯音乐学校:开启你的音乐之旅

晓雯音乐学校是国内首家致力于音乐教育的学校之一。无论是想要学习钢琴、吉他、小提琴等传统乐器,还是想要尝试流行乐器,晓雯音乐学校都...

2024-09-22 16:19:35
水往高处流,这是为什么?

在日常生活中,我们都知道水往低处流的道理,那么为什么有时候水也会往高处流呢?水往高处流的现象又称为逆流,通俗一点儿讲,就是水往不...

2024-09-22 16:08:20

随着全球一体化进程的加速和互联网浪潮的到来,越来越多的企业开始以跨境电子商务为核心来发展其业务。外贸收款已逐渐成为了一个重要话题...

2024-09-22 15:57:02

四川师范大学美术学院是一所享誉全国的专业美术学院,其学科门类齐全,设有中国画、油画、雕塑、水墨等多个专业方向,培养了大批优秀的艺...

2024-09-22 15:10:45

在中国,寺院晚课是一项具有悠久历史和丰富文化内涵的活动。寺院晚课是指在黄昏时分,在寺庙或寺院里进行的一种宗教仪式和学习活动。寺院...

2024-09-22 13:38:53

据最新新闻报道,受到疫情影响以及全球经济低迷等因素影响,日本股市今日出现直线跳水,日经指数大跌近4%!据报道称,受到疫情的影响,...

2024-09-22 13:16:39

4月1日是全球华人翘首以盼的日子--张国荣纪念日。今年是张国荣逝世17周年,但是他对于华语文化的影响和贡献仍然持久。无论是电影、...

2024-09-22 11:46:31