Статии - Изследователски програми - добавяне на функционалност към крайния програма

Нашата цел е да се добави функционалност към готов (компилиран) софтуер. В действителност, тази техника могат да добавят функционалност към всяка програма, можете да добавите и всичко, което се сетиш. Това описание не е била предназначена за създаване на всякаква полезна софтуерен продукт, чиято цел беше да се покаже възможността за добавяне на код технология в компилирана програма. Нашата цел - да се добави нова функция към стандартния Notepad. Добавих функция е избрана възможността да се оцени изрази. За да бъде по-интересно, възможността за компютри е заето от друга програма.

Така че, има:
  • Общо Calculator v2.02 - TCalc.exe, размер на 36,864 байта
  • Notepad - стандартен notepad.exe (Windows XP), размерът на 66,048 байта.

Добави функционалност един към друг.

Редът на нашите действия ще бъдат:
  • Разглобяването TCalc.exe
  • Добавянето на кода и данните в notepad.exe
  • Писане код с приложения код за взаимодействие

Разглобяването TCalc.exe

Най-лесният и най-ефективният начин за изтегляне на кода - да вземат желаната функция, поставете тестова програма и стартирайте компилацията. Очевидно е, че ние не се получи нищо, освен дясната списък съобщения за грешки, но този списък вече може да работи. Например, ако компилаторът пише, че там е функция, а след това просто трябва да го добавите към програмата за изпитване, и ако не разполагаме с достатъчно данни, да ги добавите. Трябва да се има в предвид, че когато се добави нов списък с кодове с грешки могат да се увеличат, но в крайна сметка ще бъдат добавени всички необходими код. Работа, разбира се, не е приятен, но с малко търпение, резултатът няма да отнеме дълго време.

Ще опиша няколко грешки, които прекарах време. На първо място, IDA Pro не се сприятеляват с признаването и постоянни промени в екипи за работа с дробни числа. Код по този начин:

Тя трябва да изглежда така:

Също така мога да препоръчвам 4015A0 извикване на функция лесни за почистване - това няма да промени нищо, тъй като е налице информация за отстраняването й.

Файлът също отговаря на няколко пъти на декларация за ключ, с площ от данни в края на процедурата,

Аз излязох от ситуацията, както следва:

Но това е възможно, например, да се заменят 8 сравненията и следвайте условни скокове.

В допълнение, ние не трябва да забравяме, за да се свържете с необходимите библиотеки

включва masm32 \ включват \ msvcrt.inc includelib masm32 \ ИЪ \ msvcrt.lib

За да назоват atof функции, _CIacos, _CIasin добавяте префикса "crt_".

Добавянето на кода и данните в notepad.exe

Следващата стъпка е да се отвори notepad.exe PE Инструменти и се опитват да се организира секциите в паметта, тъй като те се появяват в нашата тестова програма. Правим го чрез манипулиране областта на Виртуален Размер и Virtual Изместване всяка секция. Според стандартните секции PE във файла трябва да отидете един по един. Аз имам това:

Статии - Изследователски програми - добавяне на функционалност към крайния програма

Отидох, както следва: добавихте т.нар Фалшив секция в местата, където те получават паузи. Това е само част запълва с нули в паметта и не заема място на диска.

Статии - Изследователски програми - добавяне на функционалност към крайния програма

Статии - Изследователски програми - добавяне на функционалност към крайния програма

Писане код с приложения код за взаимодействие

Сега е време да се напише на връзка между една тетрадка с нашия източник добавена. Необходимо е да се намери едно празно място в новия файл (не е трудно) и да добавите кода в която ще се изразяването, и го предаде на функция за изчисляване и след това изход резултата обратно в бележника. Аз реших, че ще използвате пространството в края на участък от код, който ние поставена в програмата за изпитване, където в края на кода остава секции, които няма да бъдат използвани в тетрадка, то ние ще замени. Както се оказа, че това не е най-доброто решение, и свиване на кода в непотърсени пространство се оказа трудно: кода получи байт за байт, по-добре е да се избере едно празно място с разлика.

Ние променя интерфейса на нашия ноутбук. Отидох, както следва: просто добавяне на нов елемент в менюто "Формат". Можете да направите това всяка програма, която ви позволява да редактирате ресурси. Взех Restorator-ти. Нов елемент от менюто трябва да се дава уникален идентификатор в цялата меню. Имам предвид броя 34.

Статии - Изследователски програми - добавяне на функционалност към крайния програма

Статии - Изследователски програми - добавяне на функционалност към крайния програма

Статии - Изследователски програми - добавяне на функционалност към крайния програма

Това е всичко! Имаме работа файл. Notebook с подобрена функционалност.

Статии - Изследователски програми - добавяне на функционалност към крайния програма

Тук можете да изтеглите файлове към статията: изходния код, добавете кода и крайният резултат.