怎么比较某个内存地址的数值是否为XX?

cniao 2003-08-23 02:18:50
用C这样写:

if ((char *)(0x01234567) == 0x77){
....
}else{
....
}


不知道用ASM应该怎么写?
...全文
67 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
spbabyba 2003-08-25
  • 打赏
  • 举报
回复
刚刚写错了,应该是:
movzx eax,byte ptr 01234567
.if eax== 0x77
;u code
.endif
spbabyba 2003-08-25
  • 打赏
  • 举报
回复
32汇编里,你可以:
mov al,byte ptr 01234567
.if 0x01234567== 0x77
;u code
.endif
W32API 2003-08-25
  • 打赏
  • 举报
回复
简单的方法是设置断点。。。
然后自己改 EIP
catm3 2003-08-24
  • 打赏
  • 举报
回复
cniao(菜鸟) ,你学汇编了吗,怎么会有a1,a2呢?,W32API说的可是寄存器,你再看看汇编最基本的指令再说,不要"大跃进".
在汇编里面,一般可以这样比较:
val0 db 67h,45h,23h,01h ;变量val0
val1 dd 01234567h ;变量val1
val2 dd 12345678h ;变量val2
...
mov eax,val1 ;val1 --> eax
cmp eax,val2 ;比较eax和val2
je xxx1 ;相等就转 xxx1
...
;又可以是:
lea eax,val2 ;val1的地址 --> eax,和C++的指针一样!!??
cmp [eax],dword ptr [val0] ;eax指向的地址里的内容和val0比较,
je xxx1
;在调试器里面动态汇编,我看ollydbg比较方便,在该EIP指针,立刻执行你的指令
只要没错,怎么比都可以
再插一句,不要急,塌实点
bauhaus 2003-08-23
  • 打赏
  • 举报
回复
内存不定
你需要动态写汇编代码
然后dump下来
把保存的pe文件重新修改一些入口地址什么的
具体建议去看雪软件调试论坛看看
cniao 2003-08-23
  • 打赏
  • 举报
回复
谢谢各位,我是32位的。

TO:W32API(李诚)
我是要用SOFTICE往内存里动态加代码,这个a1,a2到时候可以定义吗?
行标呢?
麻烦哥们了。
W32API 2003-08-23
  • 打赏
  • 举报
回复
Dear Purpleendurer(Purplenendurer)

(char *)(0x01234567)

I think his code would to run in 32-bit mode
W32API 2003-08-23
  • 打赏
  • 举报
回复
the data is Hex
mov al,[01234567]
mov bl,77
xor al,bl
jz next1
jmp next2
next1:
... ;if [01234567]==77 then run this code
jmp next3
next2:
... ;else run this code
next3:
.... ;others code
紫郢剑侠 2003-08-23
  • 打赏
  • 举报
回复
这在16位汇编和32位汇编中写法不一样.你要哪种?
cniao 2003-08-23
  • 打赏
  • 举报
回复
谁告诉我X86怎么写啊?
cniao 2003-08-23
  • 打赏
  • 举报
回复
扑通。。。

晕倒了~~~
itisajoke 2003-08-23
  • 打赏
  • 举报
回复
当然,如果你用arm或是68000的cpu那是不一样的。
看来你用的是x86的机器。但我目前对arm最熟,
arm中应该是这样写的。

ldr r1,=0x01234567
ldr r0,r[0]
ldr r2,=0x77
tst r0,r2
beq progress1
progress2 ;内存地址中的数值不等于0x77时执行的代码
.......................
.......................
progress1 ;内存地址中的数值等于0x77时执行的代码
......................
........................
cniao 2003-08-23
  • 打赏
  • 举报
回复
啊。。。不会吧~~~~和CPU有关系吗?就是兼容机呀
itisajoke 2003-08-23
  • 打赏
  • 举报
回复
什么cpu,它用什么指令集。

21,459

社区成员

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

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