gpt4 book ai didi

c++ - 需要对特定安全优化的解释

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:33 28 4
gpt4 key购买 nike

我正在阅读 book [rus](抱歉,目前我找不到英文版本)由 Kris Kaspersky 撰写,解释了软件安全的理念和技术。

书中有一个例子。它声明代码:

if ( ! IsValidUser() )
{
Message("Invalid user! Abroting...");
Abort;
}

完全不安全,因为它被翻译成这样:

       CALL IsValidUser
OR AX,AX
JZ continue
^^^^^^^^^^^^^
PUSH offset str_invalid_user
CALL Message
CALL Abort
continue: ; normal program execution
...........

因此,可以通过在反汇编程序中仅更改一个字节来破解该程序。如果我们将 JZ continue 更改为 JMP continue,将无法正确执行检查。

然后 Kris 写道:

the corrected version of the program in C is:

IsValidUser();
if (!true)
{
Message("Invalid user! Aborting...");
Abort;
}

在此版本中,{...} 部分永远不会获得控件。

我真的不明白更正后的版本应该如何工作。他为什么要使用永远不会执行甚至可以被编译器删除的 if 语句

这是错字还是错误?或者我没有得到什么?

最佳答案

这是你的错,不是克里斯。这不是“安全版用户验证码”,这是黑客引入的修正后得到的代码

这本书的俄语引述:

На языке Си исправленная программа будет выглядеть так:

谷歌翻译:

C language modified (or patched) program will look like this:

关于c++ - 需要对特定安全优化的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17739522/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com