Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открыть файл 
:(
    Опции темы
fdsgfds
Дата 18.9.2009, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.9.2009

Репутация: нет
Всего: нет



Раньше работал только с текстовыми файлами, вот столкнулся с проблемой. Нужно открыть ехе файл, найти нужную последовательность байт и заменить ее на свою. Как это сделать?

PM MAIL   Вверх
bsa
Дата 18.9.2009, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



std::fstream stream("/path/to/file.exe", std::fstream::read | std::fstream::write | std::fstream::binary);
или
FILE *f = fopen("/path/to/file.exe", "rwb");
или
int fd = open("/path/to/file.exe", O_RDWR | O_BINARY);
PM   Вверх
zim22
Дата 19.9.2009, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(bsa @  18.9.2009,  22:03 Найти цитируемый пост)
std::fstream stream("/path/to/file.exe", std::fstream::read | std::fstream::write | std::fstream::binary);

 smile 
Код

std::fstream stream("/path/to/file.exe", std::fstream::in | std::fstream::out | std::fstream::binary);

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

std::fstream stream("/path/to/file.exe", std::fstream::binary);




--------------------
PM MAIL   Вверх
GoldFinch
Дата 19.9.2009, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Код

....
{
    HANDLE hVictim=CreateFileA(victim,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,
        NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
    if(INVALID_HANDLE_VALUE!=hVictim)
    {
        HANDLE hVictimMap=CreateFileMapping(hVictim,NULL,PAGE_READWRITE|SEC_COMMIT,0,0,NULL);        
        if(0!=hVictimMap)
        {
            char* p=(char*)MapViewOfFile(hVictimMap,FILE_MAP_ALL_ACCESS,0,0,0);
            if(0!=p)
            {
                while(strcmp(p,"COMCTL32.dll"))
                    p++;
                memcpy(p,myname,sizeof(myname)+1);
                MessageBoxA(0,"Install done.","Done",0);
                return;
            }
        }
    }
    LPSTR pszMsgBuf;
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),NULL,(LPTSTR)&pszMsgBuf,0,NULL);
    MessageBox(0,pszMsgBuf,0,0);
}

эта функция открывает файл victim, ищет в нем строку "COMCTL32.dll" и меняет ее на myname


----------------
конечно хендлы надо закрывать, если их надо закрывать

Это сообщение отредактировал(а) GoldFinch - 19.9.2009, 11:00
PM MAIL ICQ   Вверх
fdsgfds
Дата 22.9.2009, 20:33 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.9.2009

Репутация: нет
Всего: нет



GoldFinch
Ваш пример работает с файлом в текстовом режиме, а мне нужно в бинарном(байты).

 smile , можно и на WinAPI. Спасибо.
PM MAIL   Вверх
GoldFinch
Дата 22.9.2009, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



fdsgfds, "работает с файлом в текстовом режиме"
спс, поржал =)

почитай про функции которые используются в этом сорце

Это сообщение отредактировал(а) GoldFinch - 22.9.2009, 20:53
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.