![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как с помощью Delphi записать asm код по определёному адресу? [D6, XP]
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]> Но это как то дико...
Это точное определение!