接下来近一年将会持续更新ctf逆向相关的题目,本题目编号为GFSJ0505。
⊙一.app分析
⊙二.ida分析并逆向还原flag
一.app打开分析
这个时候我们用jadx找到其位置
是一个静态的映射函数
那我们需要看下这个jni函数被执行后返回的数据,也就是说v8的计算值为"f72c5a36569418a20907b55be5bf95ad"那么就可以算出来flag了
根据上方的逻辑代码:
首先将前16与后16个字符交换.
然后index0和index1交换位置,index2和index3交换位置.....
那么我们可以逆过来还原之前的逻辑,如下方所示
data = list("f72c5a36569418a20907b55be5bf95ad")
for x in range(0,len(data),2):
temp = data[x]
data[x] = data[x+1]
data[x+1] = temp
for x in range(len(data)//2):
temp = data[x]
data[x] = data[x+16]
data[x+16] = temp
print("".join(data))
#90705bb55efb59da7fc2a5636549812a
然后就过关了(本题很简单适合入门逆向的人来做) 题目网址在下方,有兴趣的读者去练练手.
https://adworld.xctf.org.cn/challenges/details?hash=b902eb43-71de-43a5-b70b-8424f986f61e_2&task_category_id=6
我是BestToYou,分享工作或日常学习中关于二进制逆向和分析的一些思路和一些自己闲暇时刻调试的一些程序,文中若有错误的地方,恳请大家联系我批评指正。
原文始发于微信公众号(二进制科学):【ctf-1】easy-so分析
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论