0

我需要使用以下表达式编辑内存地址:

MOV BYTE PTR SS:[EBP-423],8

现在从我的研究中我发现

 Convert.ToByte('a')

应该做这项工作,但我不能让它正常工作,所以我尝试了不同的方法 -

static private String convertAsciiTextToHex(String i_asciiText)
{
    StringBuilder sBuffer = new StringBuilder();
    for (int i = 0; i < i_asciiText.Length; i++)
    {
        sBuffer.Append(Convert.ToInt32(i_asciiText[i]).ToString("x"));
    }
    return sBuffer.ToString().ToUpper();
}

string Xax = convertAsciiTextToHex("MOV BYTE PTR SS:[EBP-423],8");
            Console.WriteLine(Xax);
            Console.ReadLine();

现在我在 Xax 上得到了错误的值,我应该得到以下值:

C6 85 59 FE FF FF 08

但我得到

Xax = "4D4F562042595445205054522053533A5B4542502D3432335D2C38"
4

1 回答 1

6

您并不是真的要求将 ASCII 文本转换为文本的十六进制表示。您在问如何将汇编语言转换为机器代码。

为此,您需要一个汇编程序。

即使那样,我也不希望您实际上想要十六进制表示 - 您只想要机器代码的字节。

即使那样,您也必须弄清楚如何执行该机器代码。

我完全同意您在这里收到的关于一次一步采取措施的答案 - 感觉就像您试图绕过真正学习汇编语言(以及所涉及的一般概念),而您应该退后一步。

于 2013-05-02T06:11:15.820 回答