推荐肉丝r0ysue课程(包含安卓逆向与js逆向):

题目描述:Do you have have ill intentions?

打开查看MainActivity,仅仅注册了一个广播接收者

而这个广播接收者也没什么代码,仅仅是接受到不同的信息跳转到不同的Acitivity

三个Activity各有一个native函数


三个类逻辑差不多相同,只是调用的native方法不同,关系如下

DefinitelyNotThisOne:definitelyNotThis
sThisTheRealOne:perhapsThis
ThisIsTheRealOne:orThat

安装apk打开,只有MainAcitvity一个TextView,没有什么其他的东西,AndroidManifest.xml中,三个类均是未导出的状态

由于没有让用户输入,所以flag应该是某个阶段生成的,关键应该就在那三个native函数上,且根据名字只有一个是真的。

于是可以在java层hook intent.putExtra()方法来获得结果 和三个native方法得到参数
为了练习一下native hook,我hook了native层

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);

由于我没有修改apk文件,所以比较麻烦。需要开两个终端,先用objection android intent跳转到相应的activity,然后frida附加进程,在点击相应按钮获得hook输出。
或者采用重打包apk,给activity添加exported属性然后使用am命令来跳转到相应的Activity,修改入口也可以。

最终我们得到输出

orThat_args:[1] IIjsWa}iyYSmks
[2] ODBkNTNhZjRmMGZmMWYtMzhhMDIzMmMwYjcwNzlhMTUwMDczOWNlYjhjMhUWYWYeMzYiZDFkMTY?
[3] MhMhMGJhMTUhOGYWZThlZDQaYWJkYzkWZTktMTQhMjYhOTgiOTZkODgaNWRkZmFiZTciOGNlNDI?
orThat_result: KeepTryingThisIsNotTheActivityYouAreLookingForButHereHaveSomeInternetPoints!


