CTF reverse/pwn入门记录
好吧,今天正式入坑CTF的reverse和pwn了,当然先从reverse开始入手。
先是写一下buuctf的writeup和一些ida的技巧
一个是显示二进制编码
显示中文
导出数据
显示动态字符串
处理反编译失败
显示二进制编码:

那个number of opcode bytes改成8或者4啥的就能直接同时显示汇编代码和原始二进制,方便很多
导出数据:
edit里面有个export data,可以选c的数组格式,这样不用复制了


显示动态字符串(默认ida只显示常量字符串)


把play only constant string literals去掉
反编译代码按r能把十六进制/十进制数转成字符串
按h能十进制十六进制互相转换
处理反编译失败:
想办法显示栈,看看是不是栈不平衡
显示栈帧:

勾选stack pointer
然后如果他反复调用自己比如call xxx,那么会一直入栈,破坏堆栈平衡,分析后可以注释掉或者修改
然后如果有mprotect/virtualprotect说明程序修改自己
遇到upx啥的说明加壳了,可以用脱壳机试一试。
动态调试:
开始调试之后按f9执行一轮直到断点,按f7是单步执行
待整理rc4 tea aes加密的形式
vmp脱壳
花指令
混淆
反动态调试
pwn上主要是看看怎么绕canary 还有各种例题
格式化字符串也是
重新分析一段程序:

按alt+l可以设置起始点然后往后直接单击就可以选中一大段
另外底下右下角单击可以显示reanalyze the program重分析整个程序,主要用于一些字符串的引用的更新
黄粱一梦,终是一空
本文来自博客园,作者:hicode002,转载请注明原文链接:https://www.cnblogs.com/hicode002/p/19254302

浙公网安备 33010602011771号