fix for ExportIATEx

This commit is contained in:
cypherpunk 2014-01-12 23:01:38 +01:00
parent d0a5b10884
commit 86abf46dbe
5 changed files with 22 additions and 20 deletions

View File

@ -754,8 +754,8 @@ __declspec(dllexport) void* TITCALL ImporterGetLastAddedDLLName();
__declspec(dllexport) void TITCALL ImporterMoveIAT(); __declspec(dllexport) void TITCALL ImporterMoveIAT();
__declspec(dllexport) bool TITCALL ImporterExportIAT(ULONG_PTR StorePlace, ULONG_PTR FileMapVA); __declspec(dllexport) bool TITCALL ImporterExportIAT(ULONG_PTR StorePlace, ULONG_PTR FileMapVA);
__declspec(dllexport) long TITCALL ImporterEstimatedSize(); __declspec(dllexport) long TITCALL ImporterEstimatedSize();
__declspec(dllexport) bool TITCALL ImporterExportIATEx(char* szExportFileName, char* szSectionName); __declspec(dllexport) bool TITCALL ImporterExportIATEx(char* szDumpFileName, char* szExportFileName, char* szSectionName);
__declspec(dllexport) bool TITCALL ImporterExportIATExW(wchar_t* szExportFileName, char* szSectionName); __declspec(dllexport) bool TITCALL ImporterExportIATExW(wchar_t* szDumpFileName, wchar_t* szExportFileName, char* szSectionName);
__declspec(dllexport) long long TITCALL ImporterFindAPIWriteLocation(char* szAPIName); __declspec(dllexport) long long TITCALL ImporterFindAPIWriteLocation(char* szAPIName);
__declspec(dllexport) long long TITCALL ImporterFindOrdinalAPIWriteLocation(ULONG_PTR OrdinalNumber); __declspec(dllexport) long long TITCALL ImporterFindOrdinalAPIWriteLocation(ULONG_PTR OrdinalNumber);
__declspec(dllexport) long long TITCALL ImporterFindAPIByWriteLocation(ULONG_PTR APIWriteLocation); __declspec(dllexport) long long TITCALL ImporterFindAPIByWriteLocation(ULONG_PTR APIWriteLocation);

View File

@ -753,8 +753,8 @@ __declspec(dllimport) void* TITCALL ImporterGetLastAddedDLLName();
__declspec(dllimport) void TITCALL ImporterMoveIAT(); __declspec(dllimport) void TITCALL ImporterMoveIAT();
__declspec(dllimport) bool TITCALL ImporterExportIAT(ULONG_PTR StorePlace, ULONG_PTR FileMapVA); __declspec(dllimport) bool TITCALL ImporterExportIAT(ULONG_PTR StorePlace, ULONG_PTR FileMapVA);
__declspec(dllimport) long TITCALL ImporterEstimatedSize(); __declspec(dllimport) long TITCALL ImporterEstimatedSize();
__declspec(dllimport) bool TITCALL ImporterExportIATEx(char* szExportFileName, char* szSectionName); __declspec(dllimport) bool TITCALL ImporterExportIATEx(char* szDumpFileName, char* szExportFileName, char* szSectionName);
__declspec(dllimport) bool TITCALL ImporterExportIATExW(wchar_t* szExportFileName, char* szSectionName); __declspec(dllimport) bool TITCALL ImporterExportIATExW(wchar_t* szDumpFileName, wchar_t* szExportFileName, char* szSectionName);
__declspec(dllimport) long long TITCALL ImporterFindAPIWriteLocation(char* szAPIName); __declspec(dllimport) long long TITCALL ImporterFindAPIWriteLocation(char* szAPIName);
__declspec(dllimport) long long TITCALL ImporterFindOrdinalAPIWriteLocation(ULONG_PTR OrdinalNumber); __declspec(dllimport) long long TITCALL ImporterFindOrdinalAPIWriteLocation(ULONG_PTR OrdinalNumber);
__declspec(dllimport) long long TITCALL ImporterFindAPIByWriteLocation(ULONG_PTR APIWriteLocation); __declspec(dllimport) long long TITCALL ImporterFindAPIByWriteLocation(ULONG_PTR APIWriteLocation);

