【发布时间】:2015-09-29 14:30:20
【问题描述】:
我是 intel x86 程序集的新手,我正在尝试理解以下代码 sn-p 并将其转换为 C 代码。还有更多,但现在我只是想了解这里发生了什么以及它在 C 中的外观。
mov eax, [ebp+var_154] ; get the address of var_154
add eax, 1
mov ecx, [ebp+var_160] ; get the address of var_160
sub ecx, eax
cmp [ebp+var_16c], ecx
jnb loc_443CDF
mov eax, [ebp+var_176] ; get address of var_176
add eax, [ebp+var_16c]
movsx ecx, byte ptr [eax] ; get first byte of eax?
and ecx, 1
mov [ebp+var_18c], c1
【问题讨论】:
-
那么,你发现了什么?注意:
mov eax, [ebp+var_154]获取的是值,而不是地址。 -
不知道。一般情况下,无法将 assember 转换回 C。
-
我投票决定将此问题作为离题结束,因为这是一个关于汇编程序>C 转换的问题(这通常是不可能的),并且 OP 不理解汇编程序。
-
从这里获取 C 代码是非常简单的,但当然不会是原始 C 代码。
-
@Jester 我知道它不会是原始的 C 代码,我只是想了解发生了什么以及它在 C 中“可能”的样子。
标签: c assembly x86 reverse-engineering 32-bit