diff --git a/README.md b/README.md index 5736b59..1403e3a 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,11 @@ Keyboard Shortcuts Changelog --------- +Version 0.9.8 + +- Bugfixes for x64, IAT Search +- diStorm3 update from Jan 3rd 2015 + Version 0.9.7 - Fixed bug bad allocation https://forum.tuts4you.com/topic/36458-scylla-097b-crash-on-pep-50-unpackme/ diff --git a/Scylla/IATSearch.cpp b/Scylla/IATSearch.cpp index 973a3a1..8e2e73c 100644 --- a/Scylla/IATSearch.cpp +++ b/Scylla/IATSearch.cpp @@ -79,6 +79,9 @@ bool IATSearch::findIATAdvanced( DWORD_PTR startAddress, DWORD_PTR* addressIAT, filterIATPointersList(iatPointers); + if (iatPointers.size() == 0) + return false; + *addressIAT = *(iatPointers.begin()); *sizeIAT = (DWORD)(*(--iatPointers.end()) - *(iatPointers.begin()) + sizeof(DWORD_PTR)); diff --git a/Scylla/main.cpp b/Scylla/main.cpp index 59b1224..d629276 100644 --- a/Scylla/main.cpp +++ b/Scylla/main.cpp @@ -115,6 +115,7 @@ LONG WINAPI HandleUnknownException(struct _EXCEPTION_POINTERS *ExceptionInfo) WCHAR filepath[MAX_PATH] = {0}; WCHAR file[MAX_PATH] = {0}; WCHAR message[MAX_PATH + 200 + _countof(registerInfo)]; + WCHAR osInfo[100]; DWORD_PTR baseAddress = 0; DWORD_PTR address = (DWORD_PTR)ExceptionInfo->ExceptionRecord->ExceptionAddress; @@ -131,6 +132,8 @@ LONG WINAPI HandleUnknownException(struct _EXCEPTION_POINTERS *ExceptionInfo) } } + swprintf_s(osInfo, _countof(osInfo), TEXT("Exception! Please report it! OS: %X"), GetVersion()); + DWORD_PTR moduleBase = (DWORD_PTR)GetModuleHandleW(file); swprintf_s(message, _countof(message), TEXT("ExceptionCode %08X\r\nExceptionFlags %08X\r\nNumberParameters %08X\r\nExceptionAddress VA ")TEXT(PRINTF_DWORD_PTR_FULL_S)TEXT(" - Base ")TEXT(PRINTF_DWORD_PTR_FULL_S)TEXT("\r\nExceptionAddress module %s\r\n\r\n"), @@ -169,7 +172,7 @@ LONG WINAPI HandleUnknownException(struct _EXCEPTION_POINTERS *ExceptionInfo) wcscat_s(message, _countof(message), registerInfo); - MessageBox(0, message, TEXT("Exception! Please report it!"), MB_ICONERROR); + MessageBox(0, message, osInfo, MB_ICONERROR); - return EXCEPTION_EXECUTE_HANDLER; + return EXCEPTION_CONTINUE_SEARCH; }