To 炎之川:
堆栈确实是个问题,不过这是一个必须解决的问题,否则,任何经过“自动字体设置”调整的程序都必然会出错。换句话说,在“自动字体设置”中已经解决了你说的这个问题了。如果你所说的“压了esi之类的寄存器”是指程序在函数调用之后会使用这些值的话,“自动字体设置”不会对之产生任何影响。其实任何的堆栈不平衡都几乎都会导致程序出错,只要程序不出错,我们也就知道没问题。
“自动字体设置”第一版修改 CreateFontA 的时候可能会出错,不过正像我在“软件说明”中所说,这是因为没有恢复 ebx、ecx 寄存器造成的,与堆栈无关。(第二版已修正此问题)
正像你所说,“自动字体设置”并不能解决所有问题,不过我倒是希望你写一下结合使用“自动字体设置”和反汇编的方法修改字体的文章。比如你所说最后的那个 CreateFontA 调用,使用的是“call ebp”,如果向上找应该能找到类似 mov ebp, xxxxxxxx 之类的语句吧?只要把 xxxxxxxx 改成 400390 或 400394 就可以了。
BTW:你的这一篇文章想必进了(或要进)精华和世纪教学的吧?少一些错别字可是会显得更专业哦。