【发布时间】:2018-08-07 14:06:16
【问题描述】:
他在OpenSecurityTraining 主持的Xeno Kovah's Introduction to x86 Assembly 第一天的作业中分配,
我们现在知道的说明(24)
没有 推送/弹出 来电/回电 MOV/LEA 添加/订阅 JMP/JCC CMP/测试 与/或/异或/非 SHR/SHL IMUL/DIV REP STOS,REP MOV 离开
编写一个程序来找到我们没有涉及的指令,并报告 明天指导。
他进一步预测分配,
- 稍后将介绍的不计入的说明:
SAL/SAR - 跳跃变化或
IMUL/DIV的MUL/IDIV变体也不算数 - 其他禁止使用的指令:任何浮点数(因为我们不涉及此类中的内容。)
- 他在视频中说不能使用内联汇编。 (在被问到时提及)。
而不是objdumping 随机可执行文件并审核它们然后创建源代码,是否可以找到 GCC 当前输出的 x86 汇编指令列表?
这个问题的基础似乎是实际使用的指令的一小部分需要知道才能进行逆向工程(这是课程的重点)。 Xeno 似乎正试图找到一种有趣的、有启发性的方式来说明这一点,
我认为了解 20-30(不包括变化)就足够了,您将很少会检查手册
虽然我欢迎大家加入我在 OpenSecurityTraining 的这个很棒的课程中,但问题是关于我提出的从 GCC 中找出它的方法(如果可能的话)。不是,让人们真正完成 Xeno 的任务。 ;)
【问题讨论】:
-
非常有趣的问题!
-
那么,objdump,并为您在文本文件中找到的内容创建一个库/散列?比较英特尔的 x86 主文档,看看遗漏了什么。 Objdump 输出足够正常,您应该能够很容易地进行字符串解析。
-
编写一个程序来查找我们未涉及的指令...“查找”指令到底是什么意思?您不会真正“编写程序来查找指令”。他们的意思是“找到我们没有涵盖的指令”并“使用”该指令编写程序吗?在这种情况下,只需用汇编语言编写即可。试图找到一个使用
gcc生成此类指令的 C 程序听起来并不高效。 -
@lurker 是的,就是这个意思。用汇编语言写作超出了作业的范围。这是一门专注于逆向工程的课程,请参阅我的更新。
-
xlat或者可能是hlt会想到我认为很少见的指令。aaa现在也很少见了,因为这是 70 年代风格的作品。
标签: gcc assembly x86 instructions