ida 的不可靠性简易探究
x64模式下 简易代码,定义tmp、tmp1、tmp2,tmp1和2将tmp分割为两部分。 在x64 debug下编译,发现tmp的长度从20变成了0x48,大小识别错误了。 但这没有太大的影响,也只是反应了ida的小错误而已。 但是在x86模式下会变成另一种情况 char20被断成一节节了,每个Int占4,那么v5(8)+v6(4)+v7(4)+v8(1)=17仍然小于20。 也就意味着ida把变量大小识别错误了,这在特定情况下会是致命的 探针工程(main() 与手抄回来的 main_0() 互为对照,x64/x86 两种配置):https://cnb.cool/t1mmoc/tspace/pwngore/h11ida-size-probe 同一个错误的另一副面孔 —— sizeof(buf) 拿到的是指针宽度而不是文件长度 —— 见《没有源码时怎么找到主流程:一个带脚本的安装包》。