下面 EBX=200f12c
00844BB8 |> 8B8B 30010000 |mov ecx, [ebx+130] ; 这里相当于mov ecx,[200f25c]
00844BBE |. 8B93 40010000 |mov edx, [ebx+140] ; 这里相当于mov edx,[200f26c]
00844BC4 |. 8BC5 |mov eax, ebp ; 上面EDX值为0
00844BC6 |. 8BB1 38100000 |mov esi, [ecx+1038] ; 下面那句给ESI赋值
00844BCC |. 03F2 |add esi, edx
00844BCE |. 3BEF |cmp ebp, edi
00844BD0 |. 75 04 |jnz short 00844BD6
00844BD2 |. 33C0 |xor eax, eax
00844BD4 |. EB 45 |jmp short 00844C1B
00844BD6 |> 8B93 8C000000 |mov edx, [ebx+8C]
00844BDC |. 8D8C2A 00E0FF>|lea ecx, [edx+ebp-2000]
00844BE3 |. 3BCF |cmp ecx, edi
00844BE5 |. 7E 04 |jle short 00844BEB
00844BE7 |. 8BC5 |mov eax, ebp
00844BE9 |. 2BC1 |sub eax, ecx
00844BEB |> 3BC7 |cmp eax, edi
00844BED |. 7F 04 |jg short 00844BF3
00844BEF |. 33C0 |xor eax, eax
00844BF1 |. EB 28 |jmp short 00844C1B
00844BF3 |> 8BBB 88000000 |mov edi, [ebx+88]
00844BF9 |. 8BC8 |mov ecx, eax
00844BFB |. 03FA |add edi, edx
00844BFD |. 8BD1 |mov edx, ecx
00844BFF |. C1E9 02 |shr ecx, 2 ;
00844C02 >|. F3:A5 |rep movs dword ptr es:[edi], dword >;
上面是第一次拷贝的地方,可是有点不同。
下面 EBX=200f12c
00844BB8 mov ecx, [ebx+130] ; 这里相当于mov ecx,[200f25c]
00844BBE mov edx, [ebx+140] ; 这里相当于mov edx,[200f26c]
00844BC4 mov eax, ebp ; 上面EDX值为0
00844BC6 mov esi, [ecx+1038] ; 下面那句给ESI赋值
00844BCC add esi, edx 其实esi就是[ecx+1038]中的值;
其中[ebx+130]=[200f25c],而200f25c所指的一个值是由GetQueuedCompletionStatus函数中KEY那个参数给出的,而每次这个KEY的值都不一样,这样,ESI的值也就不能确定,那我如何下断点,继续向上追呢?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课