Показаны сообщения с ярлыком debugging. Показать все сообщения
Показаны сообщения с ярлыком debugging. Показать все сообщения

понедельник, 8 августа 2011 г.

OllyDbg 2.x теперь с плагинами

Наверное все привыкли, что олька в чем-то не удобно, а в чем-то это самый удобный инструмент. Меня как-то не вставляла ветка 1.x и я ждал когда же будут плагины к 2-ке! Вот! Вот оно свершилось, теперь оно с плагинами ! ;)))

воскресенье, 8 августа 2010 г.

Забывая о методах класса создаваемых по умолчанию

Весьма забавный феномен, если не знать тонкости ;)

class CStr {
public:
  CStr(char * str) {
    if(!str) {
      m_Ch  = new char[1];
      *m_Ch = 0x0;
    }
    else {
      m_Ch = new char[strlen(str)+1];
      strcpy(m_Ch,str);
    }
  }
  ~CStr() { delete(m_Ch); }
  void dump(std::ostream & strm) {
    strm << "\"" << m_Ch << "\"\n";
  }
private:
  char * m_Ch;
};

CStr * s1 = new CStr("First String !!!");
CStr * s2 = new CStr("Second String !!!");

s1->dump(std::cout);
s2->dump(std::cout);

s2 = s1;

s1->dump(std::cout);
s2->dump(std::cout);

delete(s1);

s2->dump(std::cout);
delete(s2);

Думаю этот пример убедил, что нужно быть внимательней при разработке класса ;)

понедельник, 26 июля 2010 г.

Подмена dll зная CLSID КоСервера

Исследуя недавно Windows Messenger, задался вопросом: "а как внедрить в его адресное пространство процесса свою dll ?". Именно об этом эта заметка:

четверг, 3 июня 2010 г.

Использование макросов при разработке на С\С++

Наверное каждый программист разрабатыващий ПО на С\С++ писал макросы сталкивался с некоторой хитростью, которая приводит к интересному и малопонятному багу, при попытке использовать их как функции. Приведу пример, допустим есть макрос возврата минимального числа из двух:

#define M_MIN(A,B) ( ((A) < (B)) ? (A) : (B) )

При попытке исползования в следующем коде:

int a = 2, b = 4;
int c = M_MIN(a++, b);

мы почему-то получаем не то что ожидаем! Это связано с тем что подставится в проверку (2++) < 4 , и потом еще раз при подстановке наименьшего ? (3++) , то есть 4 !

Из этого вытекает только одно правило: не использовать макросы, а если без них никак, то не использовать их как функции!!!!

четверг, 27 мая 2010 г.

Дружба VirtualKD и WinXP SP3 внутри VMware

Сегодня удалось подружить VirtualKD и WinXP SP3 поставленную в качестве гостевой системы внутри VMware.

Сначала коротко о том, что же такое VirtualKD ?
Если вы перейдете по следующей ссылке, то вы можете прочесть все сами, но приведу слова тут:

In English:
Welcome to the VirtualKD homepage. This project allows speeding up (up to 45x) Windows kernel module debugging using VMWare and VirtualBox virtual machines. If you have ever noticed that the standard debugging over virtual COM port is irritatingly slow, this software is for you!

In Russian(от меня)
Добро пожаловать на домашнюю страничку VirtualKD. Это проект позволяет провысить скорость(до 45x) отладки модулей ядра Windows используя виртуальные машины VMware и VirtualBox . Если Вы когда-либо замечали что стандартная отладка через виртуальный COM порт раздражающе медленная, то это программное обеспечение для Вас!

Думаю теперь вам цель этого проекта понятно и можно приступить к описанию установки, настройки.

1) Установить собственно Windows внутрь VMware
2) Каким-либо способом передать архив дистрибутива внутрь гостевой системы
3) Запустить "target\vminstall.exe" внутри этой гостевой системы
4) Запустить на хостовой, т.е. там где стоит VMware файл "virtualkd\vmmon.exe"
5) Через кнопку "Debugger path" указать путь к отладчику в проге vmmon.exe
6) Перезагрузить гостевую с выбором варианта отладочной загрузки системы
7) После выбора варианта загрузки, система остановится и не будет грузиться. Это нормально!!!
Для этого в загруженном отладчике нужно сказать "ГОУ", для WinDBG это команда "g" в его командной строке и возможно придется два раза, пока не появится "debugging running"
8) Система загрузилась

Теперь, предпочитаю "сохраниться" ;))) Для этого надо перейти в WinDBG и выбрать в верхнем меню Debug->break. После этого гостевая "замрет" и можно нажать кнопку "save snapshot". В комантариях к снэпшоту укажите что хотите не забыть в будущем, чтобы потом не тупить )