出于安全原因学习大会

时间:2015-07-05 18:26:32

标签: assembly secure-coding

如果我出于安全原因想学习装配,我该从哪里开始?我想如果我想避免错误,最好的办法就是知道你在做什么。如果我将signed int转换为unsigned int会发生什么。一旦我收到一条奇怪的错误消息,该变量未正确对齐。这时我不知道对齐是什么。

1 个答案:

答案 0 :(得分:3)

我的两分钱

除非你发现汇编很有趣并且有很多时间我想建议你学习这些东西:signed number如何表示,floating point numbers如何表示以及data alignment 3}}是。

我强烈建议你学习装配,因为它非常吸引人,但我认识到这对初学者来说是一项巨大的努力。 学习汇编不是学习指令列表,实际上没有必要记住这样的列表。学习装配意味着学习计算机工作方式的各个方面,从硬件数据表到操作系统的实现方式 这是很多材料,所以甚至很难列出它,更不用说学习它了!

我开始学习青少年装配,因为我对它着迷,没有任何目的,只有知识。我做了(和做)它的乐趣,这使事情变得简单,我没有截止日期。 我有足够的时间回到那里我一次一个地学习这个拼图的部分,最后得到我希望的全部视图的完整视图。
我花了几天的时间调查一个单一的,平庸的,小的方面,当我在一个更大的项目工作时突然出现 这是你必须得到的行为,如果你开始留下细节,一切都会变得模糊 始终快速了解幕后发生的事情并记下您的疑虑 稍后调查那些疑问,并用你的注释写一个文本文件 发现。

下面的几点试图给你一条路径。

我假设你对汇编语言本身和系统编程不感兴趣(所以我跳过建议你这本旧的但必须的书:The Art of Assembly language)。
我还假设您拥有IA32e架构(即Intel或AMD处理器)。

1。阅读文档(需要时间)

阅读Intel Manuals 第一次你可以在第一本手册的第7章停下来,但要尽快回来完成阅读。

使用NASM作为汇编程序 你需要一个链接器,在Linux上使用GCC,在Windows上使用CL(在Visual Studio中使用,Express版本是免费的)。

不要使用C运行时或任何读取使用库 了解Linux API
了解Windows API
了解Linux ABI
了解Windows ABI

查找在线(不完整,糟糕)的教程,以便对其工作原理有所了解。

了解如何正确编写函数prolog和epilog以及如何使用堆栈 做了很多练习。写简单的愚蠢程序。

了解系统调用如何适用于这些操作系统,在启动过程中完成的操作,如何解析符号以及加载库。

在线搜索C编程练习并在汇编中执行,不使用使用C运行时 使用C运行时再次执行

2。与编译器一起工作。

用C编写测试程序,看看它是如何实现的 做假设 - 测试论文周期 始终牢记C标准所说的内容,因为它在编译器决策中起主要作用,你无法从反汇编中推断它。