一.查壳

二.拖入ida64,静态调试,找到主函数F5反编译

二.1 思路分析(逆向是真的费时间,每个函数都要分析过去):

1.发现每个if最终都会进入LABEL-15



点进去,看看这个函数是干啥的。



这里基本可以推理出a3是行,a2是列了。

那么我们的迷宫一定是一个8列的矩阵。

得知这点,退出去,再分析。




v9是行,SHIDWORD函数是指的下一个字节,得知这点,从上面分析可知:

就将四个函数点进去就可以判断方向了。

举个例子:




相对应,其他方向,O:下,o:上,0:左,.:右。

2.将迷宫打印出来,python脚本如下。

maze="  *******   *  **** * ****  * ***  *#  *** *** ***     *********"
res=""
count=0
for str in maze:
res+=str
count+=1
if count%8==0:
print(res)
res=""



3.由于我们是从左上角开始的,开始我们的路线

个人感觉答案不唯一的。。。。没办法。》-《。。。

根据迷宫最后得到的flag: nctf{o0oo00O000oooo…OO}

XCTF reverse maze的更多相关文章

  1. X-CTF(REVERSE高级) 666

    主函数输入的字符会和key比较长度和enflag比较内容,所以这道题的flag和输入有关 key长度为0x12,enflag的值为:izwhroz""w"v.K" ...

  2. X-CTF(REVERSE入门) re1

    运行程序 32位ida打开,shift+f12查看运行时的中文,这里双击flag get字符串进入rdata段 双击后面的函数,进入text段,小的窗口视图里可以看见汇编代码调用函数的句子 右边的即是 ...

  3. X-CTF(REVERSE高级) Reversing-x64Elf-100

    逻辑很简单,如果sub_4006FD函数返回假则返回Nice! 图1 进入sub_4006FD函数,加密过程也很简单,这里值得注意的有两点 一.8*(i%3)是二维数组的第一个参数,这里是取v3的地址 ...

  4. HGAME2020 reverse maze

    1.查壳,发现是64位的linux文件,由于虚拟机没装linux,只能静态调了 2.拖入ida分析,找到主函数 2.1.思路分析 1.先将对应的ASCII的转换成字符,因为迷宫题一般都是用wsad,或 ...

  5. [BUUCTF]REVERSE——[HDCTF2019]Maze

    [HDCTF2019]Maze 附件 步骤: 例行检查,32位程序,upx壳 upx脱壳儿后扔进32位ida,首先检索程序里的字符串 有类似迷宫的字符串,下面也有有关flag的提示字符串,但是没法进行 ...

  6. 迷宫 maze

    1 #include <stdlib.h> #include <stdio.h> #define stackinitsize 50 #define stackincrement ...

  7. 【CTF】Pwn入门 XCTF 部分writeup

    碎碎念 咕咕咕了好久的Pwn,临时抱佛脚入门一下. 先安利之前看的一个 Reverse+Pwn 讲解视频 讲的还是很不错的,建议耐心看完 另外感觉Reverse和Pwn都好难!! 不,CTF好难!! ...

  8. LeetCode 7. Reverse Integer

    Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 Have you ...

  9. js sort() reverse()

    数组中存在的两个方法:sort()和reverse() 直接用sort(),如下: ,,,,,,,,,,,]; console.log(array.sort());ps:[0, 1, 2, 2, 29 ...

随机推荐

  1. Centos 重置root密码

    # cat /etc/system-release                         #查看版本 开机后在内核grub.2上敲击 e 在linux16 行(倒数第二行)末加入 " ...

  2. 写Bug时,需要注意的几点 02

    重构2-重新组织函数 重构的基本技巧--小步前进,频繁测试. 模式是你希望到达的目标,重构则是到达之路. 在单进程软件中,你永远不必操心多么频繁地调用某个函数,因为函数的调用成本很低.但在分布式软件中 ...

  3. Nextcloud 使用教程

    一.简介 Nextcloud是一个网盘式文件管理系统,多用户权限管理,多客户端,使用简单.可在浏览器中运行,也可下客户端,不论使用哪种方式运行,使用教程都是一样的. 只是在客户端中运行时能及时收到相应 ...

  4. Linux 安装配置 tftp 服务器

    1.安装TFTP服务 安装服务端 sudo apt-get install tftpd-hpa 安装客服端 sudo apt-get install tftp-hpa 2.创建TFTP服务器目录 cd ...

  5. python异步编程之asyncio

    python异步编程之asyncio   前言:python由于GIL(全局锁)的存在,不能发挥多核的优势,其性能一直饱受诟病.然而在IO密集型的网络编程里,异步处理比同步处理能提升成百上千倍的效率, ...

  6. Jmeter- 笔记2 - Jmeter介绍

    性能测试工具:Jmeter 环境:Window,jdk1.8 Jmeter是Apache下的Java语言开发.运行Java语言的环境是jre(Java run env.).jdk是Java开发工具包, ...

  7. cmodel模拟器开发

    cmodel模拟器开发 对于一个公司来说,产品的设计周期就是生命线,一般来说都会在设计功能级仿真的c-model后直接转向RTL设计. 在目前的技术下,做cycle-by-cycle的设计和直接RTL ...

  8. java 全端开源 电商系统 springboot uniapp 小程序 前后端分离 高可用

    Lilishop B2B2C商城系统 官方公众号 & 开源不易,如有帮助请点Star 所有jar包均可从maven中央仓库下载,无二次封装jar包,全端开源,无后门,无监控. 介绍 官网:ht ...

  9. eclipse 新建项目不可选择Java Project 解决方法

    解决方法一: 鼠标点击file-new-other,弹出选项框,选中java project,点击next,接下来就是正常创建java protect的流程了,这个虽然也可以解决,但每次新建java项 ...

  10. Linux学习笔记:Linux命令之权限管理命令

    权限管理命令 chmod(重要) 命令名称:chmod 英文原意:change the permissions mode of a file 执行权限:所有用户 功能描述:改变文件或目录权限 语法:c ...