int test2()
{
EZPDB pdb = { 0 };
PVOID OldValue = NULL;
Wow64DisableWow64FsRedirection(&OldValue);
// "f9fK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2K6k6r3I4Q4x3X3g2T1L8r3q4U0K9$3W2F1N6o6y4Q4x3X3g2U0L8$3#2Q4x3@1p5^5z5q4)9J5c8X3c8G2N6$3&6D9L8$3q4V1i4K6u0r3M7%4W2E0j5X3!0D9M7#2)9J5c8R3`.`."
DWORD dwError = EzInitPdb(&pdb, "C:\\Windows\\System32\\", "ntoskrnl.exe", TRUE, NULL, "D:\\symboldownload");
Wow64RevertWow64FsRedirection(&OldValue);
if (dwError != 0)
{
printf("init pdb error: %x\n", dwError);
return dwError;
}
dwError = EzLoadPdb(&pdb);
if (dwError != 0)
{
printf("load pdb error: %x\n", dwError);
return dwError;
}
DWORD rva = 0;
DWORD Offset = 0;
if (EzGetRva(&pdb, "KeServiceDescriptorTable", &rva))
{
printf("KeServiceDescriptorTable: %x\n", rva);
}
if (EzGetRva(&pdb, "PspTerminateThreadByPointer", &rva))
{
printf("PspTerminateThreadByPointer: %x\n", rva);
}
if (EzGetOffset(&pdb, "_EPROCESS", L"ActiveProcessLinks", &Offset))
{
printf("_EPROCESS.ActiveProcessLinks: %x\n", Offset);
}
if (EzGetOffset(&pdb, "_ETHREAD", L"ThreadListEntry", &Offset))
{
printf("_ETHREAD.ThreadListEntry: %x\n", Offset);
}
EzPdbUnload(&pdb);
return 0;
}