пятница, 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 можно тут:


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

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

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

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

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

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

    ОтветитьУдалить
  5. Если правда, я тоже не понял для чего патч ?

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

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

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

      Удалить
  6. А что делает этот патч?

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

    ОтветитьУдалить
  8. хеш от чего берется то?)

    ОтветитьУдалить
  9. Чё такие тупые? КРЯК, не, не слышали..

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

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

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

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

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

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

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

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

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

    Как юзать ollydbg?

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