2016华山杯CTF中的一些记录

首先学到些看IDA伪代码的东西,可以以后方便自己更快的分析程序:

  1. 其中(&v8 + 6 * i)即为数组v8[6 * i]

  2. *(i + a1) == *(&byte_40E000[4 * i] + v3)
    即为
    a1[i] == byte_40E000[4 * i][v3]
    其中byte_40E000是一个二维数组

 

0x04 Crackme4. 移动迷宫

程序要求输入长度为24的字符串,然后进入一个for循环,循环4次


 

.

进入这个函数,发现输入的字符和二维数组byte_40E000中的字符比较,取其列数+1存放到数组v8中。从这可以知道byte_40E000是一个6*4的二维数组。


然后程序进入一个while循环 

1.首先判断根据输入的字符串获取的列数(1.2.3.4),使变量row,col变化。

2.然后取row,col的值作为二维数组byte_40E018的下标,判断是否为‘#’(‘#’的ascii码为35),如果不为且row不等于9且col不为8即成功。

3.byte_40E018为二维数组:

row,col的初始值为(3,0),要求终止值为(9,8),所以题目的意思就是走出这个迷宫(*为障碍物),根据输入的字符串获取的列数来控制走的方向,列数为1(向下),2(向上),3(向左),4(向右)。

4.最终走的顺序应该为411444 223222 441444 422223,对应的字符为:Ba47F1A256E0B347F1B2C6Ef

 

转载于:https://www.cnblogs.com/po1lux/p/5904283.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值