Крякинг: Записки дилетанта

Как статья ?

  • Классно

    Голосов: 18 90.0%
  • Мог-бы и по лучше написать

    Голосов: 0 0.0%
  • Что-то слабовато

    Голосов: 0 0.0%
  • А зачем это ?

    Голосов: 1 5.0%
  • Ндя..., лучше-бы выкладовал ключи

    Голосов: 1 5.0%

  • Всего проголосовало
    20

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 082
Репутация
8 199
Действительно очень просто и по русскому.

Кстати-да Рикардо про это сказал в 28-й главе…

Что есть какой-то там изящный крякинг, а есть просто крякинг, где используются инструменты облегчающие работу, я всё-же согласен с Рикардо и придерживаюсь к тому-что по проще, непонимаю зачем «Изобретать велосипед» и «Мозги компостировать», когда что-то можно сделать легче, быстрее и проще…

Хочу кое-что отметить к 30-й главе, там небольшая ошибка, из-за которой способ описанный в статье не будет работать на новых ОС.

Как и во всех заметок здесь не будет ничего сложного, другие качества этих заметок, надеюсь никто и не увидит, гы-гы..

В этой главе рассматривается P-Code (Он-же псевдокод, он-же опкод), итак приложения на VisualBasiс, бывают двух типов (Ниже моё представление, может-быть неправильно, поправьте если-что):

1) NATIVE - в NATIVE-коде выполняют строки кода в секции кода программы, т.е. эти программы можно дизассемблировать, а API бейсика вызываются уже в длл-ки.

2) P-Code - при выполнении не происходит остановок в секции кода, кроме тех случаев, когда встречается вызов какой-либо API-функции. Это очевидным образом указывает на то, что никакого исполняемого кода в данной секции нет.

Дизассемблирование программы, использующей P-CODE, ничем не поможет, так как там нет исполняемого кода. В ней всегда запускается DLL Visual Basic'а, которая читает значения из секции кода, указывающие ей, что нужно сделать.

Пример:

Байт 1e – делает безусловный переход, он выполняется в DLL Visual Basic’а, то есть, она считывает эти значения из секции кода, и они указывают DLL, что нужно сделать. Таким образом, никакого выполнения кода в соответствующей секции не происходит, только считываются из неё значения.

Что-то я отвлёкся, теперь к заданию 30-й главы, там надо убрать наг-окно у программы которая написана на Visual Basic, написана как-раз по второму типу, т.е. P-Code…

Наг-окно – это окно которое открывается, перед основной программой, её надо убрать ! ;)


upload_2015-3-10_19-2-8.png




Нужно патчить саму программу, но воспользуемся поможником –это exdec, эта программа позволяет увидеть адреса опкодов, далее эти опкоды и поменяем + скажу где у автора была ошибка для новых систем…

Итак откроем прогу вначале в exedec, вот скрин:

upload_2015-3-10_19-2-32.png



Там мы видим название окошко, т.е. “NAGaeliminar”, а также что это окно вызывается при помощи API бейсика _rtcMSGBox, нас интересует адрес 0x401AD2 (Самый крайний левый столбик)…

Можно закрыть exedec, в общем-то больше не нужен…

Открывает крякми в Oledbg, далее нам нужен дамп, переходим по нашему адресу 401AD2 :

upload_2015-3-10_19-2-45.png


upload_2015-3-10_19-2-53.png



Получаем:

upload_2015-3-10_19-3-6.png



0A – Это наш опкод, далее идут параметры, до 36 – это уже другой опкод, это видно в exedec (второй столбик)…

Так вот автор рекомендует заменить 0А на F5, параметры просто обнулить, F5 – как я понимаю pop… Но ведь программа вылетит по ошибке, я-же просто заменил на F5, а параметры оставил как есть и тогда программа нормально запустилась без наг-окна ! :)

upload_2015-3-10_19-3-20.png



Меняем байт, далее сохраняем патченную программу:

upload_2015-3-10_19-3-33.png


upload_2015-3-10_19-3-40.png



Запускаем, без всяких ошибок, УРЯЯЯЯ !

upload_2015-3-10_19-3-51.png


Во вложении приложение к посту... :)
 

Вложения

  • 30-я_глава.rar
    113.3 КБ · Просмотры: 15

Indy

Уважаемый пользователь
Форумчанин
Регистрация
21.01.2015
Сообщения
277
Репутация
105
> Он-же псевдокод, он-же опкод), итак приложения на VisualBasiс

Как всё запущено, жесть.
 

ason

Уважаемый пользователь
Форумчанин
Регистрация
21.01.2015
Сообщения
171
Репутация
112
Вот эта статья помогла прояснить, зачем вообще изучать Нарвахо, а то я немного заблудился или устал от большого количества непонятных символов и переменных.
 

ason

Уважаемый пользователь
Форумчанин
Регистрация
21.01.2015
Сообщения
171
Репутация
112
X-shar как ты думаешь, может можно создать каталог языков программирования для начинающих.С литературой доступной для понимания новичка.Будет проще на одном ресурсе разобраться в азах кодинга,ну и в конце концов выбрать для себя именно тот язык, который окажется наиболее комфортным в понимании?
Постепенно можно будет дополнять литературу.
 

Антоха

