.text:000132C0 ; void __stdcall FakeNtSetValuekey(HANDLE Handle, PUNICODE_STRING ValueName, int a3, int a4, int a5, int a6)
.text:000132C0 FakeNtSetValuekey proc near ; DATA XREF: .data:000160A4o
.text:000132C0
.text:000132C0 var_44 = dword ptr -44h
.text:000132C0 ResultLength = dword ptr -40h
.text:000132C0 var_3C = dword ptr -3Ch
.text:000132C0 var_38 = dword ptr -38h
.text:000132C0 var_34 = dword ptr -34h
.text:000132C0 var_30 = dword ptr -30h
.text:000132C0 var_2C = dword ptr -2Ch
.text:000132C0 var_28 = dword ptr -28h
.text:000132C0 var_24 = dword ptr -24h
.text:000132C0 var_20 = dword ptr -20h
.text:000132C0 var_1C = dword ptr -1Ch
.text:000132C0 ms_exc = CPPEH_RECORD ptr -18h
.text:000132C0 Handle = dword ptr 8
.text:000132C0 ValueName = dword ptr 0Ch
.text:000132C0
.text:000132C0 push 34h
.text:000132C2 push offset stru_15D20
.text:000132C7 call __SEH_prolog
.text:000132CC mov [ebp+var_20], 0C0000022h
.text:000132D3 xor ebx, ebx
.text:000132D5 mov [ebp+var_28], ebx
.text:000132D8 mov [ebp+var_34], ebx
.text:000132DB mov [ebp+var_24], ebx
.text:000132DE mov [ebp+var_30], ebx
.text:000132E1 mov [ebp+var_38], ebx
.text:000132E4 mov [ebp+var_1C], ebx
.text:000132E7 mov [ebp+var_2C], ebx
.text:000132EA mov [ebp+ResultLength], ebx
.text:000132ED mov [ebp+var_3C], 5
.text:000132F4 push 4
.text:000132F6 call sub_1225C
.text:000132FB mov [ebp+var_44], eax
.text:000132FE call ds:KeGetCurrentIrql
.text:00013304 test al, al
.text:00013306 jnz loc_13487
.text:0001330C call ds:KeGetPreviousMode
.text:00013312 cmp al, bl
.text:00013314 jz loc_13487
.text:0001331A call PsGetCurrentThreadId
.text:0001331F mov [ebp+var_34], eax
.text:00013322 call PsGetCurrentProcessId
.text:00013327 cmp eax, dword_1A1BC
.text:0001332D jz loc_13487
.text:00013333 mov [ebp+ms_exc.disabled], ebx
.text:00013336 push 1 ; Alignment
.text:00013338 push 8 ; Length
.text:0001333A mov edi, [ebp+ValueName]
.text:0001333D push edi ; Address
.text:0001333E mov esi, ds:ProbeForRead
.text:00013344 call esi ; ProbeForRead
.text:00013346 push 2 ; Alignment
.text:00013348 push 2 ; Length
.text:0001334A push dword ptr [edi+4] ; Address
.text:0001334D call esi ; ProbeForRead
bin证明,是可以通过编译的.
原来我以为他要读Length,只是写错而已,结果他接下来一个memcpy....