![]() |
1
1
你必须写作
on the Godbolt compiler explorer
定义 在你的职能中,如果你能说服他们追查,你就可以逃脱惩罚。
but not in C mode
. (GOOBET有一个独立的C模式,它有一组不同的编译器,可以用来获得MSVC来编译代码,而不是C++。我不知道有什么命令行选项可以像gcc那样将其转换为C模式
不管怎样,
它可能工作(在优化的构建中)来编写
顺便说一句,如果
即使在调试版本中也是不安全的,因为编译器可能
@mevets展示的蹦床思想可以简化:如果args上有一个合理的固定大小上限,那么您可以将64或128字节的潜在args从传入args复制到args中以供使用
如果存在可能的register参数,请在复制参数之前将它们保存到堆栈空间,并在调用之前还原它们。 |
![]() |
2
2
编译器不会在您正在挖掘的点上做出任何保证。一个蹦床功能可能会起作用,但你必须保存它们之间的状态,并做大量的挖掘。
|