能力值:
( LV4,RANK:50 )
|
-
-
2 楼
假设R9=0xFFFFFFFFFFFFFFFF xor r9d,rd9后 r9=0xFFFFFFFF00000000 mov rcx, r9 后rcx=r9=0xFFFFFFFF00000000
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
lononan
假设R9=0xFFFFFFFFFFFFFFFF
xor r9d,rd9后 r9=0xFFFFFFFF00000000
mov rcx, r9 后rcx=r9=0xFFFFFFFF00000 ...
是0x0不是 0xFFFFFFFF00000000
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
xor不是清零么?
|
能力值:
( LV3,RANK:30 )
|
-
-
5 楼
xor的两个操作数相同时就是清零。r9是64位寄存器,r9d是r9的低32位,操作64位寄存器的低32位寄存器会清零高32位。
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
这是汇编基础。你以前分析文章那来的?
最后于 2023-3-21 09:44
被wujimaa编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
Boring勇哥
xor的两个操作数相同时就是清零。r9是64位寄存器,r9d是r9的低32位,操作64位寄存器的低32位寄存器会清零高32位。
高32位不变吧?
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
wujimaa
这是汇编基础。你以前分析文章那来的?
我觉得这段代码有些奇怪,有点不太确定了。xor r9d,r9d;mov rcx,r9;这段指令是什么意思?设置内存为起始地址?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
lononan
假设R9=0xFFFFFFFFFFFFFFFF
xor r9d,rd9后 r9=0xFFFFFFFF00000000
mov rcx, r9 后rcx=r9=0xFFFFFFFF00000 ...
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
syser
是0x0不是 0xFFFFFFFF00000000
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
大鲤鱼
xor不是清零么?
是的
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
怎么好意思发出来的
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
有在这问的功夫,花一分钟时间在x64dbg上试一下不就知道结果了?
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
huangyalei
有在这问的功夫,花一分钟时间在x64dbg上试一下不就知道结果了?
真是个好办法
|
能力值:
( LV13,RANK:385 )
|
-
-
16 楼
能动手的别吵吵.
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
64位汇编里修改了低32位的值会自动清空高32位的值,所以xor r9d,r9d后r9的值是0,rcx是64位call的第一个参数,rdx r8 r9是第二第三第四个参数(非浮点参数),再多的参数就直接放在栈里了
最后于 2023-3-21 17:44
被htpidk编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
htpidk
64位汇编里修改了低32位的值会自动清空高32位的值,所以xor r9d,r9d后r9的值是0,rcx是64位call的第一个参数,rdx r8 r9是第二第三第四 ...
谢谢,终于明白了。所以这段代码就很迷惑了,memcpy函数往内存地址0的起始区域复制么?这是个bug吧?
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
|
能力值:
( LV3,RANK:20 )
|
-
-
21 楼
下断看看
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
|
能力值:
( LV3,RANK:20 )
|
-
-
23 楼
|
能力值:
( LV3,RANK:20 )
|
-
-
24 楼
总不能一个软件运行后这样,另一个软件程序运行后是这样吧
|
能力值:
( LV3,RANK:20 )
|
-
-
25 楼
|
|
|