社区
汇编语言
帖子详情
如何禁止masm优化?
TaiJi1985
2006-04-05 11:04:56
我将一个vc程序和一个masm编写的汇编程序 连接后,用vc跟踪反汇编代码。
发现用masm32编译的汇编代码被弄得乱七八糟了。masm是不是默认优化代码啊?
如何关闭优化呢?
谢谢!
...全文
211
4
打赏
收藏
如何禁止masm优化?
我将一个vc程序和一个masm编写的汇编程序 连接后,用vc跟踪反汇编代码。 发现用masm32编译的汇编代码被弄得乱七八糟了。masm是不是默认优化代码啊? 如何关闭优化呢? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
TaiJi1985
2006-06-08
打赏
举报
回复
问题已经解决,谢谢各位捧场,给分!
TaiJi1985
2006-04-08
打赏
举报
回复
晕死,我过了一天后,又调发现没有问题了,一个问题又隐藏了起来了。
现在把源代码贴出来。
----------
这是一个进程切换的函数,寄存器的切换
.386
.model flat
.data
newthread dd 0
oldthread dd 0
save_eax dd 0
save_ebx dd 0
.code
;;;;const ;;;;;;;;
REG_SAVESIZE equ 8
REG_EAX equ 0
REG_EBX equ 4
REG_ECX equ 8
REG_EDX equ 12
REG_ESP equ 16
REG_EBP equ 20
REG_ESI equ 24
REG_EDI equ 28
START_PROC equ 32
;;;;;end const ;;;;;
; esp + 4 old
; esp + 8 new
; c: SWITCH(old,new)
;
;;;;;;;;;;;;;;;;;;;
_SWITCH proc
mov save_eax,eax ;;save eax
mov eax,[esp+4] ;; mov address of old thread to eax
mov oldthread,eax ;; mov address of old thread to val oldthread
mov [eax+REG_EBX],ebx
mov [eax+REG_ECX],ecx
mov [eax+REG_EDX],edx
mov ebx,[esp] ; ret address! ,save to bx
mov [eax+START_PROC],ebx ;;[esp] contain ret address!,save it!
mov [eax+REG_ESP],esp ;;
mov [eax+REG_EBP],ebp
mov [eax+REG_ESI],esi
mov [eax+REG_EDI],edi
mov eax,save_eax ;; recover eax
mov [esp+4],eax ;; save eax
;;set reg
mov eax,[esp+8] ;; mov address of new thread to eax
mov newthread,eax ;; mov address of new thread to val new thread
mov ebx,REG_EBX[eax]
mov ecx,REG_ECX[eax]
mov edx,REG_EDX[eax]
mov esp,REG_ESP[eax]
mov ebp,REG_EBP[eax]
mov esi,REG_ESI[eax]
mov edi,REG_EDI[eax];;
mov save_eax,eax ;;save eax
mov eax,START_PROC[eax] ;return address
mov [esp],eax ;set return address
mov eax,save_eax ;;recover eax
mov eax,REG_EAX[eax]
ret
_SWITCH endp
end
-------------------------------
原先,写的是
.386
.model flat
.data
newthread dd 0
oldthread dd 0
save_eax dd 0
save_ebx dd 0
.code
;;;;const ;;;;;;;;
REG_SAVESIZE equ 8
REG_EAX equ 0
REG_EBX equ 4
REG_ECX equ 8
REG_EDX equ 12
REG_ESP equ 16
REG_EBP equ 20
REG_ESI equ 24
REG_EDI equ 28
START_PROC equ 32
;;;;;end const ;;;;;
; esp + 4 old
; esp + 8 new
; c: SWITCH(old,new)
;
;;;;;;;;;;;;;;;;;;;
_SWITCH proc
mov save_eax,eax ;;save eax
mov eax,[esp+4] ;; mov address of old thread to eax
mov oldthread,eax ;; mov address of old thread to val oldthread
mov REG_EBX[eax],ebx
mov REG_ECX[eax],ecx
mov REG_EDX[eax],edx
mov ebx,[esp] ; ret address! ,save to bx
mov START_PROC[eax],ebx ;;[esp] contain ret address!,save it!
mov REG_ESP[eax],esp ;;
mov REG_EBP[eax],ebp
mov REG_ESI[eax],esi
mov REG_EDI[eax],edi
mov eax,save_eax ;; recover eax
mov [esp+4],eax ;; save eax
;;set reg
mov eax,[esp+8] ;; mov address of new thread to eax
mov newthread,eax ;; mov address of new thread to val new thread
mov ebx,REG_EBX[eax]
mov ecx,REG_ECX[eax]
mov edx,REG_EDX[eax]
mov esp,REG_ESP[eax]
mov ebp,REG_EBP[eax]
mov esi,REG_ESI[eax]
mov edi,REG_EDI[eax];;
mov save_eax,eax ;;save eax
mov eax,START_PROC[eax] ;return address
mov [esp],eax ;set return address
mov eax,save_eax ;;recover eax
mov eax,REG_EAX[eax]
ret
_SWITCH endp
end
fhb13
2006-04-05
打赏
举报
回复
你是不是用了宏汇编指令?
建议你用存汇编试试。
大熊猫侯佩
2006-04-05
打赏
举报
回复
masm 源代码贴出来。
MASM
32绝好资料
MASM
32绝好资料。 包括: Introduction to Assembler
MASM
Reference 宏参考MACRO Reference 伪指令参考 语法参考 其它参考 寄存器大全 标志寄存器 Processor Flags 80位数据寄存器Stack of 80-bit Data Registers Ascii 字符表Ascii Characters 奔腾指令
优化
参考Pentium Optimisation 调用格式Calling Conventions 命令行工具Command Line Tools -------------------------------------
masm
32 version 10
1.微软的32位汇编集成开发环境。在学习32位汇编的时候,是非常有用的。内有调试方法介绍。 2.其帮助文档,可以看作是汇编指令的速查手册,解释清晰而翔实。比intel的厚厚的三大本手册要实用多了。 3.而且帮助文档中有对汇编编程的图文并茂的讲解,而且还讲解了汇编
优化
的相关知识。很多人学汇编都是去看各种教材,殊不知
masm
32的帮助文档才是一个大宝库,可以现学现用。
易语言赤月神社模块 v6.80 免费版.rar
易语言赤月神社模块.ec 易语言经典模块 2012.6.11 增加
MASM
汇编 (将
MASM
格式的汇编指令转成字节集)
MASM
反汇编 (将字节集代码转为
MASM
格式汇编指令) 修正 汇编 (
优化
执行速度) 反汇编(
优化
执行速度) 置入汇编 (改用
MASM
指令 废除OD引擎指令) 内核汇编(
优化
执行速度 增加错误指令提示) 内核反汇编(
优化
执行速度 修复错误指令书写) 修正 Asm (支持了高级指令的书写) 置CE作弊脚本_汇编 (改用
MASM
指令 废除OD引擎指令) 注入作弊脚本_汇编 (改用
MASM
指令 废除OD引擎指令) 2012.5.21 修复 各种BUG我修复了很多 我自己都记不得了 ╮(╯▽╰)╭ 增加 命令 申请自身内存 Asm_RtlMoveMemory 修改虚拟保护 NtRtlMoveMemory 申请虚拟内存 高级汇编类 { retn Call_DWORD_Ptr_EAX Call_DWORD_Ptr_EBP Call_DWORD_Ptr_EBX Call_DWORD_Ptr_ECX Call_DWORD_Ptr_EDI Call_DWORD_Ptr_EDX Call_DWORD_Ptr_ESI Call_DWORD_Ptr_ESP } 增强 APIHOOK DetourHook 内存类 读写内存操作 已经全面加强 采用非ntdll.dll的API 自写API 可以过检测(大概~~~~) { 读写内存操作 (调试器下各种硬件/INT3断点都无法下断检测) } 类 XMPlay 废弃 读自身整数型内存 写自身整数型内存 Hook内存读写类 汇编内存读写类 NrWriteVirtualMemory NrReadVirtualMemory 2012.4.29 修复 植入代码 网页访问类 增加 命令 内联汇编 { 置汇编 ASM编译 ASM执行 ASM取代码 } 正则表达式 类 屏蔽类 脚本类 正则表达 DerourHook 驱动模拟类 底层模拟类 消息钩子类 热键编辑框 地址寄存器类 DLL全局注入类 2012.3.6 修复 【保护类】终极反调试 (加强) 【内存类】读基址 (替换成PID) 【进程类】取进程路径 (替换成PID) 【进程类】多线程
优化
(增加返回值) 增加 【内核类】 NrReadVirtualMemory NrWriteVirtualMemory 【指针类】 到子程序指针 取子程序地址 汇编_取指针地址 【调用类】 植入代码 调用子程序_寄存器 取模块函数入口_汇编 GetProcAddress_汇编 GetModuleHandleA_汇编 删除 【注入类】取模块函数地址
FileInfo 0.0.0010 --修正bug,提升速度
0.0.0010的改进:
1、修正了拖动的文件大于100KB时程序出错的bug
2、
优化
了CRC32计算代码,提升速度
文件说明符 : F:\
masm
32\PeWorks\fileinfo\FileInfo.exe
属性 : A---
数字签名:否
PE文件:是
语言 : 中文(中国)
文件版本 : 0.0.0010
说明 : 获取文件信息
版权 : PurpleEndurer
产品版本 : 0.0.0010
产品名称 : FileInfo
公司名称 : PurpleEndurer
合法商标 : PurpleEndurer
内部名称 : FileInfo
源文件名 : FileInfo.exe
创建时间 : 2008-6-28 8:42:26
修改时间 : 2008-6-29 21:41:1
大小 : 15872 字节 15.512 KB
MD5 : 39ea4e3ec1db44e05d0430fc34ae94ac
SHA1: D49A1C789E106157AC2A98E6714D46BBF5E697AA
CRC32: 64544cec
masm
convert
对于用汇编语言或者VC++,BC++开发的人士而言。编译器对字符串的敏感让人难以接受。估计开发编译器公司有一个工具已投入运行。只是没有公开罢了。比如shellexecute随你怎么写在DELPHI中没有一点问题。在以上语言中。就会得到错误的信息。未定义的东东。汇编中需写成ShellExecute可见除了从底层让开发公司进行一个改变。再不就是。。。本工具就完全可以让你自由地写shellexecute.用本工具可以转换为
masm
32知道的东东。本软件保含将近400个关键字。基本上包括了常用的。对此还可以进行一些
优化
。提高速度。其它语言则请自行添加关键字。
汇编语言
21,458
社区成员
41,603
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章