Змінити код програми exe. Вихідний код розкрити неможливо якщо для цього постаралися забезпечити безпеку (особливо якщо це фірмова річ)

Жарознижуючі засоби для дітей призначаються педіатром. Але бувають ситуації невідкладної допомоги за лихоманки, коли дитині потрібно дати ліки негайно. Тоді батьки беруть на себе відповідальність і застосовують жарознижувальні препарати. Що можна давати дітям грудного віку? Чим можна збити температуру у старших дітей? Які ліки найбезпечніші?

Вихідний код розкрити неможливо, якщо для цього постаралися забезпечити безпеку (особливо якщо це фірмова річ).

Але є засоби повністю або частково розкрити код.

  • IDA Pro - найкращий з безкоштовних зломщиків, деякі макроси, можливо, дозволяють перетворити код назад. Але не завжди. Особливо добре розкриваються Borland-продукти.
  • Hiew.Exe безкоштовна утиліта, дуже маленька, дозволяє правити код мовою асемблера. Можна правити текстові та цілі константи. Можна нею навіть зробити "переклад" програми іншою мовою, затерти ім'я фірми тощо.
  • Якщо є PDB-файл, або підшита debug-info до файлу, то код можна отримати в середовищі розробки (якщо debug-info повна) рідко можна використовувати. Вихідний код отримати не можна, але можна отримати "номера рядків і імена вихідних кодів", а також імена/значення всіх констант, локальних змінних, уникнути "роздробленості функцій" і отримати класи з начинкою класу (майже всі структури крім тексту програми) значно спростить розуміння роботи програми. Для деяких бібліотек (dll) файли pdb можна завантажити окремо. Навряд чи фірма, що себе поважає, допустить витік pdb свого продукту, що стоїть.
  • Debug info, існує DebugInfo-інформація, вбудована в exe. Якщо є така інформація, і відповідна утиліта (Наприклад, Borland Delphi зібраний, і він є в наявності), то можна зробити аналогічне попередньому пункту. Але навряд чи фірма, що себе поважає, припуститься такої "дурної" помилки (аналогічно pdb).
  • Якщо файл написаний на його можна майже повністю переглянути в кодах за допомогою disSharp (такі програми "підключають" в таблиці імпорту лише mscorlib і все). DisSharp погано дизассемблирует деякі частини програми, але можливо його платна версія або платна версія подібних утиліт розкриває код краще.
  • Якщо файл написаний на FoхPro, clipper та інших подібних байт-кодових мовах - він розкривається спец-утилітами (Refox наприклад).
  • Утиліта exescope.exe ResourceHacker.exe та її-подібні утиліти дозволяють дивитися шапку, підключені бібліотеки (за ними можна зрозумітина чому писана програма) та редагувати ресурси програми (ресурс-форми в т.ч. delphi, іконки, картинки, таблиці ресурсо-рядків).
  • Якщо відомо ніж створений код - думаю є спеціальні утиліти, здатні його розкрити (вони платні і малодоступні).

Знову ж таки, це за умови, що немає паковника коду (тоді потрібно спочатку застосувати депакувальник), шифрувальника/самомодифікуючого коду. Якщо не розбитий обфускатор так не розплутати. Чим більший код – тим складніше розібратися.

P.S. Особисто моя думка - розкривається-зламується все, але на це потрібно витратити багато часу. Можливо рік і більше (залежить від досвіду та інструментів, у вільному доступі хороших інструментів немає).


Іноді помилки CODE.EXE та інші системні помилки EXE можуть бути пов'язані з проблемами у реєстрі Windows. Декілька програм може використовувати файл CODE.EXE, але коли ці програми видалені або змінені, іноді залишаються "осиротілі" (помилкові) записи реєстру EXE.

В принципі, це означає, що в той час, як фактичний шлях до файлу міг бути змінений, його неправильне колишнє розташування досі записано в реєстрі Windows. Коли Windows намагається знайти файл за цим неправильним посиланням (на розташування файлів на вашому комп'ютері), може виникнути помилка CODE.EXE. Крім того, зараження шкідливим програмним забезпеченням могло пошкодити записи реєстру, пов'язані з Game Cracker. Таким чином, ці пошкоджені записи реєстру EXE необхідно виправити, щоб вирішити проблему в корені.

Редагування реєстру Windows вручну з метою видалення ключів CODE.EXE, що містять помилки, не рекомендується, якщо ви не є спеціалістом з обслуговування ПК. Помилки, допущені під час редагування реєстру, можуть призвести до непрацездатності вашого ПК і завдати непоправної шкоди вашій операційній системі. Насправді, навіть одна кома, поставлена ​​не там, може перешкодити завантаженню комп'ютера!

У зв'язку з подібним ризиком ми рекомендуємо використовувати надійні інструменти очищення реєстру, такі як %%product%% (розроблений Microsoft Gold Certified Partner), щоб просканувати та виправити будь-які проблеми, пов'язані з CODE.EXE. Використовуючи очищення реєстру, ви зможете автоматизувати процес пошуку пошкоджених записів реєстру, посилань на відсутні файли (наприклад, викликають помилку CODE.EXE) та неробочих посилань усередині реєстру. Перед кожним скануванням автоматично створюється резервна копія, яка дозволяє скасувати будь-які зміни одним кліком та захищає вас від можливого пошкодження комп'ютера. Найприємніше, що усунення помилок реєстру може різко підвищити швидкість та продуктивність системи.


Попередження:Якщо ви не є досвідченим користувачем ПК, ми НЕ рекомендуємо редагувати реєстр Windows вручну. Некоректне використання Редактора реєстру може призвести до серйозних проблем і вимагати повторної інсталяції Windows. Ми не гарантуємо, що проблеми, які є результатом неправильного використання Редактора реєстру, можуть бути усунені. Ви користуєтеся Редактором реєстру на свій страх та ризик.

Перед тим, як відновлювати реєстр Windows вручну, необхідно створити резервну копію, експортувавши частину реєстру, пов'язану з CODE.EXE (наприклад, Game Cracker):

  1. Натисніть на кнопку Почати.
  2. Введіть " command" в рядку пошуку... ПОКИ НЕ НАТИСНІТЬ ENTER!
  3. Утримуючи клавіші CTRL-Shiftна клавіатурі, натисніть ENTER.
  4. Буде відображено діалогове вікно для доступу.
  5. Натисніть Так.
  6. Чорний ящик відкривається миготливим курсором.
  7. Введіть " regedit" і натисніть ENTER.
  8. У Редакторі реєстру виберіть ключ, пов'язаний із CODE.EXE (наприклад, Game Cracker), для якого потрібно створити резервну копію.
  9. У меню ФайлВиберіть Експорт.
  10. В списку Зберегти уВиберіть папку, в яку Ви бажаєте зберегти резервну копію ключа Game Cracker.
  11. У полі ім'я файлувведіть назву файлу резервної копії, наприклад, "Game Cracker резервна копія".
  12. Переконайтеся, що у полі Діапазон експортувибрано значення Вибрана гілка.
  13. Натисніть Зберегти.
  14. Файл буде збережено з розширенням.reg.
  15. Тепер у вас є резервна копія запису реєстру, пов'язаного з CODE.EXE.

Наступні кроки при ручному редагуванні реєстру не будуть описані в даній статті, оскільки з ймовірністю можуть призвести до пошкодження вашої системи. Якщо ви хочете отримати більше інформації про редагування реєстру вручну, будь ласка, перегляньте посилання нижче.

*** ВСЕ НАПИСАНЕ ВИКОРИСТОВУВАТИ ТІЛЬКИ В ОСВІТНИХ ЦІЛЯХ! ***

-Інструментарій-
OLLYDBG
Додаток, в який будемо вставляти свій код.
Це буде NOTEPAD.EXE.
Бажано зробити копію файлу.
Це все

-початок-
Наша мета - вклеїти свій код у Notepad.EXE.
Ми вклеїмо простий MessageBoxна запуск Блокнота.
Запустимо Блокнот, і переконаємось, що він запускається нормально.

Якщо ти впевнений, що це оригінальний Notepad.exe, відкрий його в Olly.
З'явиться таке вікно:

Для того, щоб вставляти свій код, нам потрібне місце для цього в програмному коді.
У ехе-файлах буває багато CodeCaves. Це байти ( DB 00).
Тобі потрібно просто прокрутити код програми трохи нижче початку, і ти побачиш CodeCave:


Червоним прямокутником виділено шматок з CodeCave"Ами?
Сюди ти можеш вставити будь-який код, і твоя програма не вилетітиме.
Якщо ти знаєш API-функцію для виклику MessageBoxпросто пропусти ці рядки.

***** ПОЧАТОК ЦИТАТИ З КЕРІВНИЦТВА ПРОГРАМІСТА WIN32

MessageBox функція створюється, відображається, і працює на message box.
Message box contains an application-defined message and title,
plus any combination of predefined icons and push buttons.

Int MessageBox(
HWND hWnd, // handle of owner window
LPCTSTR lpText, // address of text in message box
LPCTSTR lpCaption, // address of title of message box
UINT uType // style of message box
);

***** КІНЕЦЬ ЦИТАТИ З КЕРІВНИЦТВА ПРОГРАМІСТА WIN32

Натисніть, щоб розкрити...

Це все, що потрібно знати про MessageBox.
Давайте ж зробимо щось за допомогою CodeCaves.
Для того, щоб використовувати MessageBox, нам потрібно створити текст, який ми будемо виводити в
MessageBox. На наступному малюнку я виділив пару рядків з CodeCavesі
показав меню BinaryEditтобі (воно нам знадобиться).


Якщо ти натиснув Binary=>Editабо (CTRL+E) ти побачиш наступне вікно.
Просто заповни верхнє поле так само, як і я.
Натисніть OK, і ти побачиш модифікований код (виділений червоним):
Натисніть тепер CTRL+A, щоб переаналізувати код.
OK! Тепер, якщо ти хочеш зробити заголовок повідомлення іншим, продублюй цей рядок
(це як другий параметр виклику процедури).

-Трохи асемблера-

Настав час і для ASMа
Ось добрий приклад!

PUSH 0; BUTTONS =<ТОЛЬКО КНОПКА OK>
PUSH 1008751; CAPTION = НАШ АДРЕСА "INJECTED NOTEPAD"
PUSH 1008751; MESSAGE = ТО САМЕ.
PUSH 0; ICON =<БЕЗ ИКОНКИ>
CALL MessageBoxA; Виклик MessageBoxA із зазначеними параметрами.

Натисніть, щоб розкрити...

Ці рядки, введені в Оллівиглядатимуть так:

Бачиш стрілку? ЦЕ ДУЖЕ ВАЖЛИВО!
Адже якщо ми просто запустимо програму, нічого не станеться. Чому?
Тому що наша маленька процедура ще ніде не викликається!
Потрібно виписати адресу початку, тобто. адреса " PUSH 0", тому що нам потрібно зробити стрибок
на нашу процедуру та повернутися назад
Чудово. Тепер повернися на початок програми ( кнопка Сна панелі інструментів Оллі, або як у малюнку).

Тепер ми на першому рядку, який буде виконуватися.
Ви ще пам'ятаєте, що наша мета - вставка свого коду?
Тоді ми продовжимо!
Виділіть пару рядків з початку та скопіюйте їх у буфер обміну.


Вставте їх у будь-який текстовий реактор - вони нам знадобляться.
Знову повернися на початок програми.
(На картинці вище це PUSH 70).
Подвійне клацання по цьому рядку відобразить наступне вікно.
В нього потрібно ввести JMP<адрес PUSH 0, который мы записывали ранее> "
Натисніть кнопку Assemble та код програми знову зміниться, тобто. зміни виділяються червоним.

Подивися на червоний прямокутник! На цю адресу нам потрібно перестрибнути після завершення нашого коду.
Але якщо ми перестрибнемо сюди після ін'єкції, програма виконається начебто без неї.
Тому є ще одна річ, яку потрібно зробити!
Порівняй новий початок програми зі старим, що ми копіювали в текстовий редактор.
Ти побачиш, що два рядки переписалися! Але нам потрібні вони для нормальної роботи
програми без помилок. Знайди рядки, що перезаписувалися.
У моєму випадку це був такий код:

PUSH 70
PUSH NOTEPAD.01001898

Натисніть, щоб розкрити...

Клацніть по першому рядку коду (наш JMP) та натисні ENTER.
Ти потрапиш на вставлений код дзвінка MessageBox!
Після CALL MessageBoxAнам потрібно буде вставити ці два рядки І стрибнути назад!


ОТ І ВСЕ!
(Перевірити, чи правильно працює стрибок легко - Натиснути на ньому ENTER!)
Щоб зберегти наш "модифікований" Блокнот, виконай дії як на малюнку:
Потім натисніть Copy All. У вікні потрібно натиснути правою кнопкою миші,
вибрати пункт меню Save Fileта зберегти під новим ім'ям. Запустіть файл:

Додану функцію потрібно викликати не безпосередньо, як це написано у статті, а трохи інакше.

Для початку, після додавання процедури імпорту, потрібно дізнатися її FT (FirstThunk "IAT"). Вона відображається тут:

Запам'ятайте його!(назву його TrueAdress)​


Тепер переходимо до того місця, де ми писатимемо свій код ( Code Caves).
Тепер додамо правильний виклик нашій функції MessageBoxA. Для цього напишемо:

JMP [[B]TrueAdress]

Якщо Ollyавтоматично визначив новий код як виклик процедури – це дуже-дуже добре! Отже, далі буде простіше. Якщо ж ні, то ви порахували адресу імпорту неправильно. Перевірте ще раз!
Запишіть адресу цього JMP(назву його TrueCall).

Тепер все робимо як у статті (вставка рядків, PUSH і т.д.), але замість:

Call MessageBoxA

потрібно написати:

Call [B] TrueCall

Решта залишається тим самим.

Натисніть, щоб розкрити...

За допомогою Resource Tunerви можете відкривати виконувані файли, такі як .EXE, .DLL, .OCX, скрінсейвери (.SCR) та багато інших. Відкривши файл, ви отримуєте доступ до ресурсів файлу і можете замінювати ікони, курсори та графіку в різних форматах, змінювати рядки в меню, діалогових вікнах та інших елементах інтерфейсу користувача.

Однак варто мати на увазі, що ресурси у файлі відокремлені від програмного коду, і змінюючи інтерфейс програми, ви не отримуєте доступ до коду програми. За допомогою редактора ресурсів можна змінити елементи програми, що управляють. Код програми за допомогою редактора ресурсів не можна змінити.

Для більш серйозних змін (які, втім, нічого хорошого не приведуть без достатнього досвіду в програмуванні додатків для Windows) рекомендуємо використовувати PE Explorer(Редактор структури PE файлів) або FlexHex(Хекс-редактор для бінарних файлів).

Відкриття EXE або DLL файлу в Resource Tuner

Підтримує кілька способів відкриття файлів. Щоб відкрити файл для перегляду та редагування, натисніть кнопку Open Fileна панелі інструментів або виберіть команду File > Openз меню. Випадаюче меню поруч із кнопкою на тулбарі дає вам швидкий доступ до списку останніх файлів. Цей же список можна отримати командою File > Recent Filesменю програми. Кількість файлів у списку налаштовується у діалозі Customize.


Ви також можете відкрити файл за допомогою Resource Tuner прямо з Провідника Windows, клацнувши по файлу правою кнопкою та вибравши Open with Resource Tunerіз контекстного меню.

Або ви можете просто перетягнути та кинути іконку файлу з Провідника Windows на іконку Resource Tuner на робочому столі або на вікно запущеного Resource Tuner.

Ви також можете відкрити файл з командного рядка.
Наприклад: restuner.exe filename.exe

При відкритті файлу Resource Tuner виконує кілька автоматичних операцій: розпаковує файл, якщо виявляється, що він був запакований за допомогою UPX, потім йде перевірка структури та ресурсів файлу на можливі помилки, і нарешті перебудова пошкоджених ресурсів відповідно до специфікації формату файлів, що виконуються.

Помилки під час відкриття файлу

Якщо при відкритті файлу виникає помилка, то швидше за все з трьох причин: файл захищений, файл 16-бітний, або це файл, що взагалі не виконується.

1. Помилка: Файл пошкоджений, стиснутий пакувальником або захищений протектором.

Імовірність того, що файл стиснутий для зменшення розміру, дуже велика. Пакувальників і протекторів для виконуваних файлів існує не один десяток, і постійно з'являються нові. Resource Tuner підтримує розпакування лише одного, зате найпоширенішого пакувальника - UPX. Інші пакувальники не підтримуються, і вам доведеться самостійно займатися розпакуванням файлу, перш ніж ви зможете відкрити файл для перегляду або редагування.

Ця ситуація не розглядається як помилка програми. Ми не збираємося ні боротися зі спробами інших авторів програм захистити свої твори від злому, ні підтримувати розпакування кількох десятків різних пакувальників, серед яких є і комерційні продукти, і саморобки.

2. Помилка: Файл визначений як 16-бітний NE Executable. Цей формат не підтримується!

Наші програми працюють тільки з 32- та 64-бітними PE файлами. Формат NE (скорочення від "New Executable") - це формат 16-бітних програм, що залишився у спадок від старих версій Windows 3.xx. З появою Windows 95 цей формат вважається застарілим і не використовується, хоча може виконатися на сучасних платформах від Microsoft. Ми не підтримуємо 16-розрядні файли і не збираємося їх підтримувати.

3. Помилка: Файл не є файлом EXE або DLL. Взагалі!

Resource Tuner визначає файл не розширення. Якщо ви перейменуєте розширення у виконуваного файлу, скажімо, виправте .EXE на .TXT або взагалі видаліть розширення, Resource Tuner цим не обдуриш: програма при відкритті файлу аналізує заголовок файлу всередині файлу, а на розширення взагалі не дивиться.

Тому, якщо Resource Tuner вам повідомляє, що файл не виконується, то це так і є. Якщо хтось навіщось забезпечив текстовий файл у поставці гри розширенням.DLL, то від цього файл не перестає бути текстовим, і не стає динамічною бібліотекою. Не дайте розширенню файлу обдурити себе.

Які файли немає сенсу відкривати в редакторі ресурсів

Незважаючи на те, що Resource Tuner призначений для відкриття та редагування будь-яких 32-/64-бітних файлів, існують деякі види EXE файлів, в яких ресурси практично відсутні.

1. Файли створені за допомогою Visual Basic.

У таких файлах у секції ресурсів нічого немає, крім ікони та інформації про версію. Рядки та діалоги у програмах, написаних на візуальному бейсику, зберігаються у своєму власному закритому форматі, і стандартна секція ресурсів у них не використовується.

2. Файли.EXE розміром гігабайт і більше.

Оскільки Resource Tuner - це 32-бітна програма, існують природні обмеження для розміщення образу файлу, що відкривається у віртуальній пам'яті в межах першого гігабайта. Файл розміром гігабайт і більше туди просто не поміститься.

3. Саморозпаковуються архіви у вигляді EXE файлів.

У таких файлах в ресурсах нічого немає, крім ікони та інформації про версію, а може цього не бути. По суті, це архівовані дані, забезпечені підпрограмою для розпакування.

4. Інсталятори інших програм.

У таких файлах у ресурсах нічого немає, крім ікони та інформації про версію. Дуже схожі на п.3. Файл інсталятора можна розглядати як контейнер, всередині якого міститься інший.EXE файл у стислому вигляді та підпрограма для його вилучення. До того ж, програми для створення інсталяторів використовують різні алгоритми для зберігання в собі архівованих даних.

Завантажте безкоштовну ознайомлювальну версію!


Resource Tuner працює на всіх версіях Windows
від 2000 та XP до 8 та 10.

Мінімальні системні вимоги:
Процесор Intel Pentium® або AMD K5 166 MHz
16 MB RAM

Підтримайте проект - поділіться посиланням, дякую!
Читайте також
LPD та PMR діапазони Для чого це потрібно LPD та PMR діапазони Для чого це потрібно Види вч-роз'ємів Види вч-роз'ємів Види вч-роз'ємів Види вч-роз'ємів Ремонт Сі-Бі рацій Megajet MJ150 Ремонт Сі-Бі рацій Megajet MJ150