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

Вниз

Как с помощью Delphi записать asm код по определёному адресу?   Найти похожие ветки 

 
fuoco   (2009-03-11 14:38) [0]

Помогите пожалуйста с вопросом, возможно ли что бы программа записала код asm в определёны адрес другой программы.
К примеру:
10B2502A: jmp 11009029  
Если это возможно подскажите как. А то у меня уже возникает желание перевести код в hex и записать в нужный адрес с помощью WriteProcessMemory(). Но это как то дико если asm код будет большой.
Заранее спасибо.


 
Palladin ©   (2009-03-11 14:42) [1]

фига се )
зачем это нужно? а то у меня возникает желание назвать тебя негодяем...


 
SergeyIT ©   (2009-03-11 14:44) [2]

> Но это как то дико...
Это точное определение!


 
fuoco   (2009-03-11 14:53) [3]

Palladin,
Трайнер для игры пишу. вот хотел уменьшить код с помощью asm, то есть просто немного изменить код самой игры. только понять не могу как этот код туда вписать. Только если это сделать через hex эффект будет обратным.(((


 
fuoco   (2009-03-11 14:53) [4]


> SergeyIT ©   (11.03.09 14:44) [2]
>
> > Но это как то дико...
> Это точное определение!

Не весело твой ответ звучит((


 
Rouse_ ©   (2009-03-11 15:05) [5]

Писать можно только в виде машкода, т.е. вместо jmp 11009029 пишешь 5 байт
E911009029.
Если пишешь из чужого процесса. то через WriteProcessMemory, если внедрился в чужой, можно и напрямую по адресу


 
Эстет   (2009-03-11 15:09) [6]


> Rouse_ ©   (11.03.09 15:05) [5]

Розыч, не надо учить детей плохому.


 
fuoco   (2009-03-11 15:09) [7]


> Rouse_ ©

Спасибо. Почему то мне хотелось верить что возможен другой вариант((


 
fuoco   (2009-03-11 15:11) [8]


> Эстет

Так я же обычный trainer пишу, чего он может плохого натворит.. в конечном результате то я вернулся от к тому с чего начал.


 
Rouse_ ©   (2009-03-11 15:34) [9]


> Розыч, не надо учить детей плохому.

Да это стандартная методика, применяется в основном при написании отладчиков. :) Не вижу ничего зазорного :)

> Почему то мне хотелось верить что возможен другой вариант((

Текстом написать jmp 11009029 нельзя - процессоры еще не научились асм на лету транслировать :)


 
fuoco   (2009-03-11 16:04) [10]

Блин теперь другая проблема.
adr:=$10B2502A;
    buf:=$e9fa3f4e00;
    WriteProcessMemory(HandleWindow, ptr(adr), @buf, 5, write);
    adr:=$11009029;
    buf:=$C7448A041E0000008B44;
    WriteProcessMemory(HandleWindow, ptr(adr), @buf, 10, write);

Constant expression violates subrange bounds
жалуется на buf, я задал переменую вида integer.
есть ли способ увеличить объем.. а то я с трудом представляю как буду вставлять код на 40 б.


 
Игорь Шевченко ©   (2009-03-11 16:13) [11]

мож того, не писать трейнер ?


 
fuoco   (2009-03-11 16:17) [12]

(( жалко, он уже работает. просто хотелось бы уменьшить его объем.. а то весит 800 кб.. чо за трайнер с метр величиной и тремя функциями.(((


 
Кто-то   (2009-03-12 07:02) [13]


> жалуется на buf, я задал переменую вида integer.
>
>


Тоесть ты пытаешься в 4 байта integerа втыкнуть 5 и 10 байт?
Крута!


 
Сергей М. ©   (2009-03-12 09:57) [14]


> fuoco   (11.03.09 16:04) [10]


> WriteProcessMemory(HandleWindow


Какой еще "Window" ? Функция WriteProcessMemory не имеет ни малейшего отношения к окнам.
Ты вообще справку читал, прежде чем лепить код ?


 
Cobalt ©   (2009-03-12 13:08) [15]


> Сергей М. ©   (12.03.09 09:57) [14]

Это, наверно, он переменные экономит ;-)


 
fuoco   (2009-03-12 23:50) [16]


> Кто-то   (12.03.09 07:02) [13]
>
>
> > жалуется на buf, я задал переменую вида integer.
> >
> >
>
>
> Тоесть ты пытаешься в 4 байта integerа втыкнуть 5 и 10 байт?
>
> Крута!

До 8 работает нормально. а вот после 10 не хочет. пытался найти способ. дак вот ни чего  не получилось пока.

> Сергей М. ©   (12.03.09 09:57) [14]
>
>
> > fuoco   (11.03.09 16:04) [10]
>
>
> > WriteProcessMemory(HandleWindow
>
>
> Какой еще "Window" ? Функция WriteProcessMemory не имеет
> ни малейшего отношения к окнам.
> Ты вообще справку читал, прежде чем лепить код ?
>

читал, только это не название окна а ID процесса. все норм, я так обазвал просто.
> Cobalt ©   (12.03.09 13:08) [15]
>
>
> > Сергей М. ©   (12.03.09 09:57) [14]
>
> Это, наверно, он переменные экономит ;-)

именно так. пытаюсь уменьшить код. по этому к асм и обратился


 
Германн ©   (2009-03-13 00:41) [17]


> именно так. пытаюсь уменьшить код. по этому к асм и обратился

А тебе не приходила на ум такая мысль, что не зная очень хорошо асм, ты не сможешь "уменьшить код"? Даже при помощи И-нет форумов.


 
Сергей М. ©   (2009-03-13 21:19) [18]


> читал, только это не название окна а ID процесса


Плохо читал. Читай еще. Это не ID процесса.


 
Сергей М. ©   (2009-03-13 22:05) [19]


> fuoco


Читать этот ликбез до полного "заострения"

http://www.intuit.ru/department/os/osmswin/9/


 
fuoco   (2009-03-14 02:46) [20]

Спасибо все за ответы, способ был найден))) работает прост отлично.


 
Eraser ©   (2009-03-14 05:11) [21]

> [20] fuoco   (14.03.09 02:46)

очень советую изучить труды и примеры товарисча MS-REM"a. найти можно на wasm.ru. как раз там на делфи.



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

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

Наверх





Память: 0.5 MB
Время: 0.005 c
2-1236864240
Zalum
2009-03-12 16:24
2009.04.26
Сохранить image из базы на диск


15-1235483627
Alkid
2009-02-24 16:53
2009.04.26
Заменить notepad.exe на свой редактор


2-1236067326
SKIPtr
2009-03-03 11:02
2009.04.26
Как программно свернуть программу


2-1237296025
LLL
2009-03-17 16:20
2009.04.26
TListView. Показать нужную строку.


2-1236857943
Руслан
2009-03-12 14:39
2009.04.26
что за ошибка в Turbo Delphi 2006 Explorer





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский