Статии - Изследователски програми - добавяне на функционалност към крайния програма
Нашата цел е да се добави функционалност към готов (компилиран) софтуер. В действителност, тази техника могат да добавят функционалност към всяка програма, можете да добавите и всичко, което се сетиш. Това описание не е била предназначена за създаване на всякаква полезна софтуерен продукт, чиято цел беше да се покаже възможността за добавяне на код технология в компилирана програма. Нашата цел - да се добави нова функция към стандартния 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 с подобрена функционалност.

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