Сейчас на форуме: zds, UniSoft (+5 невидимых)

 eXeL@B —› Программирование —› Не работает код для проецирования DLL в память
Посл.ответ Сообщение

Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2013 21:22
· Личное сообщение · #1

Пытаюсь загрузить библиотеку с диска в память по адресу startaddr
Code:
  1. //Goose Fucking :))) ///
  2. libname:='C:\unicows.dll';
  3.      libhandle:= CreateFile(libname,GENERIC_READ or GENERIC_WRITE or GENERIC_EXECUTE,FILE_SHARE_READ or FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
  4.      epicfail:=GetLastError;
  5.      ShowMessage('Возврат ошибки при открытии файла: '+ IntToStr(epicfail));
  6.       libsize:=GetFileSize(libhandle,0);
  7.      epicfail:=GetLastError;
  8.      ShowMessage('Возврат ошибки при получении размера DLL '+ IntToStr(epicfail));
  9.      startaddr:=$03000000;
  10.      VirtualAlloc(Pointer(startaddr),libsize,MEM_COMMIT,PAGE_READWRITE);
  11.      epicfail:=GetLastError;
  12.      ShowMessage('Возврат ошибки при резервировании памяти '+ IntToStr(epicfail));
  13.      LoadLibrary(libname);
  14.      epicfail:=GetLastError;
  15.      ShowMessage('Возврат ошибки при загрузке библиотеки в память '+IntToStr(epicfail));


После GetFileSize сразу выдает ERROR_INVALID_PARAMETER и всё что дальше не работает




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 01 марта 2013 21:26 · Поправил: ZaZa
· Личное сообщение · #2

- Deleted -

-----
One death is a tragedy, one million is a statistic.




Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2013 21:31
· Личное сообщение · #3

GetFileSize(libhandle,nil) выдает тоже самое, т.е. разницы с GetFileSize(libhandle,0) никакой нет.



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 01 марта 2013 21:33
· Личное сообщение · #4

GetFileSize(libname,0) ?




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 01 марта 2013 21:37 · Поправил: ZaZa
· Личное сообщение · #5

- Deleted -

-----
One death is a tragedy, one million is a statistic.




Ранг: 145.8 (ветеран), 191thx
Активность: 0.140.36
Статус: Участник

Создано: 01 марта 2013 21:37 · Поправил: Alchemistry
· Личное сообщение · #6

Что за бред, афтар? Ты выделил память ReadWrite, а потом делаешь LoadLibrary. Какое это вообще имеет отношение друг к другу? Круто че, может к 20 посту до тебя дойдет что не так, свиновод.



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2013 21:38
· Личное сообщение · #7

Вот что выдает:

Vovan666
Нет там хэндл,а не имя




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 01 марта 2013 21:40 · Поправил: ZaZa
· Личное сообщение · #8

- Deleted -

-----
One death is a tragedy, one million is a statistic.




Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2013 21:42
· Личное сообщение · #9

Какой-то глюк непонятный.Файл открылся нормально,но размер не получает.
Может проблема в системе, Windows Server 2008 R2 ?



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2013 21:48
· Личное сообщение · #10

ZaZa
ты случайно не у Бабушкина учился программированию?
Всё правильно у меня написано,вот тут аналогично:
Code:
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3. PicFile : file of Real;
  4. pic : Cardinal;
  5. picsize : Integer;
  6. begin
  7. //-----------------------------------
  8. AssignFile(PicFile, OpenPictureDialog1.FileName);
  9. Reset(PicFile);
  10. //----------------------------------
  11.  
  12. picsize :=GetFileSize(PicFile, NULL);
  13.  
  14. Edit1.Text := FloatToStr(picsize);
  15. CloseFile(PicFile);
  16. end;

http://www.delphisources.ru/forum/showthread.php?t=171




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 01 марта 2013 21:51 · Поправил: ZaZa
· Личное сообщение · #11

- Deleted -

-----
One death is a tragedy, one million is a statistic.





Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

Создано: 01 марта 2013 21:52 · Поправил: hors
· Личное сообщение · #12

Если открывается файл, затем выделяется под него память, то третьим шагом логично бы было читать память из файла в выделенный буффер.

-----
http://ntinfo.biz




Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2013 21:55 · Поправил: Bolero2013
· Личное сообщение · #13

ZaZa
Я тебя что ли спрашиваю? Не знаешь - не лезь со своими глупыми советами.То что ты мне пытаешься объяснить к вопросу тему не имеет никакого отношения. Хоть null туда напиши,хоть nil ,хоть 0 - всё равно выдается INVALID PARAMETER. Как ещё это вдолбить,кувалдой если только?
ZaZa пишет:
Но, вот, сука, получился такой же дебил, как и ты!

В бан малолетнюю школоту.Бластер Лучника испепелит твою жалкую тушку




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 01 марта 2013 21:58
· Личное сообщение · #14

Bolero2013 пишет:
В бан малолетнюю школоту

Полностью согласен! В бан!

-----
One death is a tragedy, one million is a statistic.




Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2013 22:05
· Личное сообщение · #15

hors пишет:
Если открывается файл, затем выделяется под него память, то третьим шагом логично бы было читать память из файла в выделенный буффер.

Ну можно вместо LoadLibrary поставить ReadFile (даже нужно),но размер то библиотеки все равно надо сначала определить. Или через GetFileSize,или читать SizeOfImage заголовка



Ранг: 145.8 (ветеран), 191thx
Активность: 0.140.36
Статус: Участник

Создано: 01 марта 2013 22:06
· Личное сообщение · #16

ZaZa
hors
не кормите тролля.

| Сообщение посчитали полезным: ZaZa

Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2013 22:09
· Личное сообщение · #17

AlchemistryЕсть чо сказать по теме? Нет ,так вали отсюда вместе с ЗаЗадницей. Меньше смраду будет на форуме




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 01 марта 2013 22:13
· Личное сообщение · #18

Bolero2013
Вот посмотри сюда: --> Link <--

-----
One death is a tragedy, one million is a statistic.





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 01 марта 2013 22:16
· Личное сообщение · #19

Это всё местный клоун со старфорсом дрыгается, не обращайте внимания.


 eXeL@B —› Программирование —› Не работает код для проецирования DLL в память
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати