Сейчас на форуме: zds, tyns777, JustLife, 2nd, morgot, Rio, CDK123 (+4 невидимых)

 eXeL@B —› Программирование —› проблема с CADT
Посл.ответ Сообщение


Ранг: 138.1 (ветеран)
Активность: 0.090
Статус: Участник
Одепт ЭкзэЛаба

Создано: 19 января 2009 01:20
· Личное сообщение · #1

Всем доброго времени суток. Столкнулся с проблемой относительно CADT, разобрал пример под делфи, прикрутил к проге, но возникла вот какая проблема, у MS-Rem'a в примере файл грузиться в память через LoadLibraryExA и уже после этого работает с файлом в памяти. В принципе все работает, только из-за того что файл находится в памяти не совпадают адреса. Пробовал делать так:
Code:
  1. Disasm(pointer(AdressOfEntryPoint+ImageBase));

но ничего хорошего из этого не вышло, адрес точки входа совпадает с тем что должен быть, но код который дизасм показывает по этому адреcу кардинально отличается от того который должен быть. У MS-Rem'а код дизасма файла выглядит так:
Code:
  1. var
  2.  hImage: dword;
  3.  nHnd: PImageNtHeaders;
  4. begin
  5.  hImage := LoadLibraryExA(FileToDisasm, 0, DONT_RESOLVE_DLL_REFERENCES);
  6.  if hImage > 0 then
  7.   begin
  8.    nHnd := pointer(hImage + dword(PImageDosHeader(hImage)^._lfanew));
  9.    Disasm(pointer(nHnd^.OptionalHeader.AddressOfEntryPoint + hImage));
  10.    FreeLibrary(hImage);
  11.   end;

Объясните что я делаю не так, как заставить дизасемблер работать коректно, как например в пейде.

P.S. Просьба ногами не пинать, пол бетонный =\




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 19 января 2009 01:24 · Поправил: Hellspawn
· Личное сообщение · #2

а как ты грузишь файл в своей проге?

-----
[nice coder and reverser]





Ранг: 138.1 (ветеран)
Активность: 0.090
Статус: Участник
Одепт ЭкзэЛаба

Создано: 19 января 2009 01:33
· Личное сообщение · #3

Hellspawn пишет:
а как ты грузишь файл в своей проге?

через CreateFile




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 19 января 2009 01:33
· Личное сообщение · #4

Может нужно создать процесс через CreateProcess

-----
Лучше быть одиноким, но свободным © $me





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 19 января 2009 01:46
· Личное сообщение · #5

g-l-u-k пишет:
через CreateFile


дык тебе нада не +ImageBase делать а +hMem (начало проекции)

-----
[nice coder and reverser]




Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 19 января 2009 02:06
· Личное сообщение · #6

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

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





Ранг: 138.1 (ветеран)
Активность: 0.090
Статус: Участник
Одепт ЭкзэЛаба

Создано: 19 января 2009 19:47
· Личное сообщение · #7

Всем спасибо за помощь, особенно одному моему хорошему знакомому. Проблема решена, тему закрываю, если у кого-то появится подобная проблема, то пишите мне в ПМ, помогу решить ^_^


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