key 攻防世界

工具

IDA+X64dbg

思路展开

查壳无壳,IDA载入 ,大量函数似乎每个都有用。
遇到大量函数;1.以前没见过的新知识,题目会给提示,例如vm逆向 2.主逻辑简单,大量函数只是障眼法
shift+F12查看字符串,对整体先有个把握
1
发现有个文件。但在路径下找不到这个文件。找到成功语句Congrats You got it!点进去,找到函数调用sub_401100。
找到主函数:2
找到成功的关键条件(红框),sub_4020C0函数我推测是字符串比较判断是否相等。
字符串传入需要地址,所以锁定篮框内容,向上追踪找到sub_402E90(&Dst, &v37);这里推测&Dst&v37,简单的赋值操作,向上追踪&Dst,直到遇到sub_401620
sub_401620(&Dst, v5, v6, v7, v8);

sub_401620在这里插入图片描述
再次聚焦sub_402550
在这里插入图片描述
发现和文件路径有关,猜测从文件中读取flag,与某个字符串比较。再回到sub_4020C0,点进去
在这里插入图片描述
和v7有关,v7跳出来是v12,v12是Memory,字符串就是Memory。
整体逻辑明朗:从某个文件读取flag,和Memory比较,相等即正确。
两种思路:x64dbg动态调试和写Memory生成脚本
x64dbg动态调试:
文件路径先创建一个flag.txt,sub_4020C0(我这里的地址不是4开头,但后面20C0一样)下断。
在这里插入图片描述

Memory生成脚本静态脚本:

str1 = "themidathemidathemida"
str2 = ">----++++....<<<<."
key =""
flag=""
for i in range(18):
	key += chr((ord(str1[i]) ^ ord(str2[i]))+22)
for i in key:
	flag+=chr(ord(i)+9)
print(flag)

idg_cni~bjbfi|gsxb

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值