首页
社区
课程
招聘
[讨论]反编译一段汇编代码
发表于: 2007-12-19 21:49 9110

[讨论]反编译一段汇编代码

2007-12-19 21:49
9110
fun(int a1)
{
int v1;//地址在:ebp-4
        PUSH EBP
        MOV EBP,ESP
        PUSH ECX
        MOV DWORD PTR SS:[EBP-4],3
        MOV EAX,DWORD PTR SS:[EBP+8]
        CDQ
        IDIV DWORD PTR SS:[EBP-4]
        MOV EAX,EDX
        MOV ESP,EBP
        POP EBP
        RETN
}
在提供函数原型和局部变量信息的情况下,谁能写一个程序将上面的汇编代码自动反编译为C代码?

输入的标准格式为:
int fun(int a1 = [ebp+8])
{
int v1 = [ebp-4];
__asm{
        PUSH EBP
        MOV EBP,ESP
        PUSH ECX
        MOV DWORD PTR SS:[EBP-4],3
        MOV EAX,DWORD PTR SS:[EBP+8]
        CDQ
        IDIV DWORD PTR SS:[EBP-4]
        MOV EAX,EDX
        MOV ESP,EBP
        POP EBP
        RETN
        }
}
提示:可以编写词法分析器和语法分析器对上面的代码进行分析,给出算法即可,不必实际编写程序。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
2
貌似是a1整除3
2007-12-20 09:36
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个好象不太好弄,期望高手赐教
2007-12-20 16:16
0
雪    币: 1946
活跃值: (248)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
4
F5
2007-12-20 16:18
0
雪    币: 207
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
**************
2007-12-20 19:15
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
6
这个答案精辟
2007-12-20 19:38
0
雪    币: 207
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
敢问F5是何解?
2007-12-20 20:28
0
雪    币: 29233
活跃值: (7754)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
8
IDA插件hex-ray.Decompiler
2007-12-21 00:03
0
雪    币: 204
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
计算 a1 % 3
2007-12-21 08:37
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
之前见过一个分析器,可以分析at&t的格式,开源的,你可以找找,效果还可以。名字忘记了。
开源的分析器也就那么几个,都下来下来看看吧。
2007-12-21 10:11
0
雪    币: 223
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
谁能写一个程序将上面的汇编代码自动反编译为C代码?

感情是要超越F5?
2007-12-21 10:56
0
雪    币: 207
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
有开源的?如果名字不记得,那你知不知道它的原理?
另外,hex-ray.Decompiler原理有没人知道?
2007-12-21 18:15
0
雪    币: 1946
活跃值: (248)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
13
编译器原理
2007-12-21 19:56
0
雪    币: 207
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
我能够编写任意复杂的词法分析器和语法分析器,但是我不能确信我能否实现反编译
2007-12-21 22:54
0
雪    币: 207
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
看来最后还得我自问自答
分析过程如下:
没人顶,我就把答案给删了
2007-12-22 09:30
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
16
词法语法只是一部分。hex-ray看起来是利用IDA分析出来得堆栈结构来反编译。一个萝卜一个坑的反。一般场合下反出来还不如ASM好看。
2007-12-22 10:47
0
游客
登录 | 注册 方可回帖
返回
//