惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
B
Blog
V
V2EX
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
博客园 - 聂微东
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
The Cloudflare Blog
J
Java Code Geeks
H
Help Net Security
雷峰网
雷峰网
Apple Machine Learning Research
Apple Machine Learning Research
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
D
Docker
L
LangChain Blog
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
WordPress大学
WordPress大学
V
Visual Studio Blog

Mox的笔记库

2026PPoPP MLIR Tutorial学习 | Mox的笔记库 MacOS配置《明日方舟:终末地》 | Mox的笔记库 2025:向内生长 | Mox的笔记库 由mlir::ExecutionEngine引发的跨系统问题 | Mox的笔记库 WSL2配置Cuda-Tile环境记录(未完待续) | Mox的笔记库 Vibe Coding手搓项目记录 | Mox的笔记库 给Debian上包——以DuckDB为例 | Mox的笔记库 UCPD.sys事件存档 | Mox的笔记库 换新电脑之Mac mini M4从购买到配置 | Mox的笔记库 Mac配置MLX-C开发环境 | Mox的笔记库 RISC-V meets RDBMS——RISC-V架构上可运行数据库一览 | Mox的笔记库 DuckDB Sort实现调查 | Mox的笔记库 修复Redis在树莓派5上无法运行的问题 | Mox的笔记库 如何在MLIR中自定义类型并且输出运行 | Mox的笔记库 网站网络结构变更记录 | Mox的笔记库 EDBT25论文阅读:PhoebeDB——A Disk-Based RDBMS Kernel for High-Performance and Cost-Effective OLTP SIGMOD25论文阅读:BPF-DB:——A Kernel-Embedded Transactional Database Management System For eBPF Applications Apache Arrow Gandiva项目解析 | Mox的笔记库 VLDB24论文阅读:Cloud-Native Database Systems and Unikernels——Reimagining OS Abstractions for Modern Hardware NoisePage源码分析(未完待续) | Mox的笔记库 VLDB20论文阅读:Mainlining Databases——Supporting Fast Transactional Workloads on Universal Columnar Data File Formats VLDB17论文阅读:Relaxed Operator Fusion for In-Memory Databases:Making Compilation, Vectorization, and Prefetching Work Together At Last 论文阅读:How not to structure your database-backed web applications——a study of performance bugs in the wild SIGMOD24阅读:ROME——Robust Query Optimization via Parallel Multi-Plan Execution 文章阅读:First Past the Post-Evaluating Query Optimization in MongoDB SIGMOD文章阅读:Apache Calcite——A Foundational Framework for Optimized Query Processing Over Heterogeneous Data Sources VLDB23论文阅读:Analyzing the Impact of Cardinality Estimation on Execution Plans in Microsoft SQL Server SIGMOD22论文阅读:Efficient Massively Parallel Join Optimization for Large Queries VLDB论文阅读:Weaving Relations for Cache Performance VLDB22论文阅读:ConnectorX——Accelerating Data Loading From Databases to Dataframes
Frida hook初次实战 | Mox的笔记库
MocusEZ · 2022-02-08 · via Mox的笔记库

做攻防世界的CTF题,看到有大佬搞Frida的操作,按照大佬做到试了一下

ill-intentions(Native hook)

攻防世界——ill-intentions

image-20220208112109013.png

frida,frida-server,objection该安装的都安装好

adb连接上机子

由于没有修改apk包,触发按钮的Intent显示不了,用objection手动开启

objection -g com.example.hellojni explore

android intent launch_activity com.example.application.IsThisTheRealOne

image-20220208112221166.png

效果如下

1644290634948.jpg

挂上大佬hook Native的脚本

//出自https://blog.csdn.net/Palmer9/article/details/122464683

//别问脚本什么意思,frida脚本还不太会写

function main() {

function getjstring(jstr) {

return Java.vm.getEnv().getStringUtfChars(jstr, null).readCString();

}

Java.perform(function () {

var so_addr = Module.findBaseAddress("libhello-jni.so");

var perhapsThis_addr = Module.findExportByName("libhello-jni.so", "Java_com_example_application_IsThisTheRealOne_perhapsThis");

console.log("perhapsThis_addr", perhapsThis_addr);

Interceptor.attach(perhapsThis_addr, {

onEnter: function (args) {

console.log("perhapsThis_args:[1]", getjstring(args[2]), "\n [2]", getjstring(args[3]), "\n [3]", getjstring(args[4]), "\n");

},

onLeave: function (retval) {

console.log("perhapsThis_result:", getjstring(retval));

},

});

Interceptor.attach(Module.findExportByName("libhello-jni.so", "Java_com_example_application_ThisIsTheRealOne_orThat"), {

onEnter: function (args) {

console.log("orThat_args:[1]", getjstring(args[2]), "\n [2]", getjstring(args[3]), "\n [3]", getjstring(args[4]), "\n");

},

onLeave: function (retval) {

console.log("orThat_result:", getjstring(retval));

},

});

Interceptor.attach(Module.findExportByName("libhello-jni.so", "Java_com_example_application_DefinitelyNotThisOne_definitelyNotThis"), {

onEnter: function (args) {

console.log("definitelyNotThis_args:[1]", getjstring(args[2]), "\n [2]", getjstring(args[3]), "\n");

},

onLeave: function (retval) {

console.log("definitelyNotThis_result:", getjstring(retval));

},

});

});

}

setImmediate(main);

出flag

image-20220208111547214.png

ill-intentions(java hook)

GDA

看雪大佬出品的GDA 好用!

还是因为没有修改apk包,触发按钮的Intent显示不了,再次用objection手动开启,找到相对应的进程注入

image-20220208113438039.png

鼠标点击,即可完成操作

image-20220208113530767.png

按下中间那个BroadcastIntent,就能hook出flag

image-20220208113157555.png

Obejction直接注入

发现GDA那个纯属走弯路,直接Objection注入不就好了

objection -g com.example.hellojni explore

>>CLI中输入

android intent launch_activity com.example.application.IsThisTheRealOne

android hooking watch class_method android.content.Intent.putExtra --dump-return --dump-args --dump-backtra

ce

image-20220208115213479.png

遇到一个问题,就是不知道Intent属于什么类,这个是看了GDA里的脚本后才知道的(android.content.Intent),如果想要直接注入的话,需要andriod的开发经验

bilibili-1024-技术对抗赛第6题(2021年)

参考了 https://www.bilibili.com/read/cv13720199/

大佬的脚本少写启动命令,当时折腾一个早上没解决出来

function hook_native() {

Java.perform(function(){

var str0;

var arg1;

Interceptor.attach(Module.findExportByName("libc.so", "__system_property_get"), {

onEnter: function (args) {

str0 = Memory.readCString(args[0]);

arg1 = args[1];

if(str0.indexOf('ro.product.cpu.abi')!=-1||str0.indexOf('ro.build.version.release')!=-1){

console.log('arg0 '+str0)

}

},

onLeave: function (retval) {

if(str0.indexOf('ro.product.cpu.abi')!=-1){

var before = Memory.readCString(arg1);

Memory.writeUtf8String(arg1, "x86");

var after = Memory.readCString(arg1);

console.log('retval:','before',before,'after',after)

}else if(str0.indexOf('ro.build.version.release')!=-1){

var before = Memory.readCString(arg1);

Memory.writeUtf8String(arg1, "9");

var after = Memory.readCString(arg1);

console.log('retval:','before',before,'after',after)

}

}

});

});

}

setImmediate(hook_native);

方便是真的方便,大佬诚不欺我

1644293335887.jpg

结语

Objection好用,降低Frida使用门槛,java层面的hook可以解决很多问题,Native hook老实写frida就行了


avatar

探索未曾设想的道路