Как я могу обнаружить файл.exe, созданный vb6, и распознать разные файлы vb6 друг от друга?

Я пишу программу, чтобы определить, какой файл.exe генерируется программой Visual Basic6. Я обнаружил, что в "точке входа" каждого vb-файла есть адрес со смещением 1 от "точки входа", который указывает на местоположение, содержащее строку: "vb5!", Это определенная подпись? Могу ли я быть уверен, что в каждом vb-файле эта строка существует? Затем я хочу найти определенный адрес начала кода, чтобы я мог распознать каждый VB-файл из другого VB-файла.

1 ответ

Не совсем уверен, что вы пытаетесь достичь, но каждый VB6 EXE, DLL или OCX будет содержать импорт в MSVBVM60.dll. Если он содержит это, вы можете быть уверены, что это VB6 exe.

Об этом

Затем я хочу найти определенный адрес начала кода, чтобы я мог распознать каждый VB-файл из другого VB-файла.

VB6 не встраивает метаданные того же типа в исполняемый файл, что и.net, поэтому будет невозможно извлечь какой-либо "VB-код" из исполняемого файла. В зависимости от того, как он был скомпилирован, вы МОЖЕТЕ иметь возможность получать имена функций и тому подобное, но это только в том случае, если PDB (программная база данных) была встроена в exe, а не скомпилирована в отдельный файл PDB.

Хуже того, существует множество инструментов для сжатия exe-файлов (любых exe-файлов), и если это будет сделано, вы почти не сможете определить, откуда пришел exe-файл, по крайней мере, не просто просмотрев содержимое EXE-файл.

Другие вопросы по тегам