Bugku-CTF逆向篇之Easy_Re
Easy_Re
本题要点: ExeinfoPE查壳、IDA静态调试、OD动态调试、jnz指令
下载这个exe文件~
cmd里面运行一下这个程序,随便输一下flag,错误,然后结束了......
emmm.....老办法,先去查查有没有壳吧~
我们可以看到这个程序是 Visual C++ 编写的,因此没有壳。
放到 IDA 里看看~
emmm.....没有main函数........
经笔者查阅资料,发现没有 main函数 也是正常的,因为:
-------------------------------------------------------------------------
我们平时接触VC++的时候,第一个接触到的恐怕是WinMain和main,对应于Win32子系统的Windows窗口系统和控制台两个部分,最多是一些书籍上谈到了对应多字节字符集的几个变种。
其实,这几个入口点函数是VC++带有的C运行库要求的入口点。
真正的vc程序的入口点函数是在使用VC++的C编译器编译程序时指定的。
-------------------------------------------------------------------------
那么这么多指令应该怎么看呢,还记得我们运行之后的提示吗?
那肯定程序里面存在这些字符串,我们直接搜索这些字符串,就能定位到程序运行的情况啦~
定位到了~
看一下前后的指令和解释,我们发现有一串比较长的数据字符串,
选中 3074656D30633165577B465443545544h 这个变量,然后在键盘上按 a ,就可以显示字符串~
看到flag啦~
当然我们也可以放进 OD 里面看看~
方法1:
我们在插件里的 中文搜索引擎=》智能搜索
方法2:
中文搜索引擎=》选择 搜索ASCII
其实这里也能看到flag啦~
但是我们还是学一下怎么判断flag提交正确的指令吧~
jnz指令 ( 判断是否是正确的标志)
双击定位为 flag get 的地方。
进去我们可以看到 jnz指令 , 在这里下一个断点(键盘上按f2)。如果它跳转会跳转到下面,显示flag不太对,不跳转就会显示出flag get。
在调试过程中,注意 寄存器窗口 的变化~
在键盘上按 f9 ,开始调试
在窗口随便输一些字符串
接着 f8 单步运行一下
直接跳在 flag不太对哟 这一句
看一下右边的寄存器窗口~
flag: DUTCTF{We1c0met0DUTCTF}
完成~
参考资料:
https://blog.csdn.net/iteye_3759/article/details/81593120
https://blog.csdn.net/qq_38796701/article/details/80491298
--------------------- ┑( ̄Д  ̄)┍ --------------------------
作者:0yst3r[一只在安全领域努力奋斗的小菜鸡]
来源:博客园[ https://www.cnblogs.com/0yst3r-2046/ ] 引用时请注明来源哦~
(๑•̀ㅂ•́)و✧ヽ(✿゚▽゚)ノ(*^▽^*) φ(≧ω≦*)♪
如果本文对你有用,本人不胜欢喜。
The world is your oyster.