将组件转换为十六进制

时间:2013-05-02 06:08:24

标签: c# assembly

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

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"

1 个答案:

答案 0 :(得分:6)

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

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

即便如此,我也不希望你真的想要十六进制表示 - 你只需要机器码的字节。

即使那么你必须弄清楚如何执行该机器代码。

我完全同意answer you received here在一步一步做事方面 - 感觉就像你试图绕过真正学习汇编语言(以及所涉及的一般概念)而你应该采取措施退一步。