吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6236|回复: 24
收起左侧

[Android CTF] 《2021bilibili 1024程序节》CTF破解逆向题

  [复制链接]
HNHuangJingYU 发表于 2021-10-24 18:53
本帖最后由 HNHuangJingYU 于 2021-10-25 09:37 编辑

2021哔哩哔哩程序节日破解逆向第5,6题思路如下:
第五题和第六题的附件是一样的,第五题很好解题,直接将对比的byte数组进行Base64转换再逐个异或3 运算就ok了,太简单不多说,flag = 516834cc-50e448af-bcf9ed53-9ae4328e
直接来到第6题 因为看到了首页加载了一个so层方法,但是没有用到,先不管直接进入so层分析,来到JNO_Onload函数如图:可以看到就动态注册了一个i函数

1

1

但是没有下文了,这里我配合搜索函数表和shift+f12查看字符表找到关键字bili_2233_3322通过字符交叉引用,最终锁定了all函数,如图:

2

2

3

3

嗯有了目标剩下就只剩分析了
1. _system_property_get函数就是验证以下abi型号,和apk的发行版本,ro.build.version.release这里应该就是判断是否加了debuggble关键字去调试程序了
2. 然后来到J_F_E函数这里就是读取手机/data目录下面的的文件了,但是这个app没有去申请读写文件权限就一直进不去判断,当然/data目录也不是一般用户可以读取的,这里有个root权限问题,当完成这里所有的判断后就可以进入字符加密逻辑层了

4

4

最重要的核心层在ZL7sprintfPcU17pass_object_size1PKcz函数通过传入dest和v10指针(正因为是指针操作地址才会改变它们的值变量)

5

5

嗯,思路清楚了,就剩执行了,这里因为对手机文件读取一直有问题,所以我就直接改了apk对它进行动态调试,首先在AndroidManifest.xml文件里加入android:debuggable="true"权限,因为是JNO_Oload层所以需要对其进行挂起调试,但是调试的时候再去改逻辑判断就很不舒服,而且多次挂起调试每次都要去改的话,很费时间,索性我就直接在so层就改了so文件如图:

6

6

将这里的判断进行取反就ok了,但是这里会涉及到file流指针也就是代码中的v6,当用到v6的时候程序就会报空指针

7

7

索性就再改一次吧,反正v6就只用来存放数据,我直接截取数据就行了,ok!改后图如下:

8

8

对应的代码我都nop掉了,用IDAPython脚本去nop就很快,所以不用担心费时间,脚本如下,如需自取:
[Python] 纯文本查看 复制代码
ea = idc.here()
addres_start = 0x147C
addres_end = 0x148C
for i in range(addres_start,addres_end):
ida_bytes.patch_byte(i,0x90)

这里选中进行nop也是可以的
[Python] 纯文本查看 复制代码
start = idc.read_selection_start()
end = idc.read_selection_end()
item = idc.next_head(start - 1, end)
while item != BADADDR:
   next = idc.next_head(item, end)
   ida_bytes.patch_byte(item,0x90)
   item = next


因为省去了/data目录下文件的读取所以在动调调试的时候就累点,断点在4849行也就是加密函数那里,然后按2F9再进去数据段记下来就好,也就记录8次吧也不是特累 ,因为for循环8次,哈哈哈哈哈,最后整合记下来的数据就是b13981f45ae996d4bc04be5b34662a78因为要按flag格式提交所以最后的答案就是b13981f4-5ae996d4-bc04be5b-34662a78

免费评分

参与人数 9威望 +1 吾爱币 +30 热心值 +8 收起 理由
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
HNuSnow + 1 + 1 我很赞同!
涛之雨 + 3 + 1 我很赞同!
shadowland + 1 + 1 我很赞同!
whdfog + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
luanshils + 1 + 1 我很赞同!
提莫队长啊 + 1 + 1 我很赞同!
TonyKing + 1 用心讨论,共获提升!
52jcool + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lanke 发表于 2021-10-24 19:46
seems diffcult
int3-cc 发表于 2021-10-25 11:40
无闻无问 发表于 2021-10-24 22:07
java层MainActivity调用so的i方法,没返回仅仅是告诉你到so中的i方法的all中找密钥?

按钮事件中,就干了 ...

java层加载了so,so被加载就会调用初始化的一些方法。
这样demo中,so中通过反射调用了java层的方法。
 楼主| HNHuangJingYU 发表于 2021-10-24 19:12

改后的apk已经放到蓝奏了https://www.lanzouw.com/ifIM2vpvoja密码:21u9
漁滒 发表于 2021-10-24 20:03
不知道这题能不能用unidbg做出来
bing90740 发表于 2021-10-24 20:17
厉害了了,,,,,  
52jcool 发表于 2021-10-24 20:20
厉害了,收藏学习
DC君 发表于 2021-10-24 20:21
原来是没有读写权限 我说怎么写出不了
cv14 发表于 2021-10-24 20:36
大佬牛逼啊
 楼主| HNHuangJingYU 发表于 2021-10-24 20:45
DC君 发表于 2021-10-24 20:21
原来是没有读写权限 我说怎么写出不了

可以看看apk信息中,它并没有申请存储的权限
 楼主| HNHuangJingYU 发表于 2021-10-24 20:48
漁滒 发表于 2021-10-24 20:03
不知道这题能不能用unidbg做出来

确实我在ida调试Android上面花了不少时间,有好的工具当然可以
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 16:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表