声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!如有侵权烦请告知,我会立即删除并致歉。谢谢!
文章有疑问的,可以公众号发消息问我,或者留言。我每天都会看的。
字数 565,阅读大约需 3 分钟
前言
本文涉及:
Frida通过类的构造方法构建对象,包括无参构造方法以及有参构造方法。
本文结束时,Java层暂时告一段落。后续的文章将会开始说明native层的hook。
当然,这些只是依据靶场的简单使用。相当于先把Frida用起来,对Frida有所了解之后,深入起来更容易理解。
Challenge 0x6
APP说明
直接看反编译吧。
反编译与分析
分析:
要获得flag,需要我们传入一个Checker类的对象,并且这个对象的实例变量需要为指定值。
A.num1 = 1234
A.num2 = 4321
frida脚本编写
我们需要通过frida,创建一个Checker对象,并对实例对象赋值。
AI大模型,启动
你是一个安卓逆向工程师,frida创建一个Checker类的对象,num1赋值整型1234,num2赋值整型4321。
package com.ad2001.frida0x6;
public class Checker {
int num1;
int num2;
}
代码如下:
Java.perform(function() {
// 获取目标类
var Checker = Java.use('com.ad2001.frida0x6.Checker');
// 创建对象实例
var checkerInstance = Checker.$new();
// 设置字段值
checkerInstance.num1.value = 1234;
checkerInstance.num2.value = 4321;
});
结合主动调用实例方法的脚本,结合起来,如下:
function call_instance_method() {
Java.perform(function () {
// 创建Checker对象
var Checker = Java.use('com.ad2001.frida0x6.Checker');
var checkerInstance = Checker.$new();
checkerInstance.num1.value = 1234;
checkerInstance.num2.value = 4321;
Java.choose('com.ad2001.frida0x6.MainActivity', {
onMatch: function (instance) {
// 调用实例方法
instance.get_flag(checkerInstance)
},
onComplete: function () {
}
})
});
}
// frida -U -f com.ad2001.frida0x6 -l main.js
主动调用call_instance_method()
Challenge 0x7
frida通过类的有参构造方法创建对象
APP说明
反编译与分析
frida脚本编写
你是一个安卓逆向工程师,利用frida创建一个Checker对象,要求num1赋值555,num2赋值666。
package com.ad2001.frida0x7;
public class Checker {
int num1;
int num2;
public Checker(int a, int b) {
this.num1 = a;
this.num2 = b;
}
}
主要代码
var Checker = Java.use('com.ad2001.frida0x7.Checker');
var checker = Checker.$new(555, 666);
完整代码如下:
function call_instance_method() {
Java.perform(function () {
// 创建Checker对象
var Checker = Java.use('com.ad2001.frida0x7.Checker');
var checkerInstance = Checker.$new(555, 666);
Java.choose('com.ad2001.frida0x7.MainActivity', {
onMatch: function (instance) {
// 调用实例方法
instance.flag(checkerInstance)
},
onComplete: function () {
}
})
});
}
// frida -U -f com.ad2001.frida0x7 -l main.js
主动调用call_instance_method()
免费知识星球,每日推送安全文章,欢迎加入。
原文始发于微信公众号(进击的HACK):Frida通过构造方法创建对象 0x05
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论