perhapsThis_args:[1] TRytfrgooq|F{i-JovFBungFk\VlphgQbwvjHuDgaeTzuSt.@Lex^
[2] ZGFkNGIwYzIWYjEzMTUWNjVjNTVlNjZhOGJkNhYtODIyOGEaMTMWNmQaOTVjZjkhMzRjYmUzZGE?
[3] MzQxZTZmZjAxMmIiMWUzNjUxMmRiYjIxNDUwYTUxMWItZGQzNWUtMzkyOWYyMmQeYjZmMzEaNDQ?
perhapsThis_result: Congratulation!YouFoundTheRightActivityHereYouGo-CTF{IDontHaveABadjokeSorry}


definitelyNotThis_args:[1] YjYwYWZjMjRkMhVhZTQhZDIwZGFkNWJhMGZmZGYiYmQaMmFkMjBiMTEhNDAtMzMzMjdlZmEWNzU?
[2] MzYwNjMeNjgxNWZkNGQeOTFhOTIhNDkiMDVhNDBkYTAyNWQtYhYxNWYwOTUxMzZiMTlmMzciMjM?
definitelyNotThis_result: Told you so!

得到最终的flag为CTF{IDontHaveABadjokeSorry}

re学习笔记(98)攻防世界 mobile进阶区 ill-intentions相关推荐

  1. re学习笔记(93)攻防世界 - mobile进阶区 - Illusion

    推荐肉丝r0ysue课程(包含安卓逆向与js逆向): jeb载入查看MainActivity 可以发现是将用户输入,与encflag传入了native方法中去,native方法的返回值就是显示结果 而 ...

  2. 攻防世界web进阶区Web_python_block_chain详解

    攻防世界web进阶区Web_python_block_chain详解 题目 详解 51% 双花攻击 题目 详解 我们整理一下 Announcement: The server has been res ...

  3. 攻防世界高手进阶区 ——Mary_Morton

    攻防世界高手进阶区 --Mary_Morton 不容易呀,这都已经是第七题了,继续加油! 一,老规矩,先分析一下文件 checksec一下 发现开启了栈溢出,可能这个题就是学习栈溢出漏洞绕过的. 运行 ...

  4. 攻防世界MISC进阶区刷题记录

    文章目录 攻防世界MISC进阶区刷题记录 Ditf 运用stegextract进行分离 glance-50 gif图片分离组合脚本 hit-the-core Test-flag-please-igno ...

  5. 攻防世界 pwn进阶区----No.012 babyfengshui 解题思路

    攻防世界 pwn进阶区----No.012 babyfengshui 解题思路 1.本题解题思路 1.先期工作 1.运行程序查看基本逻辑 创建用户 展示用户 更新用户 删除用户 到这里就可以猜测这题有 ...

  6. 攻防世界高手进阶区——dice_game

    攻防世界高手进阶区--dice_game 题目里面啥都没有. 一.分析文件 checksec 只有栈溢出保护关闭了,其他都是开着的. 运行 可以看出是要猜数字,猜对50次. ida逆向 __int64 ...

  7. 攻防世界高手进阶区 ——forgot

    攻防世界高手进阶区 --forgot 看了半天,啥也没看懂,做出来了才发现啥也不是. 一,分析文件 checksec 还好,只开启了堆栈不可执行. 运行一下 翻译了一下,应该是判断邮箱是否合乎规矩. ...

  8. 攻防世界web进阶区Web_php_wrong_nginx_config详解

    攻防世界web进阶区Web_php_wrong_nginx_config详解 题目 详解 题目 打开发现无论我们输入什么他都会弹出网站建设不完全 那么我们使用御剑进行扫描,扫描到了admin和robo ...

  9. 攻防世界高手进阶区 ——反应釜开关控制

    攻防世界高手进阶区 --反应釜开关控制 题目没什么信息.在这里插入图片描述 1.分析文件 运行一下,可能为栈溢出的题. checkse 无栈溢出保护,无地址随机化,只有堆栈不可执行. 栈溢出可能性大. ...

最新文章

  1. oracle的存储过程 替换,为什么在存储过程中,变量替换无法使用索引?
  2. rateLimiter令牌桶限流算法
  3. c语言EOF0x99,C语言选择题99道.doc
  4. ajax获取cpu的占用率,JavaScript获取当前cpu使用率的方法
  5. Class.forName()方法抛出异常
  6. 设置文件为源文件(和src一样)
  7. mac下多个php版本切换(可操作版)
  8. java JVM常见的四大异常及处理方案
  9. patch补丁文件格式
  10. 龙卷风路径_和平精英龙卷风在哪里 龙卷风位置介绍
  11. 计算机专业保研面试备考:操作系统
  12. php 时辰,生辰八字时辰查询表对应的时间
  13. LVM 的自定义报告(pvs vgs lvs各参数详解)
  14. 开发测试环境 k8s node节点磁盘不足运维
  15. 刚刚!腾讯荣升Linux基金会白金会员
  16. 麒麟鲲鹏升腾鸿蒙巴龙,华为四大芯片 麒麟、巴龙、昇腾和鲲鹏“四大天王”...
  17. (总结)密码破解之王:Ophcrack彩虹表(Rainbow Tables)原理详解(附:120G彩虹表下载)
  18. Elastic Job入门示例
  19. 【翻译】非常详细易懂的法线贴图(Normal Mapping)
  20. 百趣代谢组学解读,从蛋白组学和代谢组学角度,浅析白番石榴成熟过程

热门文章

  1. 2018百度运维岗秋招面试题:36匹马6跑道快速找出前三名
  2. NIPS2017 GNN GraphSAGE 论文解读
  3. 如何从Java代码生成UML图(尤其是序列图)?
  4. 前端调用微信内置地图
  5. unity3d 优化 高中低端机 机型分类
  6. 2021物联网国赛Lora模块通用库开发——A卷
  7. 【调剂】江苏师范大学2022年硕士研究生调剂复试工作公告
  8. 支付宝即时到账接口使用历险记
  9. 北京科技大学计算机保研夏令营,志愿工时、保研、竞赛、创新学分及SRTP
  10. FISHER控制阀的使用和维修