【问题标题】:Simulation of x86 32 bit assembly running using c [closed]使用 c 运行 x86 32 位程序集的模拟 [关闭]
【发布时间】:2014-02-11 21:54:07
【问题描述】:

所以我要找的不是程序集模拟器

基本上我要做的是将汇编翻译成c

虽然我有一个带有“F5”反编译功能的IDA pro,但是 一般来说,我正在尝试做一个模拟方法

我手工制作了这个例子来展示我的想法:

mov %eax, 10
add %eax, 5
jmp foo

我想直接翻译成这样的模拟c程序

unsigned v_eax = 0;
v_eax = 10;
v_eax += 5;
goto foo;

我觉得这很像一个组装模拟器,有类似的过程

assembly --> running in a CPU simulator in C --> output the results

但我想做的是这样的

assembly --> translate into a c source code --> compile --> run to get the results

经过快速搜索,我认为这篇论文有一个与我正在尝试做的类似的方法(但是我没有任何分析工作,只是翻译一些简单的汇编代码)

有人可以就这个问题提供一些帮助吗?

谢谢!

【问题讨论】:

标签: c assembly simulation simulator


【解决方案1】:

您在寻求什么帮助?如果您有具体问题,请提出这些问题。

看起来您已经有了大致的想法:设置一堆变量来表示寄存器,设置一个大数组来表示内存,实现子例程或宏(内联生成的代码块)代表每条指令并使用这些资源做正确的事情,实现附加的宏或子例程,它们是程序可能调用的每个操作系统调用或外部库函数(最重要的是 I/O)的包装器或等效于(I/O),编写一个“加载器” " 对于可执行文件,然后通过程序将指令转换为这些宏。确保正确修复 goto/call 地址,并希望程序员保持数据块和代码块的区别。全部调试好,它应该可以工作。非常缓慢,但这就是您所要求的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2015-04-03
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多