Привет, встала задача по извлечению строковых констант из исполняемых файлов, на пути встретились исходники плагина для PEID, который прекрасно делает то что мне нужно, но попытки переписать сие чудо на Delphi не увенчались успехом, возможно кто то лучше разбирается в переводе проектов с одного языка на другой? Если да, то сурсы ниже, буду очень благодарен.
STRING VIEWER SRC
Больше всего интересует правильный перевод данной части:
Код:
int FindStrings( HWND hDlg, HANDLE hFile, DWORD dwSize, char *cFileData )
{
// Read file contents into the allocated memory
DWORD dwBytesRead;
BOOL iResult = ReadFile( hFile, cFileData, dwSize, &dwBytesRead, 0 );
if ( !iResult ) return 4;
// Tell system we finished reading
CloseHandle( hFile );
// ...And here is the algo
long int iFileByte = dwSize;
char cAddress[9];
char *cpFileByte;
for ( ; iFileByte > 0; --iFileByte )
{ // Loop for each byte in the file
if ( cFileData[iFileByte] == '\0' && isalnum(cFileData[iFileByte-1]) )
{ // If a string was found...
cpFileByte = cFileData + iFileByte - 1;
while ( isalnum(cpFileByte[0]) || cpFileByte[0] == ' ' )
{
if ( cpFileByte[-1] == '\0' && isalnum(cpFileByte[-2]) ) cpFileByte[-1] = ' ';
cpFileByte -= 1;
}
++cpFileByte;
if ( isalnum(cpFileByte[0]) || cpFileByte[0] == ' ' ) ++cpFileByte;
if ( strlen(cpFileByte) >= iMinLength )
{
--cpFileByte;
sprintf( cAddress, "%08X", iFileByte );
AddString( hDlg, cAddress, cpFileByte );
}
iFileByte -= (int)strlen(cpFileByte);
}
}
return 0;
}