Есть ли алгоритм, чтобы судить строку имеет смысл - PullRequest
2 голосов
/ 19 апреля 2011

Проблема в том, что я должен сканировать исполняемый файл и найти строки для анализа, используйте strings.exe от sysinternals. Однако, Как отличить значащие строки и тривиальные строки, Есть ли какой-либо алгоритм или мысль, чтобы решить эту проблему (статистика? Вероятность?).

например: извлечь строки из strings.exe (часть всех строк)

S`A
waA
RmA
>rA
5xA
GetModuleHandleA
LocalFree
LoadLibraryA
LocalAlloc
GetCommandLineW

Исходя из эмпирического суждения, последние пять строк имеют смысл, а первые пять строк - нет. Так что, как решить эту проблему, не используйте словарь, как черный список или белый список.

Ответы [ 3 ]

5 голосов
/ 19 апреля 2011

Простой алгоритм: разбить строки-кандидаты на слова в начале заглавными буквами / пробелами / цифрами, а затем сравнить слова со словарем.

2 голосов
/ 19 апреля 2011

используйте N-грамм N-Gram скажет вам, какова вероятность того, что слово имеет значение. Прочитайте о цепях Маркова и n-граммах (http://en.wikipedia.org/wiki/N-gram). Обрабатывайте каждую букву как состояние и берите набор значащих и бессмысленных слов. Например:

Бессмысленные слова B^^@, #AT

Обычные слова: BOOK, CAT

создать две языковые модели для них (триграмма будет лучшей) http://en.wikipedia.org/wiki/Language_model

и теперь вы можете проверить, какое слово модели, вероятно, было сгенерировано, и взять языковую модель с вероятностью, большей, чем в другой. это удовлетворит ваше состояние

помните, что вам нужен набор бессмысленных слов (я думаю, что около 1000 будет в порядке) и не бессмысленно

0 голосов
/ 19 апреля 2011

Есть ли определенное правило для значимых слов? Или это просто слова из словаря? Если это слова из словаря, то вы можете использовать trie's

вы можете искать слово, пока следующий символ не будет написан заглавными буквами. если оно написано с заглавной буквы, то начните с начала дерева и найдите следующее слово.

Только мои 2 цента.

  • Ивар
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...