Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пропатчить массив байт двордом, Средстваи делфи 
V
    Опции темы
maestro2k
Дата 24.11.2007, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 13.4.2006

Репутация: нет
Всего: нет



Есть массив
Код

MyArr: Array [0..9]of byte=(0,0,0,1,1,1,1,0,0,0);

нужно пропатсить его двордом по смещению например 4
на ассемблере это просто.. типа mov   dword[Offset+4],$22222222
Но мне нельзя делать ассеблерную вставку. Как это сделать средствами паскаля?

PM MAIL   Вверх
MetalFan
Дата 24.11.2007, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



както так:
Код

var
  myArr: array [0..9] of Byte;
  lDW: DWORD;
begin
  ZeroMemory( @MyArr, 10 );
  lDW := $22222222;
  Move( lDW, Pointer(Integer(@myArr)+$4)^, 4 );



--------------------
There are always someone smarter than you...
PM MAIL   Вверх
W4FhLF
Дата 24.11.2007, 17:57 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 6
Всего: 121



Код

dword(pointer(dword(@myArr)+4)^) := lDW;



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
maestro2k
Дата 24.11.2007, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 13.4.2006

Репутация: нет
Всего: нет



спс. уже сделал вот так 
Код

CopyMemory(@myArr[$04],@pTab,4);

PM MAIL   Вверх
W4FhLF
Дата 24.11.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 6
Всего: 121



Плохой код. Зачем нужен лишний вызов функции? 

Цитата(W4FhLF @  24.11.2007,  17:57 Найти цитируемый пост)
dword(pointer(dword(@myArr)+4)^) := lDW;


Превращается вот в такой код:

Код

MOV     EAX,22222222  ; lDW
MOV     EDX,ESP ; указатель на myArr
ADD     EDX,4
MOV     DWORD PTR DS:[EDX],EAX


Твой код будет выглядеть следующим образом:

Код

DWORD PTR SS:[ESP+C],22222222
LEA     EDX,DWORD PTR SS:[ESP+C]
LEA     EAX,DWORD PTR SS:[ESP+4]
MOV     ECX,4
CALL    Project1.00407000 ; <<< вызов CopyMemory

00407000:

00407000  /$  92            XCHG    EAX,EDX
00407001  |.  E8 3AC0FFFF   CALL    Project1.00403040
00407006  \.  C3            RETN

00403040:

00403040   $  39D0          CMP     EAX,EDX
00403042   .  74 31         JE      SHORT Project1.00403075
00403044   .  83F9 20       CMP     ECX,20                           ;  Switch (cases 0..20)
00403047   .  77 7C         JA      SHORT Project1.004030C5
00403049   .  83E9 08       SUB     ECX,8
0040304C   .  7F 07         JG      SHORT Project1.00403055
0040304E   .  FF248D 983040>JMP     DWORD PTR DS:[ECX*4+403098]      ;  Project1.00403110

00403110:

00403110   > \8B08          MOV     ECX,DWORD PTR DS:[EAX]
00403112   .  890A          MOV     DWORD PTR DS:[EDX],ECX
00403114   .  C3            RETN



Ну выбор за тобой smile




Это сообщение отредактировал(а) W4FhLF - 24.11.2007, 20:00


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
maestro2k
Дата 25.11.2007, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 13.4.2006

Репутация: нет
Всего: нет



W4FhLF, я с тобой полностью согласен. Тема закрыта
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0696 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.