Сейчас на форуме: zombi-vadim, zds (+4 невидимых)

 eXeL@B —› Программирование —› [Ищу] Аналог ap0x unpack engine с сорцами
Посл.ответ Сообщение

Ранг: 19.7 (новичок), 14thx
Активность: 0.030
Статус: Участник

Создано: 21 августа 2013 23:13
· Личное сообщение · #1

Здравствуйте. Ищу подобие ap0x unpack engine на делфи (можно и с++). Желательно с исходниками, хочется понять, что да как там работает.

P.S. По Debug API перерыл MSDN, статьи Hex'a, некоторые статьи с васма, которые скопипастили себе на блоги какие-то чуваки) Вроде как разобрался, а на практике... zer0...




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

Создано: 21 августа 2013 23:17
· Личное сообщение · #2

Phantom007 пишет:
Вроде как разобрался, а на практике... zer0...


На каком этапе проблемы?

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




Ранг: 19.7 (новичок), 14thx
Активность: 0.030
Статус: Участник

Создано: 21 августа 2013 23:22
· Личное сообщение · #3

hors
Не совсем по DebugAPI, но все же... С дампом процесса. Короче, читаю с ImageBase размером SizeOfImage, записываю в файл. Нужно же как то фиксить это дело, скопипастил с OllyDump и Scylla Rec. функции для фикса, вставил в прогу. Сделал дамп, запускаю... и нифига) Как я понимаю, нужно еще что то с релоками делать, а что.. хз )

говнокод

Code:
  1. void fixSectionHeaderForDump(PIMAGE_SECTION_HEADER oldSecHead, PIMAGE_SECTION_HEADER newSecHead)
  2. {
  3.          memcpy_s(oldSecHead->Name, IMAGE_SIZEOF_SHORT_NAME, newSecHead->Name, IMAGE_SIZEOF_SHORT_NAME);
  4.  
  5.          oldSecHead->Characteristics = newSecHead->Characteristics;
  6.  
  7.          oldSecHead->Misc.VirtualSize = newSecHead->Misc.VirtualSize;
  8.          oldSecHead->VirtualAddress = newSecHead->VirtualAddress;
  9.  
  10.          oldSecHead->SizeOfRawData = newSecHead->Misc.VirtualSize;
  11.          oldSecHead->PointerToRawData = newSecHead->VirtualAddress;
  12. }
  13.  
  14. ...
  15.  
  16.                  //fix dump
  17.                  PIMAGE_DOS_HEADER idosh;
  18.                  PIMAGE_NT_HEADERS ipeh;
  19.                  PIMAGE_SECTION_HEADER isech;
  20.                  DWORD dwFSize, Readed;
  21.                  BYTE *fbuf;
  22.  
  23.                  HANDLE hExeFile = CreateFile(FullExePath, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  24.                  if(hExeFile == INVALID_HANDLE_VALUE)
  25.                  {
  26.                         printf("[!] Cannot open file ;-(");
  27.                  } 
  28.                  else 
  29.                  {
  30.                         dwFSize = GetFileSize(hExeFile, NULL);
  31.                         fbuf = new BYTE[dwFSize];
  32.  
  33.                         if(!ReadFile(hExeFile, fbuf, dwFSize, &Readed, NULL))
  34.                         {
  35.                               printf("[!] Cannot read file ;-(");
  36.                         }
  37.                  }
  38.                  CloseHandle(hExeFile);
  39.  
  40.                  //get pe info
  41.                  idosh = (PIMAGE_DOS_HEADER)fbuf;
  42.                  if(idosh->e_magic != IMAGE_DOS_SIGNATURE)
  43.                  {
  44.                         printf("[!] Bad DOS sibnature");
  45.                  }
  46.  
  47.                  ipeh = (PIMAGE_NT_HEADERS)(fbuf + idosh->e_lfanew);
  48.                  if(ipeh->Signature != IMAGE_NT_SIGNATURE) 
  49.                  {
  50.                         printf("[!] Bad PE sibnature");
  51.                  }
  52.  
  53.                  LPSECTIONINFO lpSectInfo = NULL;
  54.  
  55.                  lpSectInfo = (LPSECTIONINFO)malloc(sizeof(SECTIONINFO) * (ipeh->FileHeader.NumberOfSections+1));
  56.                  ZeroMemory(lpSectInfo, sizeof(SECTIONINFO) * (ipeh->FileHeader.NumberOfSections+1));
  57.                  isech = IMAGE_FIRST_SECTION(ipeh);
  58.                  
  59.                  for(int i = 0; i<(int)ipeh->FileHeader.NumberOfSections; i++)
  60.                  {
  61.                         strcpy((char*)(lpSectInfo+i)->byName, (char*)(isech+i)->Name);
  62.                         (lpSectInfo+i)->dwVSize = (isech+i)->Misc.VirtualSize;
  63.                         (lpSectInfo+i)->dwVOffset = (isech+i)->VirtualAddress;
  64.                         (lpSectInfo+i)->dwRSize = (isech+i)->SizeOfRawData;
  65.                         (lpSectInfo+i)->dwROffset = (isech+i)->PointerToRawData;
  66.                         (lpSectInfo+i)->dwCharacteristics = (isech+i)->Characteristics;
  67.                  }
  68.                  //end - get pe info
  69.                  PIMAGE_DOS_HEADER idosh_;
  70.                  PIMAGE_NT_HEADERS ipeh_;
  71.                  PIMAGE_SECTION_HEADER isech_;
  72.  
  73.                  idosh_ = (PIMAGE_DOS_HEADER)dumpData;
  74.                  if(idosh_->e_magic != IMAGE_DOS_SIGNATURE)
  75.                  {
  76.                         printf("[!] Bad DOS signature [dump]");
  77.                  }
  78.  
  79.                  ipeh_ = (PIMAGE_NT_HEADERS)(dumpData + idosh_->e_lfanew);
  80.                  if(ipeh_->Signature != IMAGE_NT_SIGNATURE)
  81.                  {
  82.                         printf("[!] Bad PE signature [dump]");
  83.                  }
  84.                  
  85.                  ipeh_->FileHeader.NumberOfSections        = ipeh->FileHeader.NumberOfSections;
  86.                  ipeh_->OptionalHeader.ImageBase           = ipeh->OptionalHeader.ImageBase;
  87.                  ipeh_->OptionalHeader.SizeOfImage         = ipeh->OptionalHeader.SizeOfImage;
  88.                  ipeh_->OptionalHeader.BaseOfCode          = ipeh->OptionalHeader.BaseOfCode;
  89.                  ipeh_->OptionalHeader.BaseOfData          = ipeh->OptionalHeader.BaseOfData;
  90.                  ipeh_->OptionalHeader.AddressOfEntryPoint = ipeh->OptionalHeader.AddressOfEntryPoint;
  91.                  
  92.                  isech_ = IMAGE_FIRST_SECTION(ipeh);
  93.                  for(int i = 0; i<(int)ipeh->FileHeader.NumberOfSections; i++)
  94.                  {
  95.                         strcpy((char*)(isech+i)->Name, (char*)(lpSectInfo+i)->byName);
  96.                         (isech_+i)->Misc.VirtualSize = (lpSectInfo+i)->dwVSize;
  97.                         (isech_+i)->VirtualAddress   = (lpSectInfo+i)->dwVOffset;
  98.                         (isech_+i)->SizeOfRawData    = (lpSectInfo+i)->dwRSize;
  99.                         (isech_+i)->PointerToRawData = (lpSectInfo+i)->dwROffset;
  100.                         (isech_+i)->Characteristics  = (lpSectInfo+i)->dwCharacteristics;
  101.                  }
  102.                  //end - fix dump


мб есть у кого то подобные сорцы? О_о




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 21 августа 2013 23:45
· Личное сообщение · #4

Phantom007

--> Пойдёт? <--

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 19.7 (новичок), 14thx
Активность: 0.030
Статус: Участник

Создано: 21 августа 2013 23:48 · Поправил: Phantom007
· Личное сообщение · #5

ARCHANGEL
Видел... жаль, что нет сорцов Хочется понять, как же оно работает) Очень интересует именно дамп процесса (правильный дамп, который запускается хД).

NikolayD
Эх, мне именно сорцы интересны



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 21 августа 2013 23:49
· Личное сообщение · #6

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



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 22 августа 2013 02:33
· Личное сообщение · #7

Phantom007 пишет:
Видел... жаль, что нет сорцов

TitanEngine.cpp не пробовал посмотреть?



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 22 августа 2013 04:19
· Личное сообщение · #8

Phantom007
использование титана
http://code.google.com/p/fuu/downloads/list

и таки да, титан шел в срц!



Ранг: 19.7 (новичок), 14thx
Активность: 0.030
Статус: Участник

Создано: 22 августа 2013 11:00
· Личное сообщение · #9

SReg
sendersu
Спасибо большое, на оф. сайте TitanEngine дается уже без сорцов Скачал с кряклаба, норм. Буду разбирать.



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

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

Phantom007 пишет:
на оф. сайте TitanEngine дается уже без сорцов

это с какого перепугу?! --> Раз <-- и --> два <--. У них на сайте версия вроде поновее будет.



Ранг: 19.7 (новичок), 14thx
Активность: 0.030
Статус: Участник

Создано: 01 сентября 2013 00:05
· Личное сообщение · #11

NikolayD
Упс.. я слепой был, наверное. Спасибо, а то реально раньше папки Sources не видел =_^



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 01 сентября 2013 10:41
· Личное сообщение · #12

NikolayD пишет:
У них на сайте версия вроде поновее будет.

уже года 3 нету обновок




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

Создано: 01 сентября 2013 12:00
· Личное сообщение · #13

sendersu пишет:
уже года 3 нету обновок

Есть. Только не паблик, они же перешли на коммерческую основу.

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


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

Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 01 сентября 2013 12:23
· Личное сообщение · #14

Поновее той что здесь на сайте лежит. У них 2.0.3 и там же в презентациях 3.0 ))


 eXeL@B —› Программирование —› [Ищу] Аналог ap0x unpack engine с сорцами
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати