pushad mov ecx,11111111(大小)mov ebx,00401000(code段起始位置)add dword ptr [ebx],4444xor dword ptr [ebx],4444add ebx,4loop (xor的内存地址)popad
这句代码的 ADD EBX,4 是不是 加密后 ebx 再加4 ??还有 add dword ptr [ebx],4444xor dword ptr [ebx],4444 这两句加密代码是什么意思?
懂汇编的来下,有个问题?
答案:2 悬赏:50 手机版
解决时间 2021-05-06 14:34
- 提问者网友:雾里闻花香
- 2021-05-05 16:53
最佳答案
- 五星知识达人网友:迷人又混蛋
- 2021-05-05 18:25
pushad ;所有寄存器进堆栈
mov ecx,11111111(大小) ;定义循环次数,跟下面的loop相配合的
mov ebx,00401000(code段起始位置) ;如果你在win32下汇编的话,这个是一个线地址,会根据操作系统的分页机制变成物理地址;如果是DOS下,这个是实际地址,DOS不支持,保护模式中的分页
add dword ptr [ebx],4444 ;第一次ebx指向00401000,所以操作[00401000~00401003],4个字节 它们加4444,下次ebx寄存器就指向00401004首地址了,所以操作00401004~00401007,分清ebx只是内存地址指针,而不是操作对象
xor dword ptr [ebx],4444 ;执行异或指令
add ebx,4 ;ebx加4,准备下次操作的4字节地址
loop (xor的内存地址) ;循环
popad ;所有寄存器出堆栈
你第一个问题,ebx 只是存放内存首地址的寄存器(相当于指针),那个add ebx,4是 内存指针往下走4个字节,准备操作下一个内存地址,add dword ptr [ebx],4444 xor dword ptr [ebx],4444这2句操作的只是内存,而不是ebx的地址指针
你第2个问题,如果这段是更内存加密有关,那么这2句就是算法,内存+4444后,在跟4444异或
全部回答
- 1楼网友:洎扰庸人
- 2021-05-05 19:40
[ebx]相当于[00401000]这里面存储的数据
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