Нам понадобятся:
1. OllyDbg v1.10 (
http://www.ollydbg.de/).
2. Плагин HideOD v0.181 (
http://tuts4you.com/download.php?view.58) - распаковать dll в папку с OllyDbg.
3. CFF Explorer (
http://www.ntcore.com/).
4. Чтобы не нужно было хучить запуск процесса игры в стиме используем это прогу Skyrim4GB 1.5 - гугл найдет (если фактическая CheckSum процесса игры не совпадает с записаной в PE хэдере, как в случае X3:TC напрмер, то надо выпилить её проверку - исходники в помощь).
5. Купленая игра которую мы будем препарировать.
Получаем адрес точки вхождения:
1. Запускаем OllyDbg и в меню Plugins -> HideOD -> Option выставляем все галочки кроме ZwSetInformationThread и ZwQueryInformationProcess.
2. Открваем skyrim4gb.exe в OllyDbg и ищем в дезассемблере (Alt+C) строку с вызовом функции ResumeThread.
3. Выделяем эту строку и ставим точку остановки (F2).
4. Запускаем skyrim4gb на выполнение до точки остановки (F9).
5. Открываем второе окно OllyDbg и присоединяемся (File -> Attach) к TESV.
6. В первом окне OllyDbg возобновляем skyrim4gb (F9).
7. Во втором окне OllyDbg открываем карту памяти (Alt+M) ищем строку TESV_exe с секцией .text, выделяем её и ставим точку остановки при обращении (F2).
8. Запускаем TESV на выполнение (F9).
9. Препарируемая программа должна упасть и операционка выведет сообщение об прекращении работы программы.
10. В подробностях проблемы нужно посмотреть и записать смещение исключения - это относительный виртуальный адрес точки вхождения (RVA of Entry Point).
Получаем расшифрованый код:
1. Запускаем препарируемую программу через стим обычным образом и сворачиваем её (Alt+Tab).
2. Открываем OllyDbg и присоединяемся (File -> Attach) к этой программе.
3. Открываем карту памяти (Alt+M) ищем строку программы с секцией .text и окрываем дамп (правой кнопкой мыши -> Dump).
4. В окне дампа делаем бэкап расшифрованого кода (выделяем первую строку дампа, правой кнопкой мыши -> Backup -> Save data to file).
Удаляем Steam Stub:
1. Запускаем CFF Explorer и открываем созданый бэкап.
2. В разделе Hex Editor выделяем код (правой кнопкой мыши -> Select All) и копируем (правой кнопкой мыши -> Copy -> Normal).
3. Открываем в CFF Explorer препарируемую программу.
4. В разделе Section Headers выделяем секцию .text, выделяем первый байт в окне редактирования и вставляем код (правой кнопкой мыши -> Write).
5. Выделяем секцию .bind и удаляем её (правой кнопкой мыши -> Delete Section (Header And Data)). Если имеется секция .extra, то скорее всего нужно удалить и её.
6. В разделе Optional Header вставляем в поле AddressOfEntryPoint найденый ранее адрес точки вхождения.
7. Сохраняем программу - теперь она не будет использовать Steam