首页
社区
课程
招聘
[旧帖] [讨论]汇编还原C源码. 0.00雪花
发表于: 2012-8-28 00:57 7906

[旧帖] [讨论]汇编还原C源码. 0.00雪花

2012-8-28 00:57
7906
在看天书夜谈..有个习题..给出的了汇编代码.
我还原出来好像是不对的.
push ebp
mov ebp,esp
sub esp,0E8H
push ebx
push esi
push edi
lea edi,[ebp-0E8H]
mov exc,3ah
mov eax,0CCCCCCCCH
rep stos dword ptr[edi]
mov eax,dword pr[a]
add eax,dword ptr
mov dword prt[d],eax
mov dword ptr[i],1
mov dword ptr[c],0
cmp dword ptr[c],64H
jge Myfunction+46H (411A66H)
mov eax,dword ptr[c]
add eax,dword ptr[i]
jge Myfunction+46H (411A66H)
mov eax,dword ptr[c]
add eax,dword ptr[i]
mov dword ptr[c],eax
jmp Myfunction+35H (411A55H)
mov eax,dword ptr[c]
mov dword ptr [ebp-0E8H],eax
cmp dword ptr [ebp-0E8H],0
je myfunction+63H (411A83H)
cmp dword ptr [ebp-0E8H],1
je myfunction+63H (411A8AH)
jmp myfunction+63H (411A92H)
mov dword ptr[d],1
mov eax,dword ptr [c]
mov dword ptr[d],eax
jmp myfunction+79H (411A99H)
mov dword ptr[d],0
mov eax,dword ptr[d]
pop edi
pop esi
pop ebx
mov esp,ebp
pop ebp
ret

int Myfunction(int a, int b)
{
int d = a + b;
int i = 1;
for (int c=0; c<100; c++)
{
c = c+i;
//printf("%d\r\n", c);
}
return d;
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
2
用F5把~~
2012-8-28 02:02
0
雪    币: 183
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
只是汇编代码.不是程序反汇编出来还原C代码的
2012-8-28 09:08
0
雪    币: 78
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
mov exc,3ah
。。。。
不知是原书错误还是笔误,exc是啥东东
2012-8-28 15:08
0
雪    币: 139
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我也没见过呢
2012-8-28 23:01
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
应该 是mov ecx,3ah,将局部变量空间初始化为cc
2012-8-29 10:15
0
雪    币: 678
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
初始化只是
lea edi,[ebp-0E8H]
mov exc,3ah
mov eax,0CCCCCCCCH
rep stos dword ptr[edi]
这么一段而已
2012-8-29 10:33
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
8
这是正确!!
2012-8-29 12:22
0
雪    币: 62
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
int myfunction( int a , int b )                        //        e8h栈大小
{
        int d , i , c;
        d = a + b;
        i = 1;
        c = 0;
        while( c < 0x64 )
        {
                c = c + i;
        }
        switch(c)
        {
                case 0:
                        d = 1;
                case 1:
                        d = c;
                        break;
                default:
                        d = 0;
        }
        return d;
}
以前看的时候,好像书中这段有问题。 个人感觉正确的应该是这样。
2012-8-29 12:58
0
雪    币: 185
活跃值: (70)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
没有地址翻译起来太累了,,,
2012-9-5 17:03
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我也正在看这本书
2012-9-5 23:05
0
雪    币: 183
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
谢谢这位兄弟,,受教了
2012-9-5 23:15
0
雪    币: 185
活跃值: (70)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
没有地址你怎么知道为啥是这个??求教
2012-9-7 12:07
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
9L 正解..
2012-10-2 18:08
0
游客
登录 | 注册 方可回帖
返回
//