这篇日志里,只分析了stackoverrun和stackvar,另外一个overflowet由于相似性就不再写了,如果你不知道怎样输入对应16进制的ascii码,可以直接拉到最后看最后一点
我又改了改,实际上对不对还是不太确定,因为堆栈那边的东西没吃懂。。。。
stackvar 篇
首先我们需要找到程序的具体比较函数的入口点。我们在OD里按F8,发现到00401724的call边走不下去了,随便输入hxndg,然后就直接弹出“incorrect password”可见读入我们的注册码并进行比较的过程就发生在这个call里,F7跟入。
跳到了这里,看到下面的main了吧。
继续F7我们跳转到了下面的地址
开头的一堆push ebp什么的指令可以忽略掉,因为那个和“我们这儿”并不是十分有关。
现在让我们看下一张图,下面就是main函数对应的汇编指令