Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.11.2011, 22:15
Аватар для GriLab
GriLab GriLab вне форума
Начинающий
 
Регистрация: 26.11.2010
Адрес: Минск
Сообщения: 190
Версия Delphi: XE 15.0.3890
Репутация: 415
По умолчанию Певести код на Delphi

Доброго всем!

Имеется код на С++. Помогите перевести данный код на Delphi:

Код:
DWORD BaseAddr = 0x400000; 

DWORD LASER =	BaseAddr + 0x0056E78;
DWORD NAMETAGS = BaseAddr + 0x02E1CE;

BYTE Laser[] = {0x74, 0x04};
BYTE NameTags[] = {0x75, 0x12};

BYTE NopOne[] = {0x90};

.....

WriteProcessMemory(ProcessHandle, (void*)LASER, &Laser, 2, 0);
WriteProcessMemory(ProcessHandle, (void*)NAMETAGS, &NopOne, 1, 0);

Интересуют выделенные красным фрагменты... Как это на D7?

Заранее спасибо!
Ответить с цитированием
  #2  
Старый 09.11.2011, 22:29
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Но точнее скажет DJ PhoeniX
Код:
const
  BaseAddr : DWORD = $400000; 
  LASER    : DWORD = BaseAddr + $0056E78;
  NAMETAGS : DWORD = BaseAddr + $02E1CE;

  aLaser    : array[0..1] of Byte = ($74, 4);
  aNameTags : array[0..1] of Byte = ($75, $12);
  aNopOne   : Byte = $90;

.....

WriteProcessMemory(ProcessHandle, LASER, @aLaser, 2, 0);
WriteProcessMemory(ProcessHandle, NAMETAGS, @aNopOne, 1, 0);
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 09.11.2011, 22:53
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

aNopOne массив же, хоть и из одного элемента. Хотя по сути, если я правильно помню про массивы в делфи, массив из одного элемента и переменная там хранятся одинаково, если передавать их по указателям. Так что код angvelem должен работать.

Ну и надо проверить, какой тип данных принимает в D* функция WriteProcessMemory. Если Cardinal / DWORD - то всё нормально, если Pointer - соответственно добавить приведение типов.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj

Последний раз редактировалось PhoeniX, 09.11.2011 в 22:56.
Ответить с цитированием
  #4  
Старый 09.11.2011, 23:16
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Точно, Pointer. Думаю ТС с этой малостью справится сам, вроде всё объяснили.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:11.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025