将组件转换为十六进制

Dan*_*272 0 c# assembly

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

MOV BYTE PTR SS:[EBP-423],8
Run Code Online (Sandbox Code Playgroud)

现在从我的研究中我发现了

 Convert.ToByte('a')
Run Code Online (Sandbox Code Playgroud)

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

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();
Run Code Online (Sandbox Code Playgroud)

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

C6 85 59 FE FF FF 08
Run Code Online (Sandbox Code Playgroud)

但我得到了

Xax = "4D4F562042595445205054522053533A5B4542502D3432335D2C38"
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

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

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

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

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

我完全同意你在这里一步一步地得到答案 - 当你应该退一步时,感觉就像你试图绕过真正学习汇编语言(以及所涉及的一般概念).

  • @ Dan272:你有汇编语言,所以你需要一个汇编程序.但我真的认为你在这里走错了路.不要只是理解答案的一部分而不理解它 - 如果你真的需要的话,你已经得到了关于如何在C#过程中修改内存的其他答案,尽管坦率地说我对目的是怀疑的无论如何.作为一个更高层次的目标,你真正想要实现的目标是什么? (2认同)