![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
изменить байт [D7, Win2k]
Dot © (2004-10-22 21:34:00)Мастера! Подскажите как изменить в exe-файле один или группу байт, наиболее минимальным методом. т.е. чтобы программа помньше занимала
XProger (2004-10-23 17:00:00) [1]Almaz, да, ступил... %)
Almaz (2004-10-23 16:01:00) [2]
> итак мой кряк должен (НЕ В ПАМЯТИ)
> заменить байт 74DE по адресу :004412ff на 75DE
Байт$ 74DEэто сильно :)
> XProger © (23.10.04 04:30) [12]
Помилуйте батенька, а зачем загружать весь файл в память, чтобы заменить один байт ??? Может так:
var
F: File;
B: Byte;
begin
AssignFile(F, 'filename.exe');
Reset(F, 1);
Seek(F, Offset);
B := 75;
BlockWrite(F, B, 1);
CloseFile(F);
end;
Но тут я бы посоветовал вам, Dot, обратить внимание на то, что сказал SammIk о том, адрес в памяти это не смещение от начала файла - это смещение вам предстоит вычислить, вычтя из адреса базовый адрес образа EXE. Обычно это $00400000, но можете уточнить для конкретного ЕХЕ. Т.е. производя несложные вычисления, получаем Offset = $004412ff - $00400000 = $000412ff.
Удачи.
XProger (2004-10-23 04:30:00) [3]Удаляешь все Unit'ы.
Project -> View Source
И пишешь это...
program Crack;
type
PByteArray = ^TByteArray;
TByteArray = array[0..1] of Byte;
var
F : File of Byte;
buf : PByteArray;
size : integer;
i : integer;
begin
AssignFile(F, 'jertva.exe');
Reset(F);
size := FileSize(F);
GetMem(buf, size);
BlockRead(F, buf[0], size);
Rewrite(F);
i := $004412FF; buf[i] := $75;
i := $00441300; buf[i] := $DE;
BlockWrite(F, buf[0], size);
FreeMem(buf);
CloseFile(F);
end.
Программа весит 14,5 кб :)
P.S.
Работу программы не проверял... ;)
Маг Похмеляйнен (2004-10-23 00:57:00) [4]А... Так это кряк :(
Разочарование...
SammIk (2004-10-22 22:39:00) [5]Лучше на EB меняй.
Я тебе написал логику, а делать тебе.
Ведь адрес 004412ff из дебагера? Тогда это RVA
А это так, то все. Если только кто-то тебе даст исходник, что
мало вероятно.
Вообщем читаи про ПЕ
Dot (2004-10-22 22:33:00) [6]понятно в чем дело =) я уже в начале написал точно. Поменьше не та программа должна быть в которой байт заменять =) а которую написать для этого надо.
теперь вот четко что я хочу.
Прямым словом хочу написать кряк.
итак мой кряк должен (НЕ В ПАМЯТИ)
заменить байт 74DE по адресу :004412ff на 75DE
вот так вот.
то есть мне надо открыть ехе-файл и пройти по адресу, а затем зписать туда байт 75 вместо 74.
SammIk (2004-10-22 22:29:00) [7]А с исходника не обезишь?
Это адрес в памяти?
Если да то так:
Ищешь документацию по PE фаилам(в потрепатся)
Ищешь секцию где этот баит лежит, если переменные, то в секчии с данными(читай про PE)
Если в коде, то секция исполняемая
Перещитываешь RVA на fileoffset и меняешь в бинарике байт.
А насчет не подходит, надо вопросы точнее задовать
чтобы программа помньше занимала
Отвечал по этой фразе, а вот если ты баит поменяешь, то программа меньше станет. Если да, то на сколько?
Dot (2004-10-22 22:18:00) [8]кто тут у нас тормоз. Если я спросил значит то не подошло это раз.
второе УПХ на Си написан вообще то. а тут Мастера Дельфи вроде сидят как я понял.
3) Кинь исходник как байт 12 по адресу 12345 в проге заменить на байт 21 и все что мне надо.
SammIk (2004-10-22 22:13:00) [9]Ты тормоз или как?
Никак, а как?
Говорят же с исходниками, или пиши оптимизатор(интерпритатор команд в основном)(А).
И с помощью его оптими, тока делфовый компилятор уже это сделал за тебя, и остается только сжатие. А если так то сорци UPX тебе в руки. И побольше уважения к ближним.
Dot (2004-10-22 22:08:00) [10]2SammIk слушай не знаешь не флуди. мне не нужна программа я спросил как сделать!
SammIk (2004-10-22 21:56:00) [11]Таких программ уйма, например UPX причем с исходниками.
Исчи, да обрясчешь. Хз, что значит, но круто!!!
SammIk (2004-10-22 21:53:00) [12]Прикинь есть такая тема,
Есть
var
v1,v2,v3,v4.byte1:byte;
+++++++++++++++++++++++
byte1:=v1+v2+v3+v4;
++++++++++++++++++++++++
В итоге мы получае всего 1 БАИТ!!!!!
Круто, скажешь ты? Нет, отвечу я!
Dot (2004-10-22 21:53:00) [13]Сделать программу А которая изменяет байт в программе Б . и желательно таким способом написать программу А чтобы она меньше занимала
Маг Похмеляйнен (2004-10-22 21:37:00) [14]Не вижу связи между "изменить" и "меньше занимала" :)
Поясните, pls.