少女祈祷中...

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}