Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text:F874CE92 PxIODispatch
- .text:F874CE92
- .text:F874CE92 var_8 = dword ptr -8
- .text:F874CE92 var_4 = dword ptr -4
- .text:F874CE92 arg_0 = dword ptr 8
- .text:F874CE92 LockState = _LOCK_STATE ptr 0Ch
- .text:F874CE92
- .text:F874CE92 mov edi, edi
- .text:F874CE94 push ebp
- .text:F874CE95 mov ebp, esp
- .text:F874CE97 push ecx
- .text:F874CE98 push ecx
- .text:F874CE99 and [ebp+var_4], 0
- .text:F874CE9D push ebx
- .text:F874CE9E mov ebx, dword ptr [ebp+LockState.LockState]
- .text:F874CEA1 mov eax, [ebx+60h]
- .text:F874CEA4 cmp byte ptr [eax], 0Eh
- .text:F874CEA7 mov ecx, [eax+8]
- .text:F874CEAA push esi
- .text:F874CEAB mov esi, [ebx+0Ch] // Отправляем данные из IOCTL
- .text:F874CEAE mov dword ptr [ebp+LockState.LockState], ecx
- .text:F874CEB1 mov ecx, [eax+4]
- ...
- .text:F874CEEE cmp eax, 8FFF23C8h // Проверяем IOCTL-код
- .text:F874CEF3 jz loc_F874D07C
- .text:F874CEF9 cmp eax, 8FFF23CCh // Две возможности
- .text:F874CEFE jz loc_F874D07C
- ...
- .text:F874D07C loc_F874D07C:
- .text:F874D07C mov edi, dword ptr [ebp+LockState.LockState] // EDI = 0x54.
- .text:F874D07F push 24h
- .text:F874D081 pop edx
- ...
- .text:F874D092 mov eax, [esi+14h] // Отправляем данные из IOCTL 0x14
- .text:F874D095 sub eax, 7030101h // Вычисляем индекс, используя полученное значение
- .text:F874D09A cmp eax, edx
- .text:F874D09C mov [ebp+var_4], edx
- .text:F874D09F jbe short loc_F874D0AD // Оно должно быть между 0 и 0x24 включительно!
- ...
- .text:F874D0AD loc_F874D0AD:
- .text:F874D0AD mov ecx, [esi+1Ch] // Отправляем данные из IOCTL 0x1c
- .text:F874D0B0 lea eax, [eax+eax*2]
- .text:F874D0B3 shl eax, 2 // Индекс * 12.
- .text:F874D0B6 cmp ecx, dword_F8752184[eax]
- .text:F874D0BC mov dword ptr [ebp+LockState.LockState], eax // Сохраняем индекс
- .text:F874D0BF jnb short loc_F874D0CD ; 0x54 - 0x20
- ...
- .text:F874D0CD loc_F874D0CD:
- .text:F874D0CD add edi, 0FFFFFFE0h // 0x54 - 0x20
- .text:F874D0D0 cmp ecx, edi // Значение в 0x1c должно быть меньше 0x34
- .text:F874D0D2 ja short loc_F874D0C1
- ...
- .text:F874D11B loc_F874D11B:
- .text:F874D11B mov eax, dword_F87528B4
- .text:F874D120 mov [esi+0Ch], eax
- .text:F874D123 mov [esi+8], ebx
- .text:F874D126 mov dl, byte_F87528C0
- .text:F874D12C mov ecx, edi
- .text:F874D12E call ds:__imp_@KfReleaseSpinLock@8
- .text:F874D134 mov eax, [ebx+60h]
- .text:F874D137 or byte ptr [eax+3], 1
- .text:F874D13B mov eax, dword ptr [ebp+LockState.LockState] // Сохраняем индекс
- .text:F874D13E push esi
- .text:F874D13F call off_F8752188[eax] // Вызываем функцию из индекса
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement