Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Вниз

Низкоуровневый доступ к файлу   Найти похожие ветки 

 
TGX ©   (2006-06-10 17:44) [0]

Здрвсте! Мне надо в файле (dll библиотека) изменить программно по адресу 0x53ea байт с 0x74 на 0xEB. Как это сделать?


 
Rial ©   (2006-06-10 18:11) [1]

А в чем тут заключается "низкоуровневость" доступа ?
Насколько я понял из вопрос, здесь можно обойтись
обычными
FileOpen
FileSeek
FileWrite
FileClose

А реально низкоуровневый доступ в защищенном режиме не
прокактит. Не любит видна intr 21h.

Возможно, я что то не так понял.


 
Loginov Dmitry ©   (2006-06-10 18:18) [2]

Проверь следующие варианты:
1)

with TFileStream.Create(YourFileName, fmOpenReadWrite) do
begin
 Seek($53, 0);
 B := $EB;  // B - Byte
 Write(B, SizeOf(B));
 Free;
end;


2)

with TMemoryStream.Create do
begin
 LoadFromFile(YourFileName);
 if PByteArray(Memory)[$53] = $74 then
   if PByteArray(Memory)[$53] = $EB;
 SaveToFile(YourFileName);
end;


3)

begin
 HFile := FileOpen(YourFileName, fmOpenReadWrite);
 HMap := CreateFileMapping(HFile, nil, PAGE_READWRITE, 0, 0, nil);
 Bytes := MapViewOfFile(HMap, FILE_MAP_WRITE, 0, 0, 0);
 if Bytes = nil then
   raise Exception.Create("Ошибка открытия файла!");

 if Bytes[$53] = $74 then Bytes[$53] := $EB;

 UnmapViewOfFile(Bytes);
 CloseHandle(HMap);
 CloseHandle(HFile);
end;


 
Ihor Osov'yak ©   (2006-06-11 01:58) [3]

эта....

действительно ли в файле, или уже в ВАП некоего процесса, который подгрузил эту длл?
и если в файле, то каково "состояние"  этого файла - файл "свободен" или "залочен" по причине подгруки его в ВАП некоего процесса?

и вообще.. Зачем такое странное желание?


 
TGX ©   (2006-06-12 21:18) [4]

мне патч надо сделать, т.е. что работала нормально прога нужно в библиотеке изменить пару байт! Ну вот хочетьсяч написать прогу! А как?


 
Dmitrij_K   (2006-06-12 21:23) [5]

См. [1] + F1


 
Джо ©   (2006-06-12 21:23) [6]

> [4] TGX ©   (12.06.06 21:18)
> Ну вот хочетьсяч
> написать прогу! А как?

См. [2] самый первый вариант. С остальными и возиться не стоит для такого пустячного чиха. Или просто AssignFile,Reset,Seek,BlockWrite,CloseFile и все.


 
TGX ©   (2006-06-14 21:11) [7]

У меня во со 2-и получилось! Вот только размер exe большой, нельзяли его убавить до хотябы десятков kb?


 
Джо ©   (2006-06-14 22:02) [8]

> [7] TGX ©   (14.06.06 21:11)
> У меня во со 2-и получилось! Вот только размер exe большой,
> нельзяли его убавить до хотябы десятков kb?

Тогда используй стандартные паскалевские AssignFile и т.д. Никаких SysUtils, Classes и прочих.


 
TGX ©   (2006-06-18 10:51) [9]

А что если просто из Classes нужные классы вытащить и константы, а остальное не использовать? Будет работать. По идее размер уменьшиться должен.


 
Чародей ©   (2006-06-18 11:17) [10]

Пиши без VCL, размер ехе чуть более 10k.
Интересно почему так много ответов. Я думал на этом форуме взломщикам не помогают??


 
Юрий Зотов ©   (2006-06-18 11:36) [11]

> Чародей ©   (18.06.06 11:17) [10]

Вообще, вопрос довольно интересный. Непонятно, как человек, который не может решить простейшую задачку, сумел вычислить, какие байты надо менять и на что их надо менять.


 
Тимофей Юрьевич ©   (2006-06-18 11:37) [12]


> Вообще, вопрос довольно интересный. Непонятно, как человек,
>  который не может решить простейшую задачку, сумел вычислить,
>  какие байты надо менять и на что их надо менять.

Cказал кто или кряк с байтами уже был;)


 
TGX ©   (2006-06-21 22:33) [13]


> Вообще, вопрос довольно интересный. Непонятно, как человек,
>  который не может решить простейшую задачку, сумел вычислить,
>  какие байты надо менять и на что их надо менять.


Вообще то, с помощью отладчика и дизассемблера можно многое вычислить :) Просто никогда не сталктвался с изменение файла прграммно! Всё вручную делал.


 
Palladin ©   (2006-06-21 22:45) [14]

какие-то противоречивые чувства возникают... знать такие страшные слова как "отладчик" и "дизассемблер" и не знать основы работ с файлами, хотя бы на уровне базисных функций паскаля которые каждому школьнику известны (кто не поленился конечно учебник почитать)...


 
Германн ©   (2006-06-22 02:29) [15]


> Palladin ©   (21.06.06 22:45) [14]
> какие-то противоречивые чувства возникают... знать такие
> страшные слова как "отладчик" и "дизассемблер" и не знать
> основы работ с файлами


И да и нет. Лично для меня было главным в отношении к автору сабжа то, что вышеуказанный абсолютно грамотно написАл "дизассемлер"!
Т.е. вышеназванный - имхо, человек грамотный, но неопытный! В некоторой области.


 
Германн ©   (2006-06-22 03:06) [16]

Пардон.
Вместо "дизассемлер" следует читать "дизассемблер". :-(
Очепятка, блин!


 
TGX ©   (2006-06-22 17:29) [17]

Вообще то в школе я не учил pascal, в школе я вообще ничего не учил :) Всё дома, по собственной инициативе. С файлами работать не приходилось кроме как  с текстовыми и то открыть, проитать, сохранить, закрыть! :) Так что нехотелось мне рыскать по инету в поисках "учебника для чайников" по DELPHI и искать там примеры работы с файлами, а решил сразу спросить здесь. Так как был уверен что мне ответят, может тему не так назвал, но главное меня поняли! Всем спасибо! :)


 
Amoeba ©   (2006-06-22 17:35) [18]


> Вообще то в школе я не учил pascal, в школе я вообще ничего
> не учил :) Всё дома, по собственной инициативе. С файлами
> работать не приходилось кроме как  с текстовыми и то открыть,
>  проитать, сохранить, закрыть! :)

Советую посетить раздел "Лицей" в "Королевстве Delphi":
http://www.delphikingdom.com/lyceum


 
TGX ©   (2006-06-22 17:43) [19]


> Советую посетить раздел "Лицей" в "Королевстве Delphi":
> http://www.delphikingdom.com/lyceum


А зачем мне это?


 
Игорь Шевченко ©   (2006-06-22 17:48) [20]

"В последнее время наметилась одна тенденция. Дело в том, что сейчас для того, чтобы выйти на рынок программных средств и занять в нём свою нишу, фирма, а, соответственно, и программисты должны делать продукт как можно быстрее. При этом, естественно, достаточно часто вопросы эффективности, быстродействия, минимизации размера используемой памяти и тому подобные во внимание просто не принимаются. Зачем, дескать, думать о таких «мелочах», если современные компьютеры достаточно мощные и «переваривают» почти любые объёмы. Подумаешь, мегабайт памяти туда, мегабайт сюда… Кроме того, очень сильное влияние на квалификацию программистов оказывают многочисленные средства быстрой разработки, бурное развитие которых наблюдается в последнее время. Средства, предназначенные для повышения производительности труда квалифицированных программистов, заняли на рынке совершенно другое место. Достаточно часто эти средства используются программистами низкой квалификации для того, чтобы в кратчайшее время создать работающую программу, прикладывая при этом минимум усилий. Более того, средства быстрой разработки позволяют программисту скрыть недостаток квалификации, ибо вся черновая работа делается без участия программиста. Вместо того, чтобы овладеть необходимым для профессиональной деятельности минимумом, можно недостаток квалификации скрыть посредством использования программы, которая всё сделает сама. Таким образом, средства быстрой разработки используются превратились в средства создания неэффективных программ неквалифицированными программистами. Что поделаешь, рынок диктует свои условия…

Соответственно, такой подход приводит к тому, что достаточно часто у программистов появляется завышенная самооценка. Раз я могу «накропать» программу за неделю, значит, я – ВЕЛИКИЙ ПРОГРАММИСТ, всё умею, всё могу. Зачем мне чему-то учиться, я (при помощи конкретного средства) всегда сделаю то, что хочу! Появилось даже расхожее определение – «программист, пишущий мышкой»… Но стоит у подобных, с позволения сказать, программистов, забрать средство быстрой разработки, как они становятся беспомощными. Ведь они являются программистами на конкретном средстве! Другими словами, они являются ПОЛЬЗОВАТЕЛЯМИ конкретного средства… А пользователи и программисты – это совершенно различные классы людей, использующих компьютер в своей профессиональной деятельности. И если пользователю необходимо знать только порядок использования и взаимодействие частей одной или нескольких программ (WinWord, бухгалтерская или банковская программы, программа обработки изображений и так далее), то программист помимо всего прочего должен, почти обязан понимать то, как функционирует компьютер, на основе каких принципов построена операционная система, понимать принципы организации данных и быть в состоянии написать эффективную программу, решающую поставленную перед программистом задачу. В том случае, если программист является профессионалом, то использование средств быстрой разработки только поможет ему, позволив сократить время, необходимое для разработки программы, и минимизировать усилия, необходимые для разработки таковой.

Непосредственным поводом, подвигнувшим меня на написание этой книги, явился вопрос, заданный в одном из многочисленных форумов по программированию. В этом вопросе, наверное, сосредоточилась квинтэссенция того, о чём я говорил выше. Этот вопрос, судя по всему, был задан именно программистом с явно завышенной самооценкой. Смысл этого вопроса можно свести к следующему. Да, на свете есть хорошие дизассемблеры, в частности, IDA Pro. Но я в ближайшем будущем напишу настолько «крутой» дизассемблер, что IDA Pro моему дизассемблеру и в подмётки годиться не будет. Мне для этого только одной мелочи не хватает. Не будет ли любезен многоуважаемый All сообщить мне смещение в исполняемом файле, с которого необходимо начинать дизассемблирование? Что можно сказать об авторе этого сообщения и его потенциальном продукте?

Теперь я хотел бы сказать ещё об одной тенденции, наметившейся в последнее время. Чуть выше я упомянул дизассемблер. Вторая тенденция и связана с дизассемблерами и отладчиками. Дело в том, что сейчас для очень многих молодых «программистов» смыслом их профессии стало не создание новых программ и не получение необходимых для этого знаний, а взлом. Неважно что, лишь бы взломать! Снять пароль с программы, взломать сайт, показать всем, какой я «крутой»… Многочисленные руководства по подобным взломам рекомендуют в таких случаях «поставить бряк» на такой-то функции и дождаться «всплытия» отладчика. Да, наверное, за несколько минут ТАКИМ образом можно заставить программу неверно реагировать на введённый пароль или вообще обходить участок кода, обеспечивающий ввод пароля. А теперь вспомните, уважаемый читатель, сколько программ, находящихся на дисках известного происхождения (не будем подобно страусам прятать голову в песок, подавляющее большинство понимает, что это за диски, и использует их), «падает» через несколько минут работы. Почему так происходит? Вспомним «руководства» по защите программ, которые легко можно найти в Интернете. Одной из первых рекомендаций, которую можно прочесть в них, будет рекомендация «размазывать» защиту по всей программе и не реагировать на неверно введённый пароль непосредственно после его ввода. А можно ли понять логику защиты, не понимая того, что происходит в программе и ориентируясь ТОЛЬКО на «всплывающий» отладчик? Наверное, нет. Ни о какой квалификации «крутых хакеров» не приходится говорить… "

(с) Павел Румянцев http://www.techbook.ru/rumyantsev.html


 
Чародей ©   (2006-06-22 17:59) [21]


> Таким образом, средства быстрой разработки используются
> превратились в средства создания неэффективных программ
> неквалифицированными программистами

Чистая правда. Полностью согласен


 
TGX ©   (2006-06-23 17:38) [22]

Уважаемый Игорь Шевченко, вы считаете, что у меня завышена самооценка, возможно и так, но почему вы так решили? Под
словами "А зачем мне это?" я понимал то, что не ставлю своей целью быть крутым программером, для меня
программирование - это всёго лищь способ решения определённой задичи и поэтому учить досканально язык и среду
приграммирования мне не к чему. Вот к примеру у меня появилась необходимость, а под рукой оказалась только delphi...
Не спорю, что по сравнению с другими так называемыми IDE это довольно упрощённая.


 
Юрий Зотов ©   (2006-07-01 23:29) [23]

> TGX ©   (23.06.06 17:38) [22]

Не могу поверить, что человек, понимающий дизассемблированный код, не может за 5 минут написать на ЛЮБОМ языке программу для патча пары байтов в файле по известным смещениям.


 
Fay ©   (2006-07-02 02:51) [24]

> под рукой оказалась только delphi...
http://www.wasm.ru/toollist.php



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.014 c
15-1150355783
Vaitek__
2006-06-15 11:16
2006.07.23
Софт на древний ноутбук


15-1151242133
dmitry99
2006-06-25 17:28
2006.07.23
Новосибирску 113 лет!


5-1135866647
olegz77
2005-12-29 17:30
2006.07.23
Компонент - панель


3-1148103907
VG
2006-05-20 09:45
2006.07.23
Где лежат роли в MS SQL


15-1150778246
Карелин Артем
2006-06-20 08:37
2006.07.23
Чем перекодировать " --- áçâ ªíää¨æ¨-â  -Tã, ¢à-- &#2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский