关于XOR的用法 求教一段汇编 - 大虾乱入

mrpeterchen 2012-08-27 10:47:18
MOV ESI,DWORD PTR SS:[EBP-4]
XOR ESI,DWORD PTR SS:[EBP-8]
CALL DWORD PTR DS:[<&KERNEL32.GetCurrentProcessId>]
XOR ESI,EAX
CALL DWORD PTR DS:[<&KERNEL32.GetCurrentThreadId>]
XOR ESI,EAX
CALL DWORD PTR DS:[<&KERNEL32.GetTickCount>]
XOR ESI,EAX
LEA EAX,DWORD PTR SS:[EBP-10]


这里XOR具体起什么作用


我来说明下:
DWORD PTR SS:[EBP-4],DWORD PTR SS:[EBP-8]保存的是一个64位的值,这个值是由函数GetSystemTimeAsFileTime得到的,具体可以参看FILETIME结构

然后,
在“MOV ESI,DWORD PTR SS:[EBP-4]”这句执行前,ESI的值是FFFFFFFF;
这个64位的值应该是代表一个时间,可我搞不懂为什么要让时间这个值本身去XOR
比如XOR DATE, TIME -。- 这到底有啥用呢

还有就是,看后面几段代码:
CALL DWORD PTR DS:[<&KERNEL32.GetCurrentProcessId>]
XOR ESI,EAX
CALL DWORD PTR DS:[<&KERNEL32.GetCurrentThreadId>]
XOR ESI,EAX
CALL DWORD PTR DS:[<&KERNEL32.GetTickCount>]
XOR ESI,EAX
CALL完第一个是得到进程ID,一般这个值会返回给EAX
也就是说,后面的一句可以看成,XOR ESI, 进程ID
以此类对,后面几句都可以这样看,XOR ESI, 线程ID
等等。。。

我知道XOR是异或的意思,但看不明白这里用异或啥意思? 加密? 加密一般密钥是不变的呀。这里一会进程ID,一会线程ID

跪求ING~~~
...全文
355 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WJN92 2012-08-28
  • 打赏
  • 举报
回复
你自己使用系统自带计算器按一按就知道了
  • 打赏
  • 举报
回复
应该是生成随机数,不过这个算法随机性恐怕很难保证...
zara 2012-08-27
  • 打赏
  • 举报
回复
从最后的 GetTickCount() 来看,应该是想生成一个随机数

21,459

社区成员

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

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