RE Note 1
基础的汇编语法
x86/x64汇编指令的基本格式: 操作码 操作数1 操作数2
基本语法:
- 数据传输指令:mov
- mov rax, rbx rax = rbx
- mov qword ptr [rdi], rax *(rdi) = rax
- 取地址指令:lea
- lea rax, [rsi] rax = &*(rsi)
- 算术运算指令:add, sub
- add rax, rbx rax += rbx
- sub rax, rbx rax -= rbx
- 逻辑运算符:and, xor
- and rax, rbx rax &= rbx
- xor rax, rbx rax ^= rbx
- 函数调用指令:call
- call 0x401000 执行0x401000地址的函数
- 函数返回指令:ret
- 比较指令:cmp
- cmp rax, rbx 根据rax与rbx的比较结果改变标志位
- 无条件跳转指令:jmp
- 栈操作:push pop
⬆其实我觉得没啥用,多看看汇编代码就熟了(
攻防世界的几道入门题
re1
看csdn上一堆堆大佬讲了大量乱七八糟的思路和方法
我直接把flag搜出来了
乐死了
Hello, CTF
放进ida中,_main函数反汇编出来的伪代码如下
1 | strcpy(v13, "437261636b4d654a757374466f7246756e"); #给v13一个奇怪的赋值 |
由于%x为16进制标志,所以强猜v13的赋值为某条信息的16进制,转换之后得出flag:CrackMeJustForFun
Open_Source
没啥好说的,白给c代码,按照那些条件一一对应就能直接算出来。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment