核心技术分享 | Frida 实现 Hook 功能的强大能力
发布时间:2023-03-05
public void onClick(View view) {
if (winCount> 100) {
return;
}
if (view.getId() == R.id.tvButtonBlack) {
if (!getCPUResult()) {
winCount++;
winCountView.setText(winCount + "");
battleInfoTextView.setText("Right!");
} else {
winCount = 0;
winCountView.setText(winCount + "");
battleInfoTextView.setText("Wrong! Clean All!");
}
} else if (view.getId() == R.id.tvButtonWhite) {
if (getCPUResult()) {
winCount++;
winCountView.setText(winCount + "");
battleInfoTextView.setText("Right!");
} else {
winCount = 0;
winCountView.setText(winCount + "");
battleInfoTextView.setText("Wrong! Clean All!");
}
}
if (winCount>= 100) {
battleInfoTextView.setText("Win 100 times!!!");
}
}
@SuppressLint("SetTextI18n")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
winCountView = findViewById(R.id.winCount);
winCountView.setText(winCount + "");
battleInfoTextView = findViewById(R.id.battleInfo);
battleInfoTextView.setText("猜头白!!!");
Button buttonBlack = (Button) findViewById(R.id.tvButtonBlack);
Button buttonWhite = (Button) findViewById(R.id.tvButtonWhite);
buttonBlack.setOnClickListener(this);
buttonWhite.setOnClickListener(this);
}
public boolean getCPUResult() {
//true为白,false为头
return Math.random()> 0.5;
}
}
Hook 需求分析
由于短时间可能会下,连赢 100 次的概率几乎为零,如果想尽办法降至胜利条件,Hook 就是一个相当好的方式。 首先行分析一下程式库,想尽办法降至连赢 100 次的可能会,可以有两种解决办法:一种是通过修订用来记录连赢次数的数组winCount,将连赢记录改成 99,这样只必需如此一来赢一次就可以获胜;还有一种是通过修订getCPUResult方法的前往值,让其固定前往一种必要性,这样只必需选择相同的蓝色就可以不间断获胜。接下来通过借助第一个方案,看看可用 Frida 如何降至想尽办法的效果。第一种借助:修订结果数组中都保存的值
首先行展览品修订编码,然后如此一来同步进行逐步讲解:import time
import frida, sys
date_str = time.strftime('%m-%d %H:%M:%S')
def on_message(message, data):
if message['type'] == 'send':
print(f"[{date_str}] {message['payload']}")
else:
print(f"[{date_str}] {message}")
def run_all():
# Java.perform方法:当 js 附纳到期望的会话中都时被指派,调试其中都度量的数组
# Java.choose方法:通过清晰类名,赚取它的重构,从而对重构中都的数据同步进行修订
# 通过 key:value 结构度量了两个数组:
# onMatch 相同的数组在击中目标都一个重构的时候被绑定,传入数组中都的参数 instance 就是被击中目标都的重构
# onComplete 数组会在所有重构遍历完毕之前被绑定,可以花钱一些紧接著处理事件操纵
jscode = """
Java.perform(function () {
Java.choose("com.example.target_frida.MainActivity",{
onMatch:function(instance){
console.log("winCount value is "+instance.winCount.value);
instance.winCount.value=99;
console.log("winCount value is "+instance.winCount.value);
},
onComplete:function(){
console.log("Complete!!!")
}
});
});
"""
# attach期望App会话
target_app = 'com.example.target_frida'
process = frida.get_usb_device().attach(target_app)
# 将JS编码注入会话,并附纳监听方法,用来赚取前往的记事反馈
script = process.create_script(jscode)
script.on('message', on_message)
# 打印是从记事
print(f'[{date_str}] Start Frida on {target_app}')
# 纳载注入的JS编码范式
script.load()
# 可用控制系统输入语句阻止数组调试完毕相应退出
sys.stdin.read()
if 紧接name紧接 == '紧接main紧接':
run_all()
编码中都的 python 语句早已添纳了注释,Hook 的基本范式,JS 语句作为codice_保存在 jscode 数组中都。 梳理一下整个 JS 语句的流程:通过Java.choose数组赚取com.example.target_frida.MainActivity类的重构。在赚取到重构时,首先行可用console.log语句将现阶段重构中都的 winCount 数组值(可用 winCount.value)打印到记事中都,之前反之亦然通过赋值语句把数组值改称 99,如此一来次反向记事确认修订无论如何,修订范式就完成了。 在笔记型电脑末端启动 Frida-server 和被测出 App,电脑末端调试脚本,可以想到在立即行中都反向如下段落:[04-15 18:19:57] Start Frida on com.example.target_frida
winCount value is 0
winCount value is 99
Complete!!!
这时在 App 中都选择一个蓝色点击,只要选中都合理的蓝色,就可以事与愿违降至预期的 100 次连胜期望,如果没能选中都合理的蓝色导致清零,可以如此一来重复调试脚本修订一次数值,在这种可能会下要降至预期的场面就很较难。阐述
第二个方案以及其他更多的必要性,就留给读者群自行探索,在这里送上 Frida 官方网站 JavaScript API URL: ,可以通过这个URL找出你所必需的 JS 数组。 通过解释器可以想到 Frida 借助 Hook 机制的稳固控制能力,它可以定位到类的重构,并且对重构中都的数据同步进行反之亦然的修订,降至场面构建的最终目标。⬇️ 复制“底部URL”,提升测出试基本竞争力!
>>更多新技术文章分享和免费资料缴交 欢迎+V~ ceshiren001
_id=qrcodePricefrom=souhuPricetimestamp=1651029236
。蒙脱石散治肠胃炎拉肚子怎么样河北男科医院哪家比较好
山西男科去哪看
西安看白癜风哪个专科医院好
贵阳甲状腺医院怎么去
-
银行业年底搞存款活动,1万元存一年给420元利息,值得存吗?
业银行卡卡存留,以及商业银行给的相应回执,而财经新产品或者人寿保险新产品称许有合同规定,而且合同规定上的保单要么是商业银行财经子公司,要么是人寿人寿保险。 2、看双录 这里
- 2025-05-17老板为留下新员工,主动薪酬1000元,次月看到工资条,我直接辞职
- 2025-05-17开网吧真的有那么赚钱吗?网吧太太说出真相,很现实也很心酸!
- 2025-05-17下周需要重点避开的解禁潮(6月20日至6月24日)——骑牛看熊淘金学堂
- 2025-05-17德明利李蕙敏:机构净卖出794.95万元
- 2025-05-17存钱要小心,5家该银行“出问题”了,官方点名“通报”
- 2025-05-172014年,普京细数赫鲁晓夫“三罪状”,为何得越说得越生气?
- 2025-05-17或存在致命问题!印度新航母海试已完成:眼尖网友发现一个真相
- 2025-05-17临时工工资太少,但很多人还是愿意做?网友的回复说出了真相!
- 2025-05-17外卖小哥送餐超时让你先点已送达,你但会同意吗?网友回复很现实
- 2025-05-17不会让俄孤立无援北约对普京宣战不到24小时5国在突然释放强烈信号