frida 基础使用(4)– 构建 java 对象并调用
本文最后更新于 725 天前,其中的信息可能已经有所发展或是发生改变。

很多时候我们逆向应用的时候,目标参数并不是明文的内容。可能在 list 里面,或者就是某个 bean。或者我们要主动调用某个函数,需要传进去对象。 那这个时候我们应该怎么处理呢,我在这里简单分享一下

用 toast 举例

很多时候我们破解的方向是根据 toast 来做突破的,比如现在有个游戏在你重打包签名后,弹出 toast

“当前应用为破解应用,请下载官方正版应用“

那我们现在的突破口就是这个 toast

可以用 frida 来 hook 一下,看看调用逻辑

  var Toast = Java.use("android.widget.Toast");
  var makeText = Toast.makeText;
  var String = Java.use("java.lang.String");
  // 函数重载, 设置参数类型
  makeText.overload("android.content.Context", "java.lang.CharSequence", "int").implementation = function (
    context,
    content,
    time
  ) {
  // throw exception.$new("-----hook exception -----------------");
    var content = "111";
    var hookContent = String.$new(content);
    return this.makeText(context, hookContent, time);
  };

可以看到 我的方案是用 frida hook 整个 Toast 类,当 makeText 函数被调用的时候,抛出异常。或者替换调用的文字内容。

实际使用一般用 抛出异常来定位,这个 toast 是在 apk 的哪里弹出的,进而可以找到 apk 的保护判定逻辑。

特殊情况

有时候 apk 的机密信息,比如 apk 的后端服务签名密钥,或者就是从后端返回的用户的 用户 id,在使用的

时候都在一个bean 里面,那么我们怎么在 hook 过程中提取出来呢。

先简单模拟一个 java 例子

package com.a.b.c

public class ModelBean{
   public String signKey ;
   public int signCode;
   public String userId;
}



package com.a.b.c;

public class HttpDelegate{

    public void initBlock(ModelBean bean){
         //do logic
    }
}

我们现在要 hook initBlock 这个函数,打印 ModelBean 里面每个属性的内容,那么我们应该怎么写 js 来

hook 得到这个内容呢

首先构造一个 这个类的。 clazz ,类似 class.forName()

var modelBeanClazz = Java.use("com.a.b.c.ModelBean")

然后 hook initBlock 这个函数

var HttpDelegateClazz = Java.use("com.a.b.c.HttpDelegate")
var initBlockMethod = HttpDelegateClazz.initBlock
initBlockMehod.implementation = function(a){//入参名字随便写,a 也行 b 也行
  console.log("hook into initBlock method")
}

到这里已经hook 到了 initBlockMehod 这个函数,那怎么打印这个入参对象的属性呢。

initBlockMehod.implementation = function(a){//入参名字随便写,a 也行 b 也行
  //console.log("hook into initBlock method")
   var bean = Java.cast(a,modelBeanClazz)
   console.log(bean.signKey)
   console.log(bean.signCode)
   console.log(bean.userId)
}

其实很简单就是 先把入参 强转,然后直接 用 get属性的函数 拿到内容。

这样就可以避免重打包修改 smali,从而快速的破解应用

感谢观看~

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