为什么程序在此指令下用完了正常流程

时间:2014-08-13 16:58:10

标签: assembly reverse-engineering instructions

好吧,我参加了一个关于计算的学习课程,我们给了一个可执行文件(PE)来分析某个目的......当我跟踪指令以理解PE时,我遇到了异常的指令&#34 ; INT 1"当我执行它时程序进入" ntdll"运行一个指令块,然后回到原始位置(程序),但我注意到的是" INT 1"之后的指令。 (这是" XOR EAX,EBX")没有执行,并且直接从以下指令开始(我使用OllyDBG),这整件事让我更难达到我的目的......所以请你能帮我理解发生了什么吗?

PS:

1 - 执行" INT 1"后的EAX结果取决于用户输入中的单词(DWORD PTR [ESI])。

2 - 作者谈到了一些名为"结构化异常处理和向量异常处理"这描述了我的情况,但我对此并不了解。

这是发生事情的指示块:

LODS DWORD PTR [ESI]       ;loads the 4 bytes user input into eax
MOV EBX,495F4265
INT 1                      ;our enemy 
XOR EAX,EBX                ;This one is not executed as shown in OllyDBG
CMP EAX,FF2CF8E5           ;eax content changes each time depending on user input
JE

如有任何进一步的信息,请不要犹豫,提前...... Thnx提前:))

1 个答案:

答案 0 :(得分:1)

好的情况已关闭......它只是一个结构化的异常处理程序(SEH),它导致程序在正常流程外执行并执行XOR指令(它没有被执行,因为IP增加2,而它应该增加1这样就可以执行了)