如何禁止masm优化?

TaiJi1985 2006-04-05 11:04:56
我将一个vc程序和一个masm编写的汇编程序 连接后,用vc跟踪反汇编代码。
发现用masm32编译的汇编代码被弄得乱七八糟了。masm是不是默认优化代码啊?
如何关闭优化呢?

谢谢!
...全文
211 4 打赏 收藏 转发到动态 举报
写回复
用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 源代码贴出来。
易语言赤月神社模块.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_汇编 删除 【注入类】取模块函数地址

21,458

社区成员

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

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