记一次逆向菜鸟题,攻防世界Reversing-x64Elf-100

下载文件,首先查看是否有加壳,这里没有加壳,看出来是64位的elf文件

将该文件拖进IDA64位工具里进行分析
进去先找main函数,一般我的思路是这样,初入逆向,有什么不对的地方请指正

进入main函数大致是这样,点击tab键进入伪代码页面

此处if语句为关键点,用于判断输入的值是否正确,我们点击if右边的函数进去查看内容

这里就为判断的主要内容了,这里是定义了一个二维数组,(二维数组不会的可以先去了解一下)

下面进行分析了

主要看这里,这里做了一个判断,显而易见我们想要的是0LL的返回而不是1LL,下面来讲讲if内容里是什么意思
这个*(char *)是一个强类型的转换就是说转化为字符,v3[i%3]是取循环数i除以3的余数,就是他指向一维数组的地址,+2*(i/3)指的是加上一维数组指向的字符串里指向的字符i/3则是取他的整型,就是说管后面的小数位,整数位是多少就取多少,再到后面的- *(char *)(i +a1)此处应该为我们输入的值,最后再来一个判断,如果说他前面的算法减去我们输入的值的差不等于1则返回1LL,我们需要他返回0LL那么就要他们的差等于一
这里用python写一个脚本

运行得到flag

初入逆向,很多不会,还请师傅们多多指点