我需要使用以下表达式编辑内存地址:
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)
你并不是真的要求将ASCII文本转换为文本的十六进制表示.您正在询问如何将汇编语言转换为机器代码.
为此,您需要一个汇编程序.
即便如此,我也不希望你真的想要十六进制表示 - 你只需要机器代码的字节.
即使这样,您也必须弄清楚如何执行该机器代码.
我完全同意你在这里一步一步地得到的答案 - 当你应该退一步时,感觉就像你试图绕过真正学习汇编语言(以及所涉及的一般概念).