能力值:
( LV2,RANK:10 )
|
-
-
2 楼
第二个问题:
一般将源程序的前4字节保存,执行源程序时再跳向源4字节。
这4字节是什么内容,为什么一定要先保存呢。
|
能力值:
( LV8,RANK:130 )
|
-
-
3 楼
“左移4位,就相当于乘8”这是错误的说法
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
是不是错误这是书上的说法,左移1位相当于乘2,右移1移相当于/2,
也许这里不是乘8.但又是什么意思呢。
怎么这么多高手没人回答??
|
能力值:
( LV13,RANK:320 )
|
-
-
5 楼
|
能力值:
( LV6,RANK:90 )
|
-
-
6 楼
shr eax,16 ;这个更搞不懂了。。
mov DataDes.basem,al
mov DataDes.baseh,ah
这个的意思是保存eax的前16位
举个例子:
eax=12345678
那么
ax=5678
ah=56
al=78
但是想保存前16位的1234怎么办呢,用shr eax,16就可以了
经过shr eax,16之后
eax=00001234
ax=1234
ah=12
al=34
第二个问题:
一般将源程序的前4字节保存,执行源程序时再跳向源4字节。
这4字节是什么内容,为什么一定要先保存呢。
这4字节我记得应该是原函数的的地址(瞎猜的,请不要向我扔转头^_^)
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
嗯。谢谢楼上的。
你的意思我知道。
但code和data分明是16位的段地址嘛。。
他作为段描述符放进GPT表中。
干么要左移4位再右移16位呢。。
希望有看过这本书的帮我下。看的很晕。
-------------------------------
第二个问题我有点懂了。
前3B就换成跳向病毒入口处0e9h 地址。
|
能力值:
( LV8,RANK:130 )
|
-
-
8 楼
最初由 seny 发布 是不是错误这是书上的说法,左移1位相当于乘2,右移1移相当于/2, 也许这里不是乘8.但又是什么意思呢。 怎么这么多高手没人回答?? “左移1位相当于乘2”说的过去
但“左移4位相当于乘8”就不知道你怎么算出来的的了
你先算算左移3位相当于乘几?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
heXer要冒烟了
哼唧
|
能力值:
( LV13,RANK:810 )
|
-
-
10 楼
最初由 heXer 发布 “左移1位相当于乘2”说的过去 但“左移4位相当于乘8”就不知道你怎么算出来的的了 你先算算左移3位相当于乘几?
还是heXer对的
shl=x*(n^2)
mov eax,2
shl eax,1
;eax=4
shr刚好相反
"左移1位相当于乘2"
这句应该用在rol上面
他才是*2
ror刚好是/
看看资料发现原来
shl,shr有补码的地方都算0
看来只能移位正数了
往上移都一样往下移就有区别了
|
能力值:
(RANK:410 )
|
-
-
11 楼
呵呵,你自己编一个程序看看不就明白了。
.386
.model flat,stdcall
Option CaseMap:None
include windows.inc
include kernel32.inc
include user32.inc
includelib kernel32.lib
includelib user32.lib
.data
szBuffer db 50 dup(0)
szFormat db "%08X-%08X-%08X-%08X",0
n1 dd 0
n2 dd 0
n3 dd 0
n4 dd 0
.CODE
START:
mov n1,12345678h
mov n2,12345678h
mov n3,12345678h
mov n4,12345678h
shr n1,16
shl n2,16
ror n3,16
rol n4,16
invoke wsprintf,addr szBuffer,addr szFormat,n1,n2,n3,n4
invoke MessageBox,NULL,addr szBuffer,NULL,MB_OK
invoke ExitProcess,NULL
END START
结果:
n1 = 12345678h shr 16 = 00001234h
n2 = 12345678h shl 16 = 56780000h
n3 = 12345678h ror 16 = 56781234h
n4 = 12345678h rol 16 = 56781234h
|
能力值:
(RANK:410 )
|
-
-
12 楼
shr和shl是逻辑乘/除方
x shr n/2^x;
x shl n*2^x;
ror和rol是循环乘/除方
x ror “n/2^x”
x rol “n*2^x”
|
能力值:
( LV9,RANK:810 )
|
-
-
13 楼
移位那个用windows自带的计算器即可验证。建议楼主先找一本汇编教程看看基础的东西先。
|
|
|