fixed hookstrlen seeing ascii char+unicode space as null terminator
This commit is contained in:
parent
b4c5b31482
commit
ef90382bbb
@ -43,7 +43,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}, 0), SW_SHOW);
|
}, 0), SW_SHOW);
|
||||||
|
|
||||||
std::thread([] { while (true) Sleep(vars.at(0)), lstrlenW(L"こんにちは"); }).detach();
|
std::thread([] { while (true) Sleep(vars.at(0)), lstrlenW(L"こんにちは\n (Hello)"); }).detach();
|
||||||
|
|
||||||
STARTUPINFOW info = { sizeof(info) };
|
STARTUPINFOW info = { sizeof(info) };
|
||||||
wchar_t commandLine[] = { L"Textractor -p\"Test.exe\"" };
|
wchar_t commandLine[] = { L"Textractor -p\"Test.exe\"" };
|
||||||
|
@ -327,11 +327,11 @@ int TextHook::GetLength(uintptr_t base, uintptr_t in)
|
|||||||
|
|
||||||
int TextHook::HookStrlen(BYTE* data)
|
int TextHook::HookStrlen(BYTE* data)
|
||||||
{
|
{
|
||||||
|
if (!hp.null_length) return hp.type & USING_UNICODE ? wcslen((wchar_t*)data) * 2 : strlen((char*)data);
|
||||||
BYTE* orig = data;
|
BYTE* orig = data;
|
||||||
int nulls = hp.null_length ? hp.null_length : hp.type & USING_UNICODE ? 2 : 1;
|
for (int nullsRemaining = hp.null_length; nullsRemaining > 0; ++data)
|
||||||
for (int nullsRemaining = nulls; nullsRemaining > 0; ++data)
|
|
||||||
if (*data == 0) nullsRemaining -= 1;
|
if (*data == 0) nullsRemaining -= 1;
|
||||||
else nullsRemaining = nulls;
|
else nullsRemaining = hp.null_length;
|
||||||
return data - orig;
|
return data - orig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user