View File

@ -1815,9 +1815,9 @@ class ImporterA
{ {
public: public:
static bool ExportIATEx(const char* szExportFileName, const char* szSectionName) static bool ExportIATEx(const char* szDumpFileName, const char* szExportFileName, const char* szSectionName)
{ {
return UE::ImporterExportIATEx((char*)szExportFileName, (char*)szSectionName); return UE::ImporterExportIATEx((char*)szDumpFileName, (char*)szExportFileName, (char*)szSectionName);
} }
static bool CopyOriginalIAT(const char* szOriginalFile, const char* szDumpFile) static bool CopyOriginalIAT(const char* szOriginalFile, const char* szDumpFile)
{ {
@ -1849,9 +1849,9 @@ class ImporterW
{ {
public: public:
static bool ExportIATEx(const wchar_t* szExportFileName, const char* szSectionName) static bool ExportIATEx(const wchar_t* szDumpFileName, const wchar_t* szExportFileName, const char* szSectionName)
{ {
return UE::ImporterExportIATExW((wchar_t*)szExportFileName, (char*)szSectionName); return UE::ImporterExportIATExW((wchar_t*)szDumpFileName, (wchar_t*)szExportFileName, (char*)szSectionName);
} }
static bool CopyOriginalIAT(const wchar_t* szOriginalFile, const wchar_t* szDumpFile) static bool CopyOriginalIAT(const wchar_t* szOriginalFile, const wchar_t* szDumpFile)
{ {

View File

@ -18728,24 +18728,26 @@ __declspec(dllexport) long TITCALL ImporterEstimatedSize()
} }
return(EstimatedSize); return(EstimatedSize);
} }
__declspec(dllexport) bool TITCALL ImporterExportIATEx(char* szExportFileName, char* szSectionName) __declspec(dllexport) bool TITCALL ImporterExportIATEx(char* szDumpFileName, char* szExportFileName, char* szSectionName)
{ {
wchar_t uniExportFileName[MAX_PATH] = {}; wchar_t uniExportFileName[MAX_PATH] = {};
wchar_t uniDumpFileName[MAX_PATH] = {};
if(szExportFileName != NULL) if(szExportFileName != NULL && szDumpFileName != NULL)
{ {
MultiByteToWideChar(CP_ACP, NULL, szExportFileName, lstrlenA(szExportFileName)+1, uniExportFileName, sizeof(uniExportFileName)/(sizeof(uniExportFileName[0]))); MultiByteToWideChar(CP_ACP, NULL, szExportFileName, lstrlenA(szExportFileName)+1, uniExportFileName, sizeof(uniExportFileName)/(sizeof(uniExportFileName[0])));
return(ImporterExportIATExW(uniExportFileName, szSectionName)); MultiByteToWideChar(CP_ACP, NULL, szDumpFileName, lstrlenA(szDumpFileName)+1, uniDumpFileName, sizeof(uniDumpFileName)/(sizeof(uniDumpFileName[0])));
return(ImporterExportIATExW(uniDumpFileName, uniExportFileName, szSectionName));
} }
else else
{ {
return(false); return(false);
} }
} }
__declspec(dllexport) bool TITCALL ImporterExportIATExW(wchar_t* szExportFileName, char* szSectionName) __declspec(dllexport) bool TITCALL ImporterExportIATExW(wchar_t* szDumpFileName, wchar_t* szExportFileName, char* szSectionName)
{ {
if(scylla_fixDump(szExportFileName, L".scy") != SCY_ERROR_SUCCESS) { if(scylla_fixDump(szDumpFileName, szExportFileName) != SCY_ERROR_SUCCESS) {
return false; return false;
} }
@ -19379,20 +19381,20 @@ __declspec(dllexport) bool TITCALL ImporterLoadImportTableW(wchar_t* szFileName)
} }
__declspec(dllexport) bool TITCALL ImporterMoveOriginalIAT(char* szOriginalFile, char* szDumpFile, char* szSectionName) __declspec(dllexport) bool TITCALL ImporterMoveOriginalIAT(char* szOriginalFile, char* szDumpFile, char* szSectionName)
{ {
/*
if(ImporterLoadImportTable(szOriginalFile)) if(ImporterLoadImportTable(szOriginalFile))
{ {
return(ImporterExportIATEx(szDumpFile, szSectionName)); return(ImporterExportIATEx(szDumpFile, szSectionName));
} }*/
return(false); return(false);
} }
__declspec(dllexport) bool TITCALL ImporterMoveOriginalIATW(wchar_t* szOriginalFile, wchar_t* szDumpFile, char* szSectionName) __declspec(dllexport) bool TITCALL ImporterMoveOriginalIATW(wchar_t* szOriginalFile, wchar_t* szDumpFile, char* szSectionName)
{ {
/*
if(ImporterLoadImportTableW(szOriginalFile)) if(ImporterLoadImportTableW(szOriginalFile))
{ {
return(ImporterExportIATExW(szDumpFile, szSectionName)); return(ImporterExportIATExW(szDumpFile, szSectionName));
} }*/
return(false); return(false);
} }
__declspec(dllexport) void TITCALL ImporterAutoSearchIAT(DWORD ProcessId, char* szFileName, ULONG_PTR SearchStart, LPVOID pIATStart, LPVOID pIATSize) __declspec(dllexport) void TITCALL ImporterAutoSearchIAT(DWORD ProcessId, char* szFileName, ULONG_PTR SearchStart, LPVOID pIATStart, LPVOID pIATSize)
@ -19554,7 +19556,7 @@ __declspec(dllexport) long TITCALL ImporterAutoFixIATExW(DWORD ProcessId, wchar_
*Extension = 0; *Extension = 0;
lstrcpy(IatFixFileName, DumpFileName); lstrcpy(IatFixFileName, DumpFileName);
*Extension = Bak; *Extension = Bak;
lstrcat(IatFixFileName, L"_"); lstrcat(IatFixFileName, L"_scy");
lstrcat(IatFixFileName, Extension); lstrcat(IatFixFileName, Extension);
lstrcat(DumpFileName, Extension); lstrcat(DumpFileName, Extension);

View File

@ -253,8 +253,8 @@ __declspec(dllexport) void* TITCALL ImporterGetLastAddedDLLName();
__declspec(dllexport) void TITCALL ImporterMoveIAT(); __declspec(dllexport) void TITCALL ImporterMoveIAT();
__declspec(dllexport) bool TITCALL ImporterExportIAT(ULONG_PTR StorePlace, ULONG_PTR FileMapVA); __declspec(dllexport) bool TITCALL ImporterExportIAT(ULONG_PTR StorePlace, ULONG_PTR FileMapVA);
__declspec(dllexport) long TITCALL ImporterEstimatedSize(); __declspec(dllexport) long TITCALL ImporterEstimatedSize();
__declspec(dllexport) bool TITCALL ImporterExportIATEx(char* szExportFileName, char* szSectionName); __declspec(dllexport) bool TITCALL ImporterExportIATEx(char* szDumpFileName, char* szExportFileName, char* szSectionName);
__declspec(dllexport) bool TITCALL ImporterExportIATExW(wchar_t* szExportFileName, char* szSectionName); __declspec(dllexport) bool TITCALL ImporterExportIATExW(wchar_t* szDumpFileName, wchar_t* szExportFileName, char* szSectionName);
__declspec(dllexport) long long TITCALL ImporterFindAPIWriteLocation(char* szAPIName); __declspec(dllexport) long long TITCALL ImporterFindAPIWriteLocation(char* szAPIName);
__declspec(dllexport) long long TITCALL ImporterFindOrdinalAPIWriteLocation(ULONG_PTR OrdinalNumber); __declspec(dllexport) long long TITCALL ImporterFindOrdinalAPIWriteLocation(ULONG_PTR OrdinalNumber);
__declspec(dllexport) long long TITCALL ImporterFindAPIByWriteLocation(ULONG_PTR APIWriteLocation); __declspec(dllexport) long long TITCALL ImporterFindAPIByWriteLocation(ULONG_PTR APIWriteLocation);