Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > чтение данных из сегмента кода


Автор: kb64 4.4.2010, 07:46
Доброго всем дня!
Возник вопрос.
Когда исполняю "чужеродную" программу, в сегменте кода есть строчка

(40000000) mov eax, ebx  <---- адрес вымышлен (:

Мне нужно (до этой строчки) положить регистр ebx  в переменную.
Как это сделать? Спасибо.

П.С. Если не сложно, то последовательность моих действий, и какие ф-ции курить.
П.П.С. Можно ли сделать CreateRemoteThread с адреса выше и потом ассемблерной вставкой asm mov {variable, ebx} занести регистр в переменную?

Автор: GoldFinch 4.4.2010, 09:49
kb64, судя по вашему посту, вы мало что понимаете в вопросе
начните с чтения литературы, например прочитайте хотя бы вот это

Windows Via C/C++ 
by Jeffrey Richter and Christophe Nasarre  
Microsoft Press © 2008 

Chapter 22 - DLL Injection and API Hooking 

Автор: GremlinProg 5.4.2010, 09:20

M
GremlinProg
kb64, мы не обсуждаем взлом и неправомерное использоваание ПО

Автор: EvilsInterrupt 5.4.2010, 17:27
>>kb64, мы не обсуждаем взлом и неправомерное использоваание ПО
а это может быть не взломом, а одим из способов обойти работоспособность малвары, если знаний не хватает удалить малварный комплекс целиком!


kb64, у тебя там точно строчка по этому адресу или инструкция ?

Кажется догадываюсь, у тебя есть инструкция по 0xHHHHHH адресу и ты знаешь что там используется регистр ebx для занесения его значения в другой регистр и тебе хочется знать, что это за значение. Причем программно, так ?

Если да, то есть два способа:
1) поставить сплайсинг т.е. прыжок на свой код, потом выполнит родную и прыгнет за нее
2) поставить хардварныый брякпоинт, для этого специально вызвать багу скажем деление на нуль, поставить бряк и убрать багу, сказав при этом "работай дальше"

вот пример из моего проекта, по разгребанию того что делает порно-блокер:
Код

#include <windows.h>

HANDLE hFile;

/*----------------------------------------------------------------------------*/
extern "C" int __declspec(dllexport) api()
{
  return 0;
}
/*----------------------------------------------------------------------------*/
void __declspec(naked) DumpMemSnapshot()
{
  void* mem;
  DWORD tmp;

  __asm {
    mov ecx,dword ptr[ebp+0x0C]
    and ecx,0xFFFF0000
    mov mem,ecx
    pushad
  }
  
  WriteFile(hFile,mem,0xE0,&tmp,NULL);

  __asm {
    popad
    push 0x00401212
    push 0x00401276
    ret
  }
}
/*----------------------------------------------------------------------------*/
BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD  fdwReason, LPVOID lpReserved )
{
  BYTE* HookMem;
  DWORD HookOffs;

  switch(fdwReason)
  {
    case DLL_PROCESS_ATTACH:
    hFile = CreateFileA("vmmem.dmp",
                GENERIC_WRITE,
                FILE_SHARE_READ,
                NULL,
                CREATE_ALWAYS,
                FILE_ATTRIBUTE_NORMAL,
                0);
    if(hFile==INVALID_HANDLE_VALUE)
      return FALSE;

    /* Set Hook */
    HookOffs = (DWORD)(DumpMemSnapshot) - 0x0040120D - 5;
    HookMem  = (BYTE*)0x0040120D;
    *(DWORD *)&HookMem[1] = HookOffs;
    
    break;
  }
  return TRUE;
}

Автор: GremlinProg 6.4.2010, 09:02
Цитата(EvilsInterrupt @  5.4.2010,  19:27 Найти цитируемый пост)
а это может быть не взломом, а одим из способов обойти работоспособность малвары

смешно, конечно, но я все же сделаю комментарий

EvilsInterrupt, если ты даешь прохожему ключи от дверей своей квартиры, то будь уверен, что пропавшие оттуда ценности не результат того, что ты забыл выключить свет в подъезде

примерно в таком же ключе можно во первых - отнести приведенный код к обходу работы "вируса", во вторых - к просмотру содержимого регистра (видно же, что тут слизывается дамп по адресу в регистре, что к теме не имеет ни какого отношения), а в третьих - программный обход его работы отрывать от формулировки "взлом и неправомерное использоваание ПО"

вот как раз третье, даже из всех благих намерений точно не решается в разделе "C/C++: Системное программирование и WinAPI"

Добавлено через 1 минуту и 55 секунд
хотя, тут даже малварой не пахнет

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)