В этой статье я опишу создание патча для STEAM Brute [private] от dr_vice.
Что нам понадобится:
Т.к. брут ничем не упакован - загоняем в отладчик.
1. Жмём ПКМ => Search for => All referenced text string и что мы видим:
О_о MD5 хэш! Даже не один а целых 3! При чём в открытом виде.
Раз в открытом виде, то можно сделать патч, приступим...
Что нам нужно сделать?
Добавляем брут в ресурсы программы:
Именно из-за этой функции мы пишем патч на Delphi 2010 =) Согласитесь, очень удобно.
Далее добавляем сам брут:
И жмём ок.
Переходим в код...
Процедура PATCH
Эта процедура пробегает по всему файлу начиная с первого байта, и если находит строку которую мы указали то заменяет её новой. Конечно же можно не перелопачивать весь файл, а указать диапозон, но в начале его нужно найти, об этом чуть позже.
Но мы забыли самое главное, чем же заменять текущий хэш? В архиве с исходниками будет файл serial.exe, он выдаёт md5 хэш. Конечно же можно перелопатить этот генератор и достать алгоритм генерации этого хэша, но желания возится с этим у меня нет, да и статья совсем о другом.
Теперь извлечение брута из ресурсов, пришлось с этим повозится, но результат оправдал потраченное время.
Теперь объясню что должна делать программа:
Скин я изменил т.к. не нравился мне пред идущий (не в обиду сказано).
Так же я добавил вывод байтов с которых начинается хеш. Выводит в виде 1254776; 1255504; 1258214; Соответственно начало будет 1254770, а конец будет 1258300. Это позволит уменьшить время перелопачивания кода.
Вывод: хранить md5 хэши в открытом виде не есть хорошо.
Что нам понадобится:
- Olly DBG (Отладчик)
- Delphi 2010 (Можно и 7, но принцип не много другой.)
- STEAM Brute [private] (Сам брут)
- Прямые руки и кривые извилины. (Без этого никак)
Т.к. брут ничем не упакован - загоняем в отладчик.
1. Жмём ПКМ => Search for => All referenced text string и что мы видим:
О_о MD5 хэш! Даже не один а целых 3! При чём в открытом виде.
Раз в открытом виде, то можно сделать патч, приступим...
Что нам нужно сделать?
- Как то вшить брут в *.exe файл нашей программы
- Распаковать брут из нашей программы
- Пропатчить.
Добавляем брут в ресурсы программы:
Именно из-за этой функции мы пишем патч на 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');
Теперь объясню что должна делать программа:
- Извлекать брут
- Патчить его
Скин я изменил т.к. не нравился мне пред идущий (не в обиду сказано).
Так же я добавил вывод байтов с которых начинается хеш. Выводит в виде 1254776; 1255504; 1258214; Соответственно начало будет 1254770, а конец будет 1258300. Это позволит уменьшить время перелопачивания кода.
Вывод: хранить md5 хэши в открытом виде не есть хорошо.
Скачать брут, патч, исходник патча и serial.exe можно тут:
Ванс ты стал моим любимым программистом=D
ОтветитьУдалитьC/7aCI6o
ОтветитьУдалитьа для чего собственно патч???
ОтветитьУдалитьУ меня вылетает брут...
ОтветитьУдалитьа для чего патч, объяснит кто нибудь о чём статейка?
ОтветитьУдалитьЭм... трудный вопрос.
УдалитьЕсли правда, я тоже не понял для чего патч ?
ОтветитьУдалитьВы издеваетесь что ли?
УдалитьНет, просто растолковал бы нам, для чего он, что то изменяет.... или что?
УдалитьЕстьу меня друг называется как Google, вам к ним..
УдалитьА что делает этот патч?
ОтветитьУдалитьVans че делать если он вылетает при запуске ?
ОтветитьУдалитьхеш от чего берется то?)
ОтветитьУдалитьЧё такие тупые? КРЯК, не, не слышали..
ОтветитьУдалитьБлин при запуске вылетает
ОтветитьУдалитьБлядь, Ванс ты не понял?:)))XD Твой блог читают только нубо-школьники которые даже не прочитали саму статью))) Гы-гы
ОтветитьУдалитьУ меня для вас плохие новости, вы автоматически подпадаете под "нубо-школьник" т.к. читаете мой блог. Логично, не правда ли?
УдалитьЛогично, я об этом думал. Однако вы тоже попадаете, потому что читаете этот блог:)
УдалитьSygak, подъ*б не засчитан. Я автор этого блога, а не читатель в отличие от вас.
УдалитьSygak,Хватить пи?дить иди в свой блог если там все Кулцхацкеры..
Удалитьбрут актуальный?
ОтветитьУдалитьПодскажите
ОтветитьУдалитьКакой учить язык програмирования ?
(хочу писать бруты, чекеры и т.д)
Delphi
УдалитьВопрос. КАК ТЫ НАШЕЛ ИМЯ ОКНА?
ОтветитьУдалитьRestorator 2009
УдалитьVanS ты самый лучший.
ОтветитьУдалитьЭТО Я : "Вопрос. КАК ТЫ НАШЕЛ ИМЯ ОКНА?"
И еще один вопрос.
Как юзать ollydbg?
В гугле и ютубе полно мануалов.
Удалить