看TheShellcoderbook不明白之处,求解释

jimette 2013-06-26 11:20:15
0x8048430 <triangle>: push %ebp
0x8048431 <triangle + 1>: mov %esp, %ebp
0x8048433 <triangle + 3>: push %edi
0x8048434 <triangle + 4>: push %esi
0x8048435 <triangle + 5>: sub $0x30, %esp

0x8048438 <triangle + 8>: lea 0xffffffd8(%ebp), %edi //这一句
0x804843b <triangle + 11>: mov $0x8049508, %esi //这一句

0x8048440 <triangle + 16>: cld
0x8048441 <triangle + 17>: mov $0x30, %esp
0x8048446 <triangle + 22>: repz movsl %ds:(%esi), %es:(%edi)
0x8048448 <triangle + 24>: mov 0x8(%ebp), %eax
0x804844b <triangle + 27>: mov %eax, %edx
0x804844d <triangle + 29>: imul 0xc(%ebp), %edx
0x8048451 <triangle + 33>: mov %edx, %eax

0x8048453 <triangle + 35>: sar $0x1f, %eax//这一句
0x8048456 <triangle + 38>: shr $0x1f, %eax//这一句
0x8048459 <triangle + 41>: lea (%eax, %edx,1), %eax//这一句
0x804845c <triangle + 44>: sar %eax//这一句
0x804845e <triangle + 46>: mov %eax, oxffffffd4(%ebp)//这一句
0x8048461 <triangle + 49>: mov 0xffffffd4(%ebp), %eax//这一句
0x8048464 <triangle + 52>: mov %eax, %eax//这一句

0x8048466 <triangle + 54>: add $0x30, %esp
0x8048469 <triangle + 57>: pop %esi
0x804846a <triangle + 58>: pop %edi
0x804846b <triangle + 59>: pop %ebp
0x804846c <triangle + 60>: ret

在 vs2010反汇编没这么复杂

求i解释
...全文
480 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimette 2013-08-09
  • 打赏
  • 举报
回复
jimette 2013-07-17
  • 打赏
  • 举报
回复
www_adintr_com 2013-06-27
  • 打赏
  • 举报
回复
这是 at&t 风格的汇编,unix 下一般用这种 lea 0xffffffd8(%ebp), %edi 等价于 mov edi,[ebp-自己转补码算] 0x804843b <triangle + 11>: mov $0x8049508, %esi 这一句很简单呀 mov esi, 0x8049508 0x8048453 <triangle + 35>: sar $0x1f, %eax//这一句 0x8048456 <triangle + 38>: shr $0x1f, %eax//这一句 0x8048459 <triangle + 41>: lea (%eax, %edx,1), %eax//这一句 0x804845c <triangle + 44>: sar %eax//这一句 0x804845e <triangle + 46>: mov %eax, oxffffffd4(%ebp)//这一句 0x8048461 <triangle + 49>: mov 0xffffffd4(%ebp), %eax//这一句 0x8048464 <triangle + 52>: mov %eax, %eax//这一句 依次翻译为: sar eax, 1fh shr eax, 1fh lea eax, [eax + edx * 1] sar eax mov eax,[ebp - 自己算] mov [ebp - 自己算], eax mov eax,eax
www_adintr_com 2013-06-27
  • 打赏
  • 举报
回复
看不懂, 似乎没什么作用, 全是空操作, 它是不是想在代码段构造出特定的数据来哦, 看看这些代码对应的机器码有没有什么含义呢
jimette 2013-06-27
  • 打赏
  • 举报
回复
0x8048459 <triangle + 41>: lea (%eax, %edx,1), %eax//这一句 0x804845c <triangle + 44>: sar %eax//这一句 0x804845e <triangle + 46>: mov %eax, oxffffffd4(%ebp)//这一句 0x8048461 <triangle + 49>: mov 0xffffffd4(%ebp), %eax//这一句 0x8048464 <triangle + 52>: mov %eax, %eax//这一句 这几句是用来做什么的?
jimette 2013-06-27
  • 打赏
  • 举报
回复
sar $0x1f, %eax shr $0x1f, %eax 为什么右移两次31bit?
jimette 2013-06-27
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
这是 at&t 风格的汇编,unix 下一般用这种 lea 0xffffffd8(%ebp), %edi 等价于 mov edi,[ebp-自己转补码算] 0x804843b <triangle + 11>: mov $0x8049508, %esi 这一句很简单呀 mov esi, 0x8049508 0x8048453 <triangle + 35>: sar $0x1f, %eax//这一句 0x8048456 <triangle + 38>: shr $0x1f, %eax//这一句 0x8048459 <triangle + 41>: lea (%eax, %edx,1), %eax//这一句 0x804845c <triangle + 44>: sar %eax//这一句 0x804845e <triangle + 46>: mov %eax, oxffffffd4(%ebp)//这一句 0x8048461 <triangle + 49>: mov 0xffffffd4(%ebp), %eax//这一句 0x8048464 <triangle + 52>: mov %eax, %eax//这一句 依次翻译为: sar eax, 1fh shr eax, 1fh lea eax, [eax + edx * 1] sar eax mov eax,[ebp - 自己算] mov [ebp - 自己算], eax mov eax,eax
大牛,字面意思我懂 只不过不知道那几句的作用
内容概要:本文详细介绍了一个基于C++语言开发的疫苗接种和儿童体检系统的设计与实现全过程,涵盖项目背景、目标意义、架构设计、核心功能模块、数据库实现、API接口规范、前后端代码实现及部署应用等多个方面。系统采用分层架构与模块化设计,实现了儿童信息管理、疫苗接种记录、体检数据录入、多用户权限控制、数据统计分析、异常预警、安全加密与日志审计等核心功能,并通过MySQL数据库进行数据持久化,结合Qt实现图形化界面,支持高并发、数据脱敏、多平台对接与自动化部署。项目强调数据安全、隐私保护与系统可扩展性,适用于社区医疗、疾控中心、学校及医院等场景。; 适合人群:具备C++编程基础,熟悉数据库操作和基本软件工程流程的开发人员、计算机及相关专业学生、医疗信息化项目开发者,以及希望了解完整医疗管理系统开发流程的技术人员。; 使用场景及目标:①学习如何使用C++构建完整的医疗信息管理系统;②掌握数据库设计、前后端交互、权限控制、多线程处理和GUI开发等关键技术;③应用于社区卫生服务、学校健康管理、疾控数据统计等实际业务场景,提升儿童健康管理水平;④作为课程设计、毕业设计或实际项目的参考模板。; 阅读建议:建议读者结合文档中的代码示例与数据库脚本,搭建本地开发环境进行实践操作,重点关注系统架构设计、模块解耦、安全机制与前后端交互逻辑,深入理解各功能模块的实现原理,并尝试在此基础上进行功能扩展,如接入移动端或增加AI分析模块。

21,496

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