objection 基础案例 一

案例说明:Hook 某个APP里面的计算器功能进行减法Hook的出结果,并且做成主动HOOK结合python的RPC

截图说明:

一:示例 APP junior

二: APP 主页面 (简单计算器)

 三:简单计算器主页面

 第一步:找到目标APP的唯一包名。

两个方法:

1、用jadx直接反编译查看androidmanifest.xml文件里面的

 2、就是载没打开的这个APP的情况下查看正在运行的程序列表frida-ps -U,然后在打开APP在查看运动的APP列表坐下差大概判断下。

第二步:HOOK APP开始

objection -g com.example.junior explore

第三步:objection 遍历APP所有activity(活动)

 第四步:测试这个活动是不是 计算器 的活动,那就是启动这个活动

第五步:启动了说明找对了,用jadx找到 CalculatorActivity.java 类,然后看到一堆的点击事件

 第六步:接下来就hook这个类CalculatorActivity下面的所有方法,定位到 caculate() 这个方法

 第七步:定位到 caculate() 这个方法,hook 这个方法

 

第八步:jadx 找到这个方法 HOOK 到减法类 Arith下的sub方法,测试下

 

 第九步:确定了方法定位后 编写hook脚本

Java.perform(function(){

var Arith = Java.use('com.example.junior.util.Arith')

Arith.sub.overload('java.lang.String', 'java.lang.String').implementation = function(str1, str2){

var result = this.sub(str1, "123")

console.log('str1,str2,result => ', str1, str2, result)

//通过JAVA中获取调用栈的方式进行打印

console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()))

return result

}

})

第十步:主动调用 编写hook脚本

function callSub(){

Java.perform(function(){

var Arith = Java.use('com.example.junior.util.Arith')

var JavaString = Java.use('java.lang.String')

var result = Arith.sub(JavaString.$new('123'), JavaString.$new('122'))

console.log("123 - 122 = ", result)

})

}

第十一步:rpc js脚本结合 py代码

js脚本

function CallSub(a, b){

Java.perform(function() {

var Arith = Java.use('com.example.junior.util.Arith')

var JavaString = Java.use('java.lang.String')

var result = Arith.sub(JavaString.$new(a), JavaString.$new(b))

console.log("a - b = ", result)

})

}



rpc.exports = {

sub: CallSub,

};

py脚本

#!/usr/bin/python

# -*- coding:utf-8 -*-

import sys

import frida


def on_message(message, data):

    if message['type'] == 'send':

        print("[*] {0}".format(message['payload']))

    else:

        print(message)


devices = frida.get_usb_device()

process = devices.attach('junior')


with open('junior_sub_attach_rpc.js') as f:

jscode = f.read()


script = process.create_script(jscode)

script.on('message', on_message)

script.load()


for i in range(20, 30):

for j in range(0, 10):

script.exports.sub(str(i), str(j))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
"Objection, wallbreaker"这个词组的意思可能是指在辩论或讨论中,对破除对方观点或阻碍的反对意见或观点。如果我要用300字回答这个问题,我会这样表达: 在辩论或讨论中, "objection, wallbreaker"是指提出反对意见或观点,意图破除或击破对方观点或阻碍。这个词组的出现通常是为了追求真实和公正的辩论,希望通过不同观点的碰撞促进智慧和认识的增长。 每个人都有自己的观点和立场,而辩论是一个相互交流、较量、甚至对抗观点的过程。当有人提出"objection, wallbreaker"时,他们可能持有不同的观点,希望通过辩论来找到真相或者找到更好的解决办法。 然而,在提出"objection, wallbreaker"时,我们也需要注意呈现我们的观点要公正和明晰。我们应该以理性的态度和充分的证据来支持我们的反对意见,而不是简单地提出不成熟的批评或个人攻击。 辩论中的"objection, wallbreaker"是一种促进思考和发展的机会。通过挑战和争论,我们可以更清晰地理解对方观点的有趣之处和缺点。这种挑战有助于增强我们的辩论能力、提升思维的灵活性,并可能在辩论过程中改变我们自己的立场。 总之,"objection, wallbreaker"是辩论中常见的现象之一,它代表了追求真相和理解的努力。在辩论中提出反对观点时,我们必须以开放和尊重的态度对待对方,并用理性的方式来支持我们的观点。通过这样的辩论,我们可以共同进步,获得深入的认识和智慧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值