Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Реверсинг (https://forum.antichat.xyz/forumdisplay.php?f=94)
-   -   Чем выдирать строки из бинарников (https://forum.antichat.xyz/showthread.php?t=95974)

fire64 12.12.2008 00:16

Чем выдирать строки из бинарников
 
подскажите чем выдрать строки из бинарников ( dll, exe etc ) написанных на C++

я пользуюсь ida но она слишком громоздкая для таких целей.

уточняю речь идет о строках вшитых в бинарник, а не хранящихся в ресурсах

0verbreaK 12.12.2008 00:30

Что подразумевается под словом "выдирать"?

уточняю речь идет о строках вшитых в бинарник, а не хранящихся в ресурсах

Строки и хранятся в PE файле, в секции рессурсов

desTiny 12.12.2008 00:31

ну, к примеру, оля -> прав кнопка -> search for -> all referenced text strings
или W32dasm знаменитый - string references... вообще это все программки вроде умеют делать...

ртуть 12.12.2008 00:34

strings *.exe *.dll | grep aj00nigga

BlackSun 12.12.2008 00:38

OllyDbg как вариант

De-visible 12.12.2008 00:53

Цитата:

Сообщение от BlackSun
OllyDbg как вариант

OllyDbg согласен.

0x0c0de 12.12.2008 00:53

>> Строки и хранятся в PE файле, в секции рессурсов

да ну.то есть я не могу их положить в секцию кода?)

ии это самое, господа, не повторяйтесь. один раз сказали, что оля хорошо, думаю товарищ понял. 2 ТС кстати в иде это удобней всего делать, не знаю что уж там такого громоздкого. другое дело, что файл мб быть пакованным чем-либо/строки расшифровываются в процессе выполнения кодеса. тогда конечно непосредственно под отладчиком надо рипать (и в иде кстати тоже отладчик есть).

Hellsp@wn 12.12.2008 01:03

Цитата:

не знаю что уж там такого громоздкого
ну зачем же микроскопом гвозди забивать? (с)

для строк можешь и HDasm заюзать, очень шустрая штука и даже русские буковки ищет :)

procedure 12.12.2008 10:59

Если .net, то IL dasm || Reflector.

izlesa 12.12.2008 11:25

а можно написать что-то своё ^____--

Код:


#include <stdio.h>
#include <conio.h>
#include <string.h>

#define BUFFSIZE 100

int main(int argc, char *argv[])
{
        FILE *in_file;
        char buffer[BUFFSIZE];
        char word[BUFFSIZE];
        int counter = 0;
        int wordflag = 0;
        int offset = 0;

        if(argc != 2)
        {
                printf("USAGE : filter file");
                return 1;
        }

        in_file = fopen(argv[1], "rb");
        if(in_file == NULL)
        {
                printf("Error : unable to open file %s", argv[1]);
                getch();
                return 2;
        }
        else
                printf("File %s is open\n", argv[1]);

        while(fread(buffer, 1, 1, in_file) > 0)
        {
                if(buffer[0] >= ' ' && buffer[0] <= '~')
                {
                        if(wordflag != 1)
                                wordflag = 1;

                        word[counter] = buffer[0];
                        counter++;
                       
                }
                else
                {
                        if(counter != 0)
                        {
                                word[counter + 1] = '\0';
                                if(strlen(word) > 5)
                                        printf("%8.8X : %s\n", offset, word);
                        }
                        counter = 0;
                        wordflag = 0;
                }
                offset++;
        }

        getch();
        return 0;
}

но это лирика ... и к Юникоду не подходит ...


Время: 18:31