пятница, 28 октября 2011 г.

перевод с касперского

читая выл от вострога ! там прекрасно решительно все
В общем, мы тут напряглись, посчитали и обалдели. В результате появился апдейт: 70 тысяч
а почему не 100500 миллионов ? доказательств все равно нет никаких
у нас уже год не меняется количество сотрудников в вирлабе
кризис посетил внезапно и найм заморожен ?
У нас уже много лет как на боевом дежурстве … авто-дятлы! Человеческому фактору достаётся только самая интеллектуальная работа – разбирать самые сложные образцы, исследовать ботнеты, следить, чтобы авто-дятлы не фолсили
ололо, автодятел виноват в необнаружении stuxnetа, ога
Сигнал поступает в KSN, где система автоматически вычисляет репутацию файла (веса всех признаков и действий) и принимает решение о детекте...Разумеется, чем больше сообщений об одном и том же файле с разных компьютеров, тем более высокий приоритет обработки и выше точность и критичность вердикта
а мы типа не при делах - 30 миллионов мух хомячков в нашем облаке не могут ошибаться - у твоего файла реальне плохая репутация. Кто сразу вспомнил про цензуру ?

C другой стороны какие богатые возможности к накрутке репутации открываются - читайте в ближайших выпусках сми - ботнет KSN большинством голосов забанил KIS 2012 как fake av, бгг

concurrent_queue::clear bug

все неделю проебвозился с одной крайне муторной багой
Есть например некий объект, использующий concurrent_queue из номоводного Concurrency от vs2010. В деструкторе зовется как положено метод clear. И падает иногда. Очень хитро падает, тварь - только на smp машинах с xp. Под другими (проверялось на w7 & ws2008r2) не падает
Оказалось что subj глючен:

char _Buf[sizeof(_Ty)]; // <-- тут создаем неинициализированный буфер
if (!_Internal_pop_if_present(reinterpret_cast<_Ty*>(_Buf)))


virtual void _Assign_and_destroy_item( void* _Dst, _Page& _Src, size_t _Index )
{
_Ty& _From = _Get_ref(_Src,_Index);
_Destroyer _D(_From);
*static_cast<_Ty*>(_Dst) = _From; // а тут присваиваем неинициализированному объекту по адресу
_Buf. Соотв-но оператор = тошнит
}

лучше всего использовать простой но рабочий код вроде
while(queue.try_pop(dst)){}

Ненависть, ненависть, ненависть

понедельник, 24 октября 2011 г.

bundestrojaner

если кто не читал например:
Особенное возмущение общественности вызвало то, что "бундестроян" может не только скачивать данные с зараженных компьютеров, но и загружать их туда. Таким образом, законность тех или иных доказательств, впоследствии представленных полицией в суд, оказывается сомнительной. При этом следы собственного пребывания в чужом ПК программа умеет стирать
Разработчики антивирусных программ F-Secure и Sophos заявили, что обновляют базы и добавляют защиту от "бундестрояна". Ожидается, что и другие компании последуют их примеру
Надо полагать Спасатели Вселенной™ не добавят, ибо социально близкие, бгг

пятница, 21 октября 2011 г.

RegisterApplicationRecoveryCallback

А вот например начиная с висты появилась такая местами документированная ф-ция
Сохраняет она все что нужно в поле PEB.WerRegistrationData, тип и назначение которого нигде не описано. Но когда это кого останавливало, бгг ?
Краткий просмотр ф-ции WerpRegisterRecovery говорит нам, что поле это присваивается в ф-ции WerpInitPEBStore примерно таким кодом:

  push    4               ; flProtect
  push    3000h           ; flAllocationType
  push    8D0h            ; dwSize
  push    edi             ; lpAddress
  call    ds:__imp__VirtualAlloc@16 ; VirtualAlloc(x,x,x,x)
  mov     [esi+230h], eax ; PEB.WerRegistrationData


размер структуры чуть ниже кладется в ее первый dword:

  mov     dword ptr [eax], 8D0h

Размер зависит от версии windows - под vista (на всех sp) он равен 0x10c8 байт, на w7 & w8 0x8d0 байт
Вся структура впрочем не нужна - интересен только следующий кусочек:

  push    [ebp+pRecoveryCallback]
  call    ds:__imp__RtlEncodeSystemPointer@4 ; RtlEncodeSystemPointer(x)
  mov     [edi+830h], eax

Смещение, по которому хранится закодированный указатель на pRecoveryCallback на разных версиях windows также разное - на vista 0x1030, на w7 & w8 0x830

четверг, 20 октября 2011 г.

ненависти псто

мне тут давеча пришлось сопрягать свою замечательную прогу, написанную на устаревшем (как мне было замечено, бгг) visual c++ 2008 с внешней .dll, написанной на новомодной visual c++ 2010
Оно не сопрягается наглухо и вообще MS кажется полностью забили на обратную совместимость своих компиляторов. Например у них теперь std::string бинарно различаются в разных версиях. Что характерно names mangling при этом не поменялся и оно спокойно себе линкуется, только падает потом во всяких непредсказуемых местах. Коммерческий продукт, ага, хуже gcc.
API design for C++, угу-угу
Ненависть, ненависть, ненависть

суббота, 15 октября 2011 г.

кризис к ним приходит

кризиса вкус всегда настоящий
По моему они конкретно охуели code search все. Где же я теперь буду искать всякое полезное ?

четверг, 13 октября 2011 г.

wincheck rc5

скачать
Изменения делятся на две группы
Лучшая поддержка windows8
  • опция -ndis работает. По крайней мере в синяк не падает, бгг. Показывает всякий треш для FilterBlocks - я не буду доделывать пока хотя бы rc windows8 не выйдет
  • shim handlers показываются
  • windows8 specific RPC интерфейсы опознаются вроде бы все
Поддержка структур LSA
и прочих всяких мест, где теоретически можно поставить перехват и потырить ваши шестисимвольные пароли от порнухи, бгг
  • проверяются всякие таблицы ф-ций в ksecdd.sys. Не все есс-но - только те которые я смог достать
  • обработчики, поставленные с помощью LsaIRegisterPolicyChangeNotificationCallback
  •  всякие таблицы ф-ций, возвращаемые LSA Security Providers. С немалым удивлением обнаружил, что они почти все живут в секции данных и соотв-но их перехват не детектит никто например, бгг
Традиционно были добавлены пофикшены некоторые баги