Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как с помощью Delphi записать asm код по определёному адресу? [D6, XP]


Страницы:   1 2

fuoco ©   (2009-03-11 14:38:00) 

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


Eraser   (2009-03-14 05:11:00) [1]

> [20] fuoco   (14.03.09 02:46)

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


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

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


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


> fuoco


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

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


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


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


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


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


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

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


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


> Кто-то   (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]
>
> Это, наверно, он переменные экономит ;-)

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


Cobalt   (2009-03-12 13:08:00) [7]


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

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


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


> fuoco   (11.03.09 16:04) [10]


> WriteProcessMemory(Handle Window


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


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


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


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


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

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


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

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


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

Блин теперь другая проблема.
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 б.


Rouse_   (2009-03-11 15:34:00) [13]


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

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

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

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


fuoco   (2009-03-11 15:11:00) [14]


> Эстет

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


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


> Rouse_ ©

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


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


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

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


Rouse_   (2009-03-11 15:05:00) [17]

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


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


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

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


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

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


SergeyIT   (2009-03-11 14:44:00) [20]

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо