安洵杯 2023 RE mobilego WP

需要安装frida和objection插件进行调试(做题五分钟,装环境两小时[○・`Д´・ ○])

jadx分析:用关键字符串搜索找到主函数(用apk做测试用错误的提示字符串搜索更加容易想到)

大概是取了R.string.cmp中的数据,经过checkflag函数加密了

在资源文件中寻找

得到了疑似flag的数据 49021}5f919038b440139g74b7Dc88330e5d{6 应该是只是经过了顺序颠倒(但愿吧)

用frida下的objection在雷电模拟器里调试该程序

  • objection hook的基本命令是:android hooking watch class_method 方法名 [参数1类型名,参数2类型名...] [--dump-args] [--dump-return] [--dump-backtrace]

这里hook checkflag 函数,在文件中输入一串不重复的数据

>objection -g mobilego explore
Using USB device `Android Emulator 5554`
Agent injected and responds ok!

     _   _         _   _
 ___| |_|_|___ ___| |_|_|___ ___
| . | . | | -_|  _|  _| | . |   |
|___|___| |___|___|_| |_|___|_|_|
      |___|(object)inject(ion) v1.11.0

     Runtime Mobile Exploration
        by: @leonjza from @sensepost

[tab] for command suggestions
com.example.mobilego on (OPPO: 9) [usb] #  android hooking watch class_method game.Game.checkflag --dump-return
(agent) Attempting to watch class game.Game and method checkflag.
(agent) Hooking game.Game.checkflag(java.lang.String)
(agent) Registering job 723570. Type: watch-method for: game.Game.checkflag
com.example.mobilego on (OPPO: 9) [usb] # (agent) [723570] Called game.Game.checkflag(java.lang.String)
(agent) [723570] Return Value: ViLdOlJTePKcMYZFQBSHUCXWIaAGkfbDghjNER

得到打乱后的形式,通过脚本模仿打乱方式,完成解密

example="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl"
back="ViLdOlJTePKcMYZFQBSHUCXWIaAGkfbDghjNER"
crypto="49021}5f919038b440139g74b7Dc88330e5d{6"

for i in example:
    print(crypto[back.index(i)],end="")
  • 恶补: index() 函数用于从列表中找出某个值第一个匹配项的索引位置。

语法:list.index(x[, start[, end]])

x-- 查找的对象。 start-- 可选,查找的起始位置。 end-- 可选,查找的结束位置。

可得D0g3{4c3b5903d11461f94478b7302980e958}

  • 获得经验:可以先运行程序看看输出的字符串,然后到反编译软件里搜索输出的报错字符串位置,可以定位主函数!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值