Уважаемый пользователь
Форумчанин
Регистрация
26.12.2012
Сообщения
2 780
Репутация
4 652
может можно создать каталог языков программирования для начинающих.
Как бы раздел для литературы уже существует,но вот только не хочет заполняться.
https://ru-sfera.pw/forums/ljubimye-knigi-i-zhurnaly-a-takzhe-vyrezki.114/
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 082
Репутация
8 199
Вот эта статья помогла прояснить, зачем вообще изучать Нарвахо, а то я немного заблудился или устал от большого количества непонятных символов и переменных.
Я Нарвахо изучаю для понимания "Основ" и самое главное изучить работу отладчика, немного хочу поизучать асм !

Там тоже не всегда всё понимаю, но думаю не страшно, там кстати некоторая инфа устарела и не всё работает в этом мануале...Отдыхай!!!

X-shar как ты думаешь, может можно создать каталог языков программирования для начинающих.
Ну у нас есть раздел:https://ru-sfera.pw/#programmirovanie.81

А вообще если не брать в расчёт асм и низкоуровневый коденг, т.к. там нужно знать ещё устройство контроллера/процессора, то в остальном высокоуровневом коденге, т.е. Си, Делфи, Бейсик, PHP, Java и т.д. достаточно знать основы:Т.е. работа с переменными, строками, массивами, далее идут понятия наследования, инкапсуляция и полиморфизм, это уже объектно-ориентированное програмирование (ООП) !

Если эти базовые понятия изучить, то уже не важно какой язык будет, да-есть специфика везде, но её изучить уже не проблема будет, в зависимости от языка неделя-две, но максимум месяц, это-если совсем-уж что-то сложное и специфическое если ! (ИМХО)

Лучше учить язык си, по причине что на его основе куча других языков, таких-как PHP, Java, C# и прочее...

Легче с ними работать будет при необходимости !

Про литературу, просто выкладывать книги наверное смысла нет, т.к. их итак куча, а нормальных книг еденицы, если только выкладывать книги которые помогли лично например вам в изучении и т.д. !
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 082
Репутация
8 199
Всем привет !

Блин что-то забросил я Нарвахо, если долго не читаешь, потом уже тяжело вникать…

Там в 38-ой главе было задание, как сказал Рикардо «Простенький пакер проблем несоставит вскрыть !», да-блин ухайдокался что-то я, потом прознал что есть автоматические депакеры и решил попробовать их…

Итак теория, как распаковывать протекторы, вкратце:

1)Найти OEP, это точка входа в нашу прогу, когда она уже распакована в памяти;

2)Сделать дамп;

3)Восстановить таблицу импорта (IAT).

Итак всё по порядку, задание нужно распаковать пакер FSG 1.31, что-то я так тупил, что так и не смог вручную восстановить IAT, бывает у меня, тем более после бутылки пиваса, поэтому как обычно будем читерить, гы-гы… :)

В начале сделаем настройки в Олле для поиска OEP: Options->DebugOptions ->SFX, там сделаем тщательный поиск OEP:

upload_2015-4-3_15-49-36.png


Открываем запакованный анпакме в олле:

upload_2015-4-3_15-49-51.png


Нажимаем Run, получаем:

upload_2015-4-3_15-50-4.png


Далее опять Run и получим:

upload_2015-4-3_15-50-19.png




Видим что OEP: 440300 (Real entrypoin to fSFX code)
это нам и нужно, далее для распаковки будем использовать тулзу Quick.Unpack.2.2.Final, юзать кстати её лучше на хрюше и с отключенными АВ, иначе может дело дойти и до слёта системы, это важно…

Открываем его, кстати обратите внимание на симпатяшку в фавиконки, она мне сразу понравилась, гы-гы…

upload_2015-4-3_15-50-30.png


Вводим OEP, открываем файл который нужно распаковать, далее делаем «Умный метод + трассировка» и «Распаковать»…

О чудо, вот наша таблица импорта:

upload_2015-4-3_15-50-38.png


Смотрим что-бы не было проблем и нажимаем сохранить…

upload_2015-4-3_15-50-46.png


Всё распаковалось…

Всё запускается:

upload_2015-4-3_15-50-55.png


Также распаковывается и UPX кстати и много других простеньких пакеров… ;)



Во вложении материалл к статье, если кому нужно…
 

Вложения

  • unpackme- FSG 1.31 - dulek.rar
    152.4 КБ · Просмотры: 14
  • Quick.Unpack.2.2.Final.zip
    1 МБ · Просмотры: 16
П

Пузырик

Гость
У вас апечатка "КрЯкинг", а правильно "КрЭкинг". Вы что крякаете что-ли, как утки ? ха-ха-хаПо теме интересно было-бы читать не решения задач Нарвахо, а исследование прог.
Вот пример(Не реклама): там-же можно найти инфу по асму и т.д.
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 082
Репутация
8 199
У вас апечатка "КрЯкинг", а правильно "КрЭкинг". Вы что крякаете что-ли, как утки ? ха-ха-хаПо теме интересно было-бы читать не решения задач Нарвахо, а исследование прог.
Это не опячатка, это такой прикол, кстати было интересно заметит кто-нет ?Отдыхай!!!

Правильно конечно-же "Крэк", но в рунете почему-то говорят "Кряк"...смех-смех!!!

Поэтому и "Крякинг", а вообще по теме, я просто эту тему создавал для себя...WinkSmile
 
Верх Низ