Как сказать, является ли двоичный файл скомпилированным GS или нет и без символов? - PullRequest
1 голос
/ 20 октября 2011

Я хочу иметь возможность определить, компилируется ли двоичный файл GS или нет?/ GS - проверка безопасности буфера с использованием куки.Я хочу, чтобы это можно было найти без символов и в общем виде.

BinScope выдает мне следующее при попытке проверить GS: E_PDB_NO_DEBUG_INFO (в PDB отсутствует информация о cv)

Есть идеи?

Ответы [ 2 ]

1 голос
/ 20 октября 2011

Если у вас нет PDB, нет хорошего способа сделать это, кроме проверки двоичного кода и просмотра функций. Я думал, что можно проверить каталог loadconfig, в котором записано местоположение файла cookie безопасности, но это бесполезно. Даже если программа скомпилирована с / GS-, связанные функции CRT по-прежнему используют cookie:

>dumpbin /loadconfig test.exe

Microsoft (R) COFF/PE Dumper Version 10.00.40219.01
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file test.exe

File Type: EXECUTABLE IMAGE

  Section contains the following load config:

            00000048 size
                   0 time date stamp
                0.00 Version
                   0 GlobalFlags Clear
                   0 GlobalFlags Set
                   0 Critical Section Default Timeout
                   0 Decommit Free Block Threshold
                   0 Decommit Total Free Threshold
            00000000 Lock Prefix Table
                   0 Maximum Allocation Size
                   0 Virtual Memory Threshold
                   0 Process Heap Flags
                   0 Process Affinity Mask
                   0 CSD Version
                0000 Reserved
            00000000 Edit list
   >        00408000 Security Cookie      <
            00407840 Safe Exception Handler Table
                   3 Safe Exception Handler Count

    Safe Exception Handler Table

          Address
          --------
          004025D0
          00404200
          00405160
0 голосов
/ 14 декабря 2011

, если ваш бинарный файл не имеет «конфигурации загрузки» (как, например, бинарные файлы для Windows Mobile) я думаю, что все еще довольно легко распознать шаблон:

многие функции будут выглядеть так:

... [function entry]
.text:01005188                 mov     eax, ___security_cookie
.text:0100518D                 mov     [ebp+var_1C], eax
... [function body]
.text:010057F6                 mov     ecx, [ebp+var_1C]
.text:010057F9                 call    sub_1007147
... [function exit]

тогда sub_1007147 выглядит так:

.text:01007147                 cmp     ecx, ___security_cookie
.text:0100714D                 jnz     short loc_1007158
.text:0100714F                 test    ecx, 0FFFF0000h
.text:01007155                 jnz     short loc_1007158
.text:01007157                 retn

ссылка на cookie, который хранится вместе с обратным:

.data:01009600 dword_1009600   dd 0FFFF44BFh
.data:01009604 ___security_cookie dd 0BB40h

__security_cookie будет иметь много ссылок, в то время как предыдущий обратный имеет только несколько ссылок.

в списке инициализации будет функция для инициализации куки с некоторым псевдослучайным значением.

поиск в двоичных файлах этих шаблонов должен дать вам представление об использовании / GS.

...