REVERSE-DAILY(5)-rev2
比较有意思的一道题目 提示是一个迷宫
链接: http://pan.baidu.com/s/1pLhINBt 密码:91bs
先运行程序,要求是输入字符串,错误会输出“Sorry you are wrong!”
先用ida载入,按程序运行流程首先会注意到_main_0函数,函数也与程序结构相符,但如果以此分析下去是错误的,
注意到ida中有如下结构:
v6 = ;
v5 = ;
v7 = / ;
printf("Please input your key:\n");
v7=0/0明显是错误的,会跳到SE处理程序,这一点可以在od中得到验证
如图下断点的话,程序在0x0040140d输出字符串“Please input......”,输入字符串后也不能停住,实际上是0/0出错后调到SE处理程序,根据上图可以看到0x004013ed处压入SE处理程序安装地址,最终程序跳到sub_401020函数运行。
分析sub_401020函数:
可以得到如下信息:
1.输入字符串长度为22
2.输入字符串每个字符为h,j,k,l中的一个
3.主结构是个大循环,依次逐位检查每一个输入字符
4.v4= "********* * ** * ** ** * ** ** * #* ** **** ** *********"
&v4=bp-c8
&v6=bp-88
&v5=bp-bf
初始时v3=&v5
5.主结构有四条分支,输入字符为h: v3--
j: v3+=8
k: v3-=8
l: v3++
6.对于v3 < &v4 || v3 > &v6判断条件,v4和v6分别是v4的上下界,这只是检查v3是否出界
7.对于 *v3 == 42是判断如果*v3为*则报错,
8.当字符为#时成功
所以思路即为由最初的v3通过运算到达#,这实际上就类似于走一个迷宫
迷宫如上图,第一个*即为v4起始点,最后一个空白格为v6检查点,第三行第一个空格为v3起始地址,
这样就容易得到了字符串:jjjjjlllllkkkkkhhhjjjl
REVERSE-DAILY(5)-rev2的更多相关文章
- HNU 13411 Reverse a Road II(最大流+BFS)经典
Reverse a Road II Time Limit: 10000ms, Special Time Limit:25000ms, Memory Limit:65536KB Total submit ...
- LeetCode 7. Reverse Integer
Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 Have you ...
- 【uwp】浅谈China Daily 中划词翻译的实现
学习uwp开发也有一段时间了,最近上架了一个小应用(China Daily),现在准备将开发中所学到的一些东西拿出来跟大家分享交流一下. 先给出应用的下载链接:China Daily , 感兴趣的童鞋 ...
- js sort() reverse()
数组中存在的两个方法:sort()和reverse() 直接用sort(),如下: ,,,,,,,,,,,]; console.log(array.sort());ps:[0, 1, 2, 2, 29 ...
- [LeetCode] Reverse Vowels of a String 翻转字符串中的元音字母
Write a function that takes a string as input and reverse only the vowels of a string. Example 1:Giv ...
- [LeetCode] Reverse String 翻转字符串
Write a function that takes a string as input and returns the string reversed. Example: Given s = &q ...
- [LeetCode] Reverse Linked List 倒置链表
Reverse a singly linked list. click to show more hints. Hint: A linked list can be reversed either i ...
- [LeetCode] Reverse Bits 翻转位
Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in ...
- [LeetCode] Reverse Words in a String II 翻转字符串中的单词之二
Given an input string, reverse the string word by word. A word is defined as a sequence of non-space ...
- [LeetCode] Reverse Words in a String 翻转字符串中的单词
Given an input string, reverse the string word by word. For example, Given s = "the sky is blue ...
随机推荐
- Gerald is into Art
Gerald is into Art Gerald bought two very rare paintings at the Sotheby's auction and he now wants t ...
- BZOJ3000 Big Number
由Stirling公式: $$n! \approx \sqrt{2 \pi n} (\frac{n}{e})^n$$ 故:$$\begin{align} ans &= log_k n! + 1 ...
- POJ 3126 Prime Path
给定两个四位素数a b,要求把a变换到b 变换的过程要保证 每次变换出来的数都是一个 四位素数,而且当前这步的变换所得的素数 与 前一步得到的素数 只能有一个位不同,而且每步得到的素数都不能 ...
- ADO.NET学习
ADO.NET重要的类 在.NET访问MySql数据库时的几点经验! string connstr=Setting.Instance().GetConnectionString("MySql ...
- NoSQl简介(转)
NoSQL,全称是“Not Only Sql”,指的是非关系型的数据库.这类数据库主要有这些特点:非关系型的.分布式的.开源的.水平可扩展的.原始的目的是为了大规模web应用,这场全新的数据库革命运动 ...
- 禁止浏览.htaccess文件
很多黑客会攻击和利用.htaccess做网站跳转,所以保护好.htaccess文件尤为重要. 在apache的httpd.conf的配置文件中 默认是已经设置了禁止对.htaccess的访问,截取相关 ...
- [WebServer] Tomcat 配置访问限制:访问白名单和访问黑名单
前言: 昨天配置了 Tomcat 服务器运行 PHP 的环境,但是通过观察 Tomcat 这几天的日志发现,有很多莫名其妙的 IP 访问主机下莫名其妙的地址,如:/80./testproxy.php. ...
- C#之事件
事件,是C#编程模型中重要的一个概念,通过对事件的理解,可以更好的了解C#程序运行机制.C#中的事件,可以简单的理解为类或者对象发生了一件事,并且把这件事通知给了其他的类或者对象,其他的类或者对象可以 ...
- μC/OS-Ⅲ系统中的任务种类及基本状态
在μC/OS-Ⅲ系统中,任务自身一共有五种状态. 1.休眠态 调用函数OSTaskCreate()创建任务后,任务就可以接受μC/OS-Ⅲ的管理.处于休眠态的任务代码实际上已经写入代码空间中了,但是μ ...
- petset翻译
Terminology 通过这个文档,你将会看到一些术语,有时候他们在别的地方交叉使用,这可能会引起一些困惑.这一节的 是帮助你理清楚他们. Node: 一个简单的虚拟或物理机在你的一个k ...