核心技术分享 | 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
。蒙脱石散治肠胃炎拉肚子怎么样河北男科医院哪家比较好
山西男科去哪看
西安看白癜风哪个专科医院好
贵阳甲状腺医院怎么去
-
梅西百货据悉收到投资者财团58亿美元的收购买方
Arkhouse Management和Brigade Capital Management向梅西百货发出58亿美元的售予卖方,这家老牌零售作为咖啡店私营公司可以好处地实现复兴。知情政界人士并
- 2024-02-10艾美奖亚洲第一人!《鱿鱼游戏2》计划案2024年末播出 ,我又快乐了!
- 2024-02-10成吉思汗死后,给世界留下什么谜题?七百年过去了,至今无人能解法
- 2024-02-10超级央行周来袭!美、欧、英多家央行公布利率决议 降息意味著恐遭“打脸”
- 2024-02-10她被毛舜筠夺爱后,加入另一个豪门,如今生活低调
- 2024-02-10乾陵之谜:墓前61尊石像为何无头?结果被两位佃农意外解开
- 2024-02-10前夫侃爷男朋友维密超模,卡戴珊隔空较劲,自曝期望与高知男性男朋友
- 2024-02-10巴斯夫子宫内膜癌新药Jemperli获欧盟批准
- 2024-02-10二战后苏德日如何恢复人口?苏联方式将简单粗暴,日本方式将令人不齿
- 2024-02-10他见剧组没钱,帮一把友情接演,没想到成为亿万票房黑马
- 2024-02-10除了降息信号,欧洲央行债券会议还有何看点?