javascript - Frida - 访问具有所需类型的类属性

标签 javascript java android security frida

我有一个已被混淆的 Android 程序。在这个程序中,类具有同名的属性。 反编译后的代码是这样的

public class d implements c
{
    public int a;
    public Cache$Entry a;
    public Cache a;
    public volatile a a;
    public e a;
    public ByteArrayOutputStream a;
    public volatile AtomicBoolean a;

或这样的 smali 代码

# interfaces
.implements Le/a/x/c;
# instance fields
.field public a:I
.field public a:Lanetwork/channel/cache/Cache$Entry;
.field public a:Lanetwork/channel/cache/Cache;
.field public volatile a:Ld/a/w/a;
.field public a:Le/a/x/e;
.field public a:Ljava/io/ByteArrayOutputStream;
.field public volatile a:Ljava/util/concurrent/atomic/AtomicBoolean;  

我创建了一个方法 asd() 的 Hook ,并且我需要访问此类的属性“a”。但我需要类型为“e.a.x.e”的属性“a”

Java.perform(function () {
   var var_ddd = Java.use("e.a.x.d");
    var_ddd.asd.implementation = function() {
       this.asd();
       console.log("e.a.x.d.asd()",Java.cast(this.a.value,Java.use("e.a.x.e")));
    };
});

当我尝试编写 this.a.value 时 - 我得到了错误的属性。 当我写 Java.cast(this.a.value,Java.use("e.a.x.e")) 我收到消息

TypeError: cannot read property 'hasOwnProperty' of undefined

请告诉我如何使用正确的类型获取正确的属性

最佳答案

感谢 Robert,找到了解决方案。代码做了一些小修正

var lo_fld_eaxe;
var lv_found = false;
var lt_fields = this.getClass().getDeclaredFields();
for (var i = 0; i < lt_fields.length && lv_found == false; i++) {
    if(lt_fields[i].getName().toString() == 'a' &&  lt_fields[i].getType().getName().toString() == 'e.a.x.e' ){
       lo_fld_eaxe = lt_fields[i];
       lv_found = true; 
  }
}
if(lv_found == true) {
   lo_fld_eaxe.setAccessible(true);
   try{ 
          var       lv_e_a_x_e = lo_fld_eaxe.get(this);   
   }
   catch(err){
          console.log("Error:"+err);
   }
 }

关于javascript - Frida - 访问具有所需类型的类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60465832/

相关文章:

javascript - 如何在单击输入时从对象中过滤数据?

javascript - MutationObserver 没有在子节点上拾取

java - Android 的自定义类加载器?

android - 在 Espresso Android 中使用 IdlingResource 的正确方法

javascript - 在 HTML 中加载/调用 javascript 的适当位置

java - 如何仅为特定标记设置 InfoWindowAdapter

java - Jsoup NoClassDefFoundError 错误

c# - 使用 Akavache 在 ListView 适配器中显示图像

android - ListView setChoiceMode 未显示

javascript - 在 beforeEach 期间将 vuex 模块状态传递给 vue-router