Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.04.26;
Скачать: CL | DM;

Вниз

Как с помощью 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.013 c
15-1235601511
Petr V. Abramov
2009-02-26 01:38
2009.04.26
о политике модерирования


2-1236507266
Tany
2009-03-08 13:14
2009.04.26
double формат в DBGrid


2-1237205386
девушка
2009-03-16 15:09
2009.04.26
Аналог explod из PHP


4-1208500714
Leon.iD
2008-04-18 10:38
2009.04.26
запуск DLL из памяти


2-1236752941
dort12
2009-03-11 09:29
2009.04.26
!!!! Как разместить компоненты на форме программно