| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5554 人关注过本帖
标题:求助帖 反汇编
只看楼主 加入收藏
z1058238763
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-5-10
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
求助帖 反汇编
08048c60 <func4>:
 8048c60:    57                       push   %edi
 8048c61:    56                       push   %esi
 8048c62:    53                       push   %ebx
 8048c63:    8b 5c 24 10              mov    0x10(%esp),%ebx
 8048c67:    8b 7c 24 14              mov    0x14(%esp),%edi
 8048c6b:    85 db                    test   %ebx,%ebx
 8048c6d:    7e 2b                    jle    8048c9a <func4+0x3a>
 8048c6f:    89 f8                    mov    %edi,%eax
 8048c71:    83 fb 01                 cmp    $0x1,%ebx
 8048c74:    74 29                    je     8048c9f <func4+0x3f>
 8048c76:    83 ec 08                 sub    $0x8,%esp
 8048c79:    57                       push   %edi
 8048c7a:    8d 43 ff                 lea    -0x1(%ebx),%eax
 8048c7d:    50                       push   %eax
 8048c7e:    e8 dd ff ff ff           call   8048c60 <func4>
 8048c83:    83 c4 08                 add    $0x8,%esp
 8048c86:    8d 34 07                 lea    (%edi,%eax,1),%esi
 8048c89:    57                       push   %edi
 8048c8a:    83 eb 02                 sub    $0x2,%ebx
 8048c8d:    53                       push   %ebx
 8048c8e:    e8 cd ff ff ff           call   8048c60 <func4>
 8048c93:    83 c4 10                 add    $0x10,%esp
 8048c96:    01 f0                    add    %esi,%eax
 8048c98:    eb 05                    jmp    8048c9f <func4+0x3f>
 8048c9a:    b8 00 00 00 00           mov    $0x0,%eax
 8048c9f:    5b                       pop    %ebx
 8048ca0:    5e                       pop    %esi
 8048ca1:    5f                       pop    %edi
 8048ca2:    c3                       ret   
看不懂这个递归= =求帮助
2016-05-10 21:37
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:10 
好麻烦的

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-05-14 05:54
AXRZ
Rank: 2
等 级:论坛游民
威 望:5
帖 子:48
专家分:84
注 册:2016-3-23
收藏
得分:10 
用的是ARM语法,每行代码的意义:
 8048c60:    57                       push   %edi                    ;保护即将要被修改的寄存器的值
 8048c61:    56                       push   %esi
 8048c62:    53                       push   %ebx
 8048c63:    8b 5c 24 10              mov    0x10(%esp),%ebx        ;将第二个参数传递至寄存器中:这里很不解,因为堆栈对不上
 8048c67:    8b 7c 24 14              mov    0x14(%esp),%edi        ;将第一个参数传递至寄存器中:同上
 8048c6b:    85 db                    test   %ebx,%ebx
 8048c6d:    7e 2b                    jle    8048c9a <func4+0x3a>    ;这里的话如果EBX为零则跳转至返回0的返回处
 8048c6f:    89 f8                    mov    %edi,%eax               ;这条指令是传递返回数值的趋势
 8048c71:    83 fb 01                 cmp    $0x1,%ebx
 8048c74:    74 29                    je     8048c9f <func4+0x3f>    ;若EBX为1则跳转至返回处
 8048c76:    83 ec 08                 sub    $0x8,%esp               ;将ESP减8
 8048c79:    57                       push   %edi                    ;保存EDI至堆栈:不难看出此时EDI为函数的参数
 8048c7a:    8d 43 ff                 lea    -0x1(%ebx),%eax         ;将[EBX-1]的地址存入EAX
 8048c7d:    50                       push   %eax                    ;保存EAX至堆栈:不难看出此时EAX同为函数的参数
 8048c7e:    e8 dd ff ff ff           call   8048c60 <func4>         ;递归:调用本函数
 8048c83:    83 c4 08                 add    $0x8,%esp               ;栈中参数释放:由此可以得知参数总共是8个字节(64位),因为这是个32位程序,可以猜测到有2个参数
 8048c86:    8d 34 07                 lea    (%edi,%eax,1),%esi      ;将[EDI+EAX+1]的地址存入ESI
 8048c89:    57                       push   %edi                    ;保存EDI至堆栈
 8048c8a:    83 eb 02                 sub    $0x2,%ebx               ;将EBX减2
 8048c8d:    53                       push   %ebx                    ;保存EBX至堆栈
 8048c8e:    e8 cd ff ff ff           call   8048c60 <func4>         ;再次递归
 8048c93:    83 c4 10                 add    $0x10,%esp              ;释放堆栈
 8048c96:    01 f0                    add    %esi,%eax               ;将EAX加上ESI
 8048c98:    eb 05                    jmp    8048c9f <func4+0x3f>    ;跳转至返回处
 8048c9a:    b8 00 00 00 00           mov    $0x0,%eax               ;返回0的返回处
 8048c9f:    5b                       pop    %ebx                    ;返回处:恢复所有被修改了的寄存器的值
 8048ca0:    5e                       pop    %esi
 8048ca1:    5f                       pop    %edi
 8048ca2:    c3                       ret                            ;返回

总而言之你试着去通过结合调用此函数的前后代码,参数的类型,来猜猜这函数的作用,因为单单看一个函数里面的操作是在过于局限
2016-05-15 02:08
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
是啊,也没有中断,看不出是干什么的

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-05-15 07:38
AXRZ
Rank: 2
等 级:论坛游民
威 望:5
帖 子:48
专家分:84
注 册:2016-3-23
收藏
得分:0 
回复 4楼 zhulei1978
在WIN95还是XP之后中断已经全部是由操作系统接手的了,BIOS下的“低效率”中断估计全部被操作系统的“高效率”中断替换,所以现代操作系统中Ring-3用户级程序是碰不到中断的(INT 21H这样的语句在现在的操作系统中会被视为访问非法区域内存的语句:Accessing Memory Violation。中断只有通过驱动程序,外部设备,或系统本身来触发,所以通常32位程序现在是没有INT指令的
2016-05-16 01:24
快速回复:求助帖 反汇编
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017740 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved