Bugku_逆向入门之游戏过关

题目下载地址
https://ctf.bugku.com/files/d2935133b45ff7a32b2b9436851959d0/ConsoleApplication4.exe

分析题目

Bugku_逆向入门之游戏过关_第1张图片
题目大概的意思就是

目的:点亮所有的lamp(台灯)
输入lamp编号(m),则该lamp变亮,同时(m-1)和(m+1)的lamp亮暗状态会变化
输入多次m,最后将lamp全部点亮,游戏过关

反正我是不知道这么玩

先是查壳看看 发现无壳

IDA静态分析

shift+F12 搜索字符串
Bugku_逆向入门之游戏过关_第2张图片
意味着我们只要让程序执行到这个位置,就可以获得flag了

双击查看字符串地址

变量位于只读数据区
Bugku_逆向入门之游戏过关_第3张图片

按x键定位变量的交叉引用地址

Bugku_逆向入门之游戏过关_第4张图片
push ebp
发现进栈地址:0x0045E940 ,这里需要记住偏移地址E940 ,下面使用OD直接非常规执行到该地址

OD动态调试

直接用OD载入程序

Bugku_逆向入门之游戏过关_第5张图片
把基地址 0045 记住

找一个可控的程序片段,以跳转到目的flag段
Bugku_逆向入门之游戏过关_第6张图片
n= 每次数入一个数字都会判断 所以 n= 可以控制程序是否得到flag

双击查看 n= 的地址 再次双击下断点
Bugku_逆向入门之游戏过关_第7张图片

在程序窗口输入 1 再按回车是程序断在下断处

跳转到flag字符串地址–(关键)

修改断点处的汇编指令 Ctrl+G 或者双击汇编指令

再按 F9 运行程序

Bugku_逆向入门之游戏过关_第8张图片
第一次复现逆向题目,感觉还有好多没有理解,请各位多多指教。

参考:https://www.52pojie.cn/thread-925121-1-1.html

你可能感兴趣的:(逆向)