首页
社区
课程
招聘
[旧帖] [讨论]谁能详细的把CALL前的那个几个语句和CALL里前几句能详细的讲解下 0.00雪花
发表于: 2009-4-10 22:17 4545

[旧帖] [讨论]谁能详细的把CALL前的那个几个语句和CALL里前几句能详细的讲解下 0.00雪花

2009-4-10 22:17
4545
如题,懂的朋友麻烦讲解一下
最好能对应C语言的函数来讲,对段的理解不是很深
就知道是压个参数,
CALL里的是压了IP,局部变量的定义等,但是有点含糊,希望高手洗讲
别一代而过,要讲的知其然而知其所以然

哈哈,提问还提了要求。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 370
活跃值: (52)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
2
没有怎么明白你的意思啊,不知道怎么下手好
2009-4-10 22:35
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
int  add (int* a,int* b)
{
return *a+*b;
}
void main()
{
int a=5;
int b=5;
add(&a,&b);

}

希望把这个代码反汇编后的代码能详细讲解下
2009-4-10 23:06
0
雪    币: 254
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
借本failwest的大作,看下吧,或者他的专题有详细说明
2009-4-10 23:32
0
雪    币: 723
活跃值: (81)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
连 C 都学不好,还能说什么呢? 浮躁呀~

int main()
{
      int a = 4, b = 5;
      
      int c = add(&a, &b);

      return 0;
}

---------------------------------

add:
        push ebp
        mov ebp, esp
        mov eax, [ebp+0x8]
        mov ebx, [ebp+0x0c]
        mov eax, [eax]
        add eax, [ebx]
        pop ebp
        ret

main:
       push ebp
       mov ebp, esp
       sub esp, 0x0c     

       mov dword ptr [ebp-4], 4
       mov dword ptr [ebp-8], 5
     
       lea eax, [ebp-4]
       lea ebx, [ebp-8]

       push eax
       push ebx
       call add
       mov dowrd ptr [ebp-0xc], eax

       add esp, 0x0c
       pop ebp
       ret

--------------------------------
2009-4-10 23:39
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
回复MIK
能讲解一下吗,failwest的文章那么多,不知道那个是讲解的
主要是像
push ebp
        mov ebp, esp
        mov eax, [ebp+0x8]
        mov ebx, [ebp+0x0c]

为什么要这么做,具体是什么含义,希望能讲的详细点,容易理解点
2009-4-10 23:42
0
雪    币: 723
活跃值: (81)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
failwest 啥意思??
2009-4-10 23:47
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
论坛一个人的ID,他发了很多文章
2009-4-10 23:48
0
雪    币: 247
活跃值: (141)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
那是个网名,你在坛子里搜索一下试试!
2009-4-10 23:51
0
雪    币: 247
活跃值: (141)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
[QUOTE=;]...[/QUOTE]
那是个网名,你在坛子里搜索一下试试!
2009-4-10 23:53
0
雪    币: 723
活跃值: (81)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
11
[QUOTE=ychyf;604892]回复MIK
能讲解一下吗,failwest的文章那么多,不知道那个是讲解的
主要是像
push ebp
        mov ebp, esp
        mov eax, [ebp+0x8]
        mov ebx, [ebp+0x0c]

为什么要这么做,具体是什么...[/QUOTE]

        push ebp                        ; 保存前一个 stack frame base pointer  
        mov ebp, esp                 ; 启用本函数的 stack frame 结构
        mov eax, [ebp+0x8]      ; 参数1
        mov ebx, [ebp+0x0c]    ; 参数 2
2009-4-11 00:05
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
MIK,你讲解的这些知识,在书上有讲吗?那本书有?
第二句esp 的值是那里确定下来的我不太明白,看了王爽的汇编了
但是直接看反汇编的代码,还是有些很多不明白
比如,这个esp, 的值,我之前没有对其进行过操作了
2009-4-11 00:18
0
雪    币: 723
活跃值: (81)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
13
王爽的书就是垃圾,就是不明国内怎么这多人喜欢

看经典的国外的 IBM-PC 系列的汇编
2009-4-11 00:26
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
好。感谢。上面那个局部变量的定义处,你讲的很好,我明白了
bp,和sp,我还有疑惑就是直接拿来用,没太明白栈结果和函数调用后,一级一级下来每个堆栈的信息是怎么管理的这些信息
我去下载IBM汇编去
2009-4-11 00:31
0
雪    币: 71
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
push 参数1
push 参数2
push eip
jmp xxxx
2009-4-11 00:56
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
intel 汇编语言程序设计
想了解实现细节可以自己用OD调试自己的程序,然后配合源代码,比较容易理解
2009-4-11 09:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
你把《加密与解密》第三版买一本回去看看吧,要么下载《天书夜读》看看也可以
2009-4-11 09:51
0
游客
登录 | 注册 方可回帖
返回
//