Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2014, 23:42   #1
Malriser
xor esp, esp
Форумчанин
 
Регистрация: 11.02.2014
Сообщений: 135
По умолчанию Программное изменение Entry Point программы

Всем привет,

Нужно программно изменить Entry Point ЧУЖОЙ программы.

Пишу малюсенькую программу для розыгрыша друга на 23 февраля. Вири не пишу, никому эта программа потом не попадет никуда. Да и в образовательных целях полезно

Как можно программно узнать точку входа программы и изменить ее? Желательно с примером, или хотя бы пните в нужную сторону. А то в гугле ни где не пишут где находится информация о первой исполняемой инструкции.





Вот уже что есть:

Код:
#include <windows.h>

void Infect(LPCTSTR FileName, PVOID value);
DWORD test();
int func_end();
int main();

void Infect(LPCTSTR FileName, PVOID value)
  {
    HANDLE hFile = CreateFile(FileName, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    SetFilePointer(hFile, 0, NULL, FILE_END);
    DWORD dwWrite = 0;
    PVOID addr = &func_end;
    addr = addr - value;
    WriteFile(hFile, value, addr, &dwWrite, NULL);
    CloseHandle(hFile);
  }

DWORD test()
  {
    LoadLibrary("kernel32.dll");
    LoadLibrary("user32.dll");
    char Works[] = "S PRAZDNIKOM LOH!";
    MessageBox(0, Works, Works, 0);
    __asm("nop");
    __asm("nop");
    __asm("nop");
    __asm("nop");
    __asm("nop");
    __asm("nop");
    
  }  
int func_end()
  {
    __asm("nop");
  }
      
int main()
  {
    Infect("test.exe", &test);
    return 0;
  }
Уже разобрался с записью произвольной функции в код, но вот с Entry Point всю голову сломал.

Последний раз редактировалось Malriser; 21.02.2014 в 23:47.
Malriser вне форума Ответить с цитированием
Старый 21.02.2014, 23:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Рискну предложить: http://www.programmersclub.ru/%D0%9A...D%D0%B8%D1%8F/
Цитата:
Следующее важное поле – AddressOfEntryPoint. Важность этого поля в том, что оно указывает на адрес, с которого начинается первая команда, – с нее процессор начнет выполнение. Дело в том, что на этапе компиляции значение этого поля не сразу известно. Ее формула достаточно проста. Сначала указывается адрес первой секции плюс ее размер. К ней плюсуются размеры остальных секций до секции, считаемой секцией кода. Например, в нашей жертве это выглядит так (см. Рис. 7):
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.02.2014, 00:19   #3
Malriser
xor esp, esp
Форумчанин
 
Регистрация: 11.02.2014
Сообщений: 135
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
о, спасибо. То что надо!
Malriser вне форума Ответить с цитированием
Старый 22.02.2014, 09:30   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Вири не пишете а функция Infect называется...
waleri вне форума Ответить с цитированием
Старый 22.02.2014, 10:27   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Вири не пишете а функция Infect называется...
Все Школоло в любом случае этот проходят )
Не помогут отговорки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.02.2014, 13:46   #6
Malriser
xor esp, esp
Форумчанин
 
Регистрация: 11.02.2014
Сообщений: 135
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Вири не пишете а функция Infect называется...
цитатко:

" Пишу малюсенькую программу для розыгрыша друга на 23 февраля. Вири не пишу, никому эта программа потом не попадет никуда. Да и в образовательных целях полезно"

Есть название лучше - напишите, переиминую.

Т.к мне кажется добавление кода, чтобы при запуске EXE файлов появлялось мое сообщение, а потом запускалась программа - вирем не является; ибо не содержит его функционала распространения
Malriser вне форума Ответить с цитированием
Старый 22.02.2014, 14:17   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ибо не содержит его функционала распространения
http://ru.wikipedia.org/wiki/%D0%9A%...80%D1%83%D1%81
Читать до полного просветления.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.02.2014, 20:22   #8
Malriser
xor esp, esp
Форумчанин
 
Регистрация: 11.02.2014
Сообщений: 135
По умолчанию

Первый же абзац


Компью́терный ви́рус — вид вредоносного программного обеспечения, способного создавать копии самого себя и внедряться в код других программ, системные области памяти, загрузочные секторы, а также распространять свои копии по разнообразным каналам связи с целью нарушения работы программно-аппаратных комплексов, удаления файлов, приведения в негодность структур размещения данных, блокирования работы пользователей или же приведение в негодность аппаратных комплексов компьютера.




Где у меня хоть один из перечисленных функционалов?

"внедряться в код других программ"

Вас это накинуло на мысль? Ну так у меня не сама программа внедряется в софт, а маленькая функция по выводу сообщения....


Последний раз редактировалось Malriser; 22.02.2014 в 20:25.
Malriser вне форума Ответить с цитированием
Старый 22.02.2014, 23:14   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

А для достижения желаемого вами функционала вообще не надо встраивать ни маленькую ни большую программки.

Насчет процитированного ранее - раз вам надо менять entry point, значит встраивание имеет место быть а уж там будем мы встраивать все или одну строчку, это без разницы. Это, конечно, строго мое IMHO. А имя функции infect для меня не оставляет никаких сомнений.
waleri вне форума Ответить с цитированием
Старый 22.02.2014, 23:18   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ну так у меня не сама программа внедряется в софт, а маленькая функция по выводу сообщения....
Мдя... Мне тебя не понять. как говорится "Это не я воровал - это руки во всем виноваты." Или "Я провел с Девушкой ночь - она забеременела. Так это не мой ребенок, а моей маленькой штучки"
I'm learning to live...

Последний раз редактировалось Stilet; 22.02.2014 в 23:21.
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программное изменение размера диалоговых окон Сергей Горбач Общие вопросы Delphi 3 02.09.2012 12:59
программное изменение текстаFast report Nenado БД в Delphi 0 25.04.2012 13:41
VC++ "LNK1561:entry point must be defined" Lasur Помощь студентам 0 08.12.2011 02:59
Программное изменение шрифта _-Re@l-_ Общие вопросы Delphi 5 15.05.2010 18:13
Программное изменение параметров радиоэлементов. Rapid Компьютерное железо 1 26.01.2010 09:57