数据转换为命令~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sunchaohuang 2009-01-14 05:31:22
65259为jmp s的机器码,如何将65259数据当做命令执行


assume cs:code
code segment
s:
mov ax,65259
mov cs:[0],ax
call dword ptr cs:[0]
;jmp s
;jmp short s
;jmp near ptr s
;jmp far ptr s
;jmp far ptr s
code ends

end s
...全文
99 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxdzxc 2009-01-15
  • 打赏
  • 举报
回复
10进制 65259 = 16进制 FE EB---貌似1个跳转指令,用DW 65259 ,程序只要能顺序或转移到这个内存地址,这里就会被当成指令执行
invaliddescriptor 2009-01-15
  • 打赏
  • 举报
回复
不懂,帮顶
success000 2009-01-15
  • 打赏
  • 举报
回复
不懂,帮顶
dalixux 2009-01-15
  • 打赏
  • 举报
回复
你的代码改成 call word ptr cs:[0]
yuzl32 2009-01-14
  • 打赏
  • 举报
回复

assume cs:code
code segment
dw 65259

mov ax,4c00h
int 21h
s:
mov ax,0
call word ptr [ax] ;直接跳到dw 65259执行

code ends

end s

killbug2004 2009-01-14
  • 打赏
  • 举报
回复
jmp相对跳转,使用的是相对偏移,使用opcode时要注意

运行时修改代码段要注意保证代码段可写属性
cnzdgs 2009-01-14
  • 打赏
  • 举报
回复
如果要在运行中修改,可以在代码中定义一个变量,然后修改该变量,例如:
l1:
mov ax, offset l1
sub ax, offset jmpcode+3
mov cs:jmpoff, ax
jmpcode DB 0E9H
jmpoff DW ?
这样执行到jmpcode处就会跳转到l1标号。
大熊猫侯佩 2009-01-14
  • 打赏
  • 举报
回复
jmp s : 65259 ;这里是相对跳转,当作指令执行没问题,问题是可能不是你想要的跳转。

like this:
mov ax,65259
jmp $-2
cnzdgs 2009-01-14
  • 打赏
  • 举报
回复
在代码中写
DW 65259

21,459

社区成员

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

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