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