пятница, 13 апреля 2012 г.

Пишем патч.

В этой статье я опишу создание патча для STEAM Brute [private] от dr_vice.



Что нам понадобится:
  1. Olly DBG (Отладчик)
  2. Delphi 2010 (Можно и 7, но принцип не много другой.)
  3. STEAM Brute [private] (Сам брут)
  4. Прямые руки и кривые извилины. (Без этого никак)

Т.к. брут ничем не упакован - загоняем в отладчик.

1. Жмём ПКМ => Search for => All referenced text string и что мы видим:


О_о  MD5 хэш! Даже не один а целых 3! При чём в открытом виде.

Раз в открытом виде, то можно сделать патч, приступим...

Что нам нужно сделать?
  1.  Как то вшить брут в *.exe файл нашей программы
  2.  Распаковать брут из нашей программы
  3.  Пропатчить.

Добавляем брут в ресурсы программы:


Именно из-за этой функции мы пишем патч на Delphi 2010 =) Согласитесь, очень удобно.

Далее добавляем сам брут:


И жмём ок.

Переходим в код...

Процедура PATCH

procedure patch(md5key: string);
var FileName, a, b: string; f:file; n:Longint;
begin
FileName:=ExtractFilePath(Application.ExeName)+'Steam_Brute.exe';
a:='E5022974810DD2EBB6966D03CFA2F813';
b:=a;
 AssignFile(f, FileName);
 Reset(f, 2);
 n:=1;
 while (n<(FileSize(f)-Length(a)-1)) do
  begin
   Seek(f, n);
   BlockRead(f, a[1], Length(a));
   if a=b then
    begin
     seek(f, n);
     BlockWrite(f, md5key[1], Length(md5key));
    end;
   inc(n);
  end;
 CloseFile(f);
end;

Эта процедура пробегает по всему файлу начиная с первого байта, и если находит строку которую мы указали то заменяет её новой. Конечно же можно не перелопачивать весь файл, а указать диапозон, но в начале его нужно найти, об этом чуть позже.

Но мы забыли самое главное, чем же заменять текущий хэш? В архиве с исходниками будет файл serial.exe, он выдаёт md5 хэш. Конечно же можно перелопатить этот генератор и достать алгоритм генерации этого хэша, но желания возится с этим у меня нет, да и статья совсем о другом.

Теперь извлечение брута из ресурсов, пришлось с этим повозится, но результат оправдал потраченное время.
procedure TForm1.RCtoFile(RCname, Filename: string);
var res:TResourceStream;
begin
  res:=TResourceStream.Create(HInstance, RCname, RT_RCDATA);
  res.SaveToFile(Filename);
  res.Free;
end;
Пользоваться так:
RCtoFile('brute', ExtractFilePath(Application.ExeName)+'Steam_Brute.exe');

 Теперь объясню что должна делать программа:
  1. Извлекать брут
  2. Патчить его
Компилируем, жмём на кнопочку и получаем пропатченный брут!


Скин я изменил т.к. не нравился мне пред идущий (не в обиду сказано).

Так же я добавил вывод байтов с которых начинается хеш. Выводит в виде 1254776; 1255504; 1258214; Соответственно начало будет 1254770, а конец будет 1258300. Это позволит уменьшить время перелопачивания кода.

Вывод: хранить md5 хэши в открытом виде не есть хорошо.


Скачать брут, патч, исходник патча и serial.exe можно тут:


На ВТ не лить! Есть же отладчик ;)

28 комментариев:

  1. Ванс ты стал моим любимым программистом=D

    ОтветитьУдалить
  2. а для чего собственно патч???

    ОтветитьУдалить
  3. У меня вылетает брут...

    ОтветитьУдалить
  4. Анонимный7 мая 2012 г., 03:04

    а для чего патч, объяснит кто нибудь о чём статейка?

    ОтветитьУдалить
  5. Анонимный18 мая 2012 г., 23:11

    Если правда, я тоже не понял для чего патч ?

    ОтветитьУдалить
    Ответы
    1. Вы издеваетесь что ли?

      Удалить
    2. Анонимный20 мая 2012 г., 02:33

      Нет, просто растолковал бы нам, для чего он, что то изменяет.... или что?

      Удалить
    3. Естьу меня друг называется как Google, вам к ним..

      Удалить
  6. Анонимный19 мая 2012 г., 03:25

    А что делает этот патч?

    ОтветитьУдалить
  7. Анонимный26 мая 2012 г., 02:11

    Vans че делать если он вылетает при запуске ?

    ОтветитьУдалить
  8. Анонимный31 мая 2012 г., 20:50

    хеш от чего берется то?)

    ОтветитьУдалить
  9. Анонимный30 июля 2012 г., 21:35

    Чё такие тупые? КРЯК, не, не слышали..

    ОтветитьУдалить
  10. Блин при запуске вылетает

    ОтветитьУдалить
  11. Блядь, Ванс ты не понял?:)))XD Твой блог читают только нубо-школьники которые даже не прочитали саму статью))) Гы-гы

    ОтветитьУдалить
    Ответы
    1. У меня для вас плохие новости, вы автоматически подпадаете под "нубо-школьник" т.к. читаете мой блог. Логично, не правда ли?

      Удалить
    2. Логично, я об этом думал. Однако вы тоже попадаете, потому что читаете этот блог:)

      Удалить
    3. Sygak, подъ*б не засчитан. Я автор этого блога, а не читатель в отличие от вас.

      Удалить
    4. Sygak,Хватить пи?дить иди в свой блог если там все Кулцхацкеры..

      Удалить
  12. Подскажите
    Какой учить язык програмирования ?
    (хочу писать бруты, чекеры и т.д)

    ОтветитьУдалить
  13. Вопрос. КАК ТЫ НАШЕЛ ИМЯ ОКНА?

    ОтветитьУдалить
  14. VanS ты самый лучший.
    ЭТО Я : "Вопрос. КАК ТЫ НАШЕЛ ИМЯ ОКНА?"
    И еще один вопрос.

    Как юзать ollydbg?

    ОтветитьУдалить