能力值:
( LV9,RANK:230 )
|
-
-
76 楼
cmp word ptr[edx],'MZ'
这句写错了,因为Z在高地址,M在低地址,所以当以双字节读取时应写为'ZM'
|
能力值:
( LV2,RANK:10 )
|
-
-
77 楼
谢谢楼主的总结,正好在看这方面的资料。
|
能力值:
( LV2,RANK:10 )
|
-
-
78 楼
顶一下。学习。收藏
|
能力值:
( LV2,RANK:10 )
|
-
-
79 楼
学习了,谢谢xfish~
|
能力值:
( LV9,RANK:190 )
|
-
-
80 楼
谢谢xfish,对PEB有一定了解了
|
能力值:
( LV2,RANK:10 )
|
-
-
81 楼
我是菜鸟 dec edx ;
xor dx, dx ; 减去跨度
edx减一后不就是低位减一吗 然后又xor dx,dx又把低位清零了 那岂不是没变化 搜索比较次数还是一样多 效率怎么提高呢 很费解 望哥哥姐姐们指教
|
能力值:
( LV2,RANK:10 )
|
-
-
82 楼
假设:edx = 0x77889900
第一次:
dec edx ; edx = 0x778898ff
xor edx, edx; edx = 0x77880000
第二次:
dec edx ; edx = 0x7787ffff
xor edx, edx; edx = 0x77870000, 跨度正好是0x10000,64k
此处是否也有笔误(第二种方法):
GetKrnlBase2:
mov edx, [fs:0]
.Next:
inc dword [edx]
jz .Krnl
dec dword [edx]
mov edx, [edx]
jmp .Next
.Krnl:
dec dword [edx]
mov edx, [edx+4]
.Loop:
cmp word [edx], 'MZ'
jz .IsPe
dec edx
xor dx, dx
jmp .Loop
.IsPe:
mov eax, [edx+3ch]
cmp word [eax+edx], 'PE'
jnz .Next ;应该jnz .loop 处
xchg eax, edx
ret
|
能力值:
( LV2,RANK:10 )
|
-
-
83 楼
假设:edx = 0x77889900
第一次:
dec edx ; edx = 0x778898ff
xor edx, edx; edx = 0x77880000
第二次:
dec edx ; edx = 0x7787ffff
xor edx, edx; edx = 0x77870000, 跨度正好是0x10000,64k
此处是否也有笔误(第二种方法):
GetKrnlBase2:
mov edx, [fs:0]
.Next:
inc dword [edx]
jz .Krnl
dec dword [edx]
mov edx, [edx]
jmp .Next
.Krnl:
dec dword [edx]
mov edx, [edx+4]
.Loop:
cmp word [edx], 'MZ'
jz .IsPe
dec edx
xor dx, dx
jmp .Loop
.IsPe:
mov eax, [edx+3ch]
cmp word [eax+edx], 'PE'
jnz .Next ;应该jnz .loop 处
xchg eax, edx
ret
|
能力值:
( LV2,RANK:10 )
|
-
-
84 楼
不好意思,举的例子是“xor dx, dx”
|
能力值:
( LV7,RANK:110 )
|
-
-
85 楼
顶一下,
|
能力值:
( LV2,RANK:10 )
|
-
-
86 楼
很好。谢谢楼主
|
能力值:
( LV2,RANK:10 )
|
-
-
87 楼
mark下 下次看。。!
|
|
|