IDA的使用与re浅浅入门
界面介绍
- 左侧是函数窗口,显示一些函数,可以crtf+f寻找main函数,找到主程序
- 主体是汇编代码,可以通过空格切换查看视图
- 内存分段,直接明了看所在内存的位置
常用快捷键
- F5键–反汇编,,转化为伪C代码
- shift+F12 切换到字符串展示界面(String Window)所有字符串在这里显示
- crtf+X 交叉引用 寻找数据被引用的地方
- g键 跳转到地址处
- alt+t 搜索指令
- n键对函数进行重命名
- ctrl+z撤销操作
数据操作
- d键转化数据格式,h结尾代表十六进制
- a键转化为字符串
- c键转化为汇编代码
- u键转化为原始形式
- shift+e导出选定数据
- 对在程序中一些数据右键可以改变其数据类型,原始的char是数字的形式
- ctrl+e进入程序起始位置
BUUCTF re前三题
easyre1
将程序拖入IDA,很好进来就是main函数
F5,反汇编一下,得到flag ,flag{this_Is_a_EaSyRe}
reverse1
一进来不是主函数,尝试在左边找到main,没找到 (
shift+F12 查看所有字符串,找到关键字符串this is the right flag!
双击进入
ctrl+x找到引用函数 ,再F5反汇编
右键hide cast,隐藏标记以防看不懂
可以对一些熟悉的函数进行重命名,如sub_1400111D1就是printf函数
这里主要是对我们输入的字符串与Str2对比,如果一样就输出this is the right flag!,表明我们输入了正确的flag
那我们就看看此时的Str2是什么,他就是flag
双击进入,发现是{hello_world}
但返回刚才代码发现,程序对原始的Str2进行了修改
将某些数字改为字符类型,更为直白
最后看这程序,是把Str2中的o改为0
因此最后flag为flag{hell0_w0rld}
reverse2
这个题目和上面的类似,不过一进来就是main函数,不要找了)
F5反汇编,跟上面的一样的逻辑
这里主要是flag变量
将前面修改flag的代码中的字符类型数据转化一下
这里主要是将flag中的i和r改为1
双击flag变量,查看内容
发现这里没有显示全
选中按下a,变为字符串
更改字符
得到最后flag,flag{hack1ng_fo1_fun}