четверг, 31 марта 2011 г.

IERT_DelayLoadFailureHook

а вот например в запчасти iertutil.dll от нежно любимого IE есть такая крайне любопытная ф-ция.
Она реализует кучу заглушек ф-ций winapi, которые загрузчик delayed import IE либо не смог найти в каком-либо модуле, либо даже и сам модуль не смог загрузить
Хотя смысл ее существования под IE9 например ускользает от меня - он мало того что и так vista only, так еще и наличие в списке модулей ws2_32.dll или ole32.dll делает всю затею полнейшим трешем
Списочек модулей и именованных ф-ций (те модули, которые ordinal only - пусты. Мне лениво потомущо)

письмо Курбского Ивану Грозному

а вот например выгнанный с позором бывший сотрудник гугла пишет открытое песьмо на деревню дедушке Larry Page на тему "как лучше построить коммунизм в отдельно взятом колхозе гугле"
Местами весьма узнаваемо, бгг

среда, 30 марта 2011 г.

писон

меня тут много раз спрашивали почему я испытываю столь стойкое отвращение к данному т.н. "языку программирования", несмотря на его "преимущества", "широкое распространение" и все такое (обычные демагогические аргументы в общем)
Я тут подумал давеча несколько и решил сформулировать (можете отливать в граните):
С людьми, добровольно потерявшими свободу (в том числе свободу форматировать собственные исходники так, как нравится им самим) можно делать все что угодно. Например кошачьи консервы
Вот например ярчайшая иллюстрация. Несомненно нужный и полезный проект сдох, потому что не нашлось достаточного количества людей, способных его поддержать без оглядок на Хозяина
И вот все у них так (c)

hello, world

X-в ехал в электричке на работу. Он работал вирусным аналитиком во всемирно известной антивирусной компании ML. Устроиться туда даже простому студенту второго курса заборостроительной академии права и нанотехнологий было вовсе не сложно - он до сих пор помнил тот пасмурный осенний день, когда услышал объявление в электричке:
Знаешь клавишу anykey ? Умеешь включать компьютер ? Тогда эта работа мечты - для тебя ! У тебя будет шанс сняться в рекламе с Чаком Норрисом и прокатиться на истребителе формулы Ф-1 ! Звони на короткий номер 8-800-666
С тех пор прошло пол-года. Работа оказалась весьма далекой от его радужных мечтаний - тупое долбилово по 12 часов в сутки, зарплаты хватало только на хлеб и кефир. А тут еще этот зачет по древнему мертвому языку программирования, ни одной лекции есс-но Х-в не посетил, потому что из-за работы было некогда. И тут Х-ва осенило - а что если положить сигнатуру на тестовое задание ?
Как ни странно все прошло гладко - выходные тесты не показали false positive. Не веря своему счастью Х-в послал файлик на virus total и с удовлетворением увидел гордый результат - 1/41 - ML - Susp/Behav-1488
На следующей смене результат virus total показывал уже 17/41 - видимо другие антивирусные компании тупо добавили данный сэмпл в свои собственные базы

Еще через месяц курс языка C в академии Х-ва был заменен на курс php

вторник, 29 марта 2011 г.

mcafee жжот

надеюсь все уже видели
  • Cross Site Scripting in download.mcafee.com
  • Information disclosure on www.mcafee.com: gives detail on an internally-used application to measure Web traffic
  • Information disclosure on download.mcafee.com: provides access to the source code for some of the interactive pages on our Web site
Шикарная иллюстрация к

страна должна знать героев-онтевирусников

Дано - простенькая самописная прога, гарантированно чистая, на которую вопит только полоумный F-Secure
Пакуем upxом, засылаем на vt
Результаты воистину удивительны:

воскресенье, 27 марта 2011 г.

летнее время навсегда

говорите ?
а компам кто-нть удосужился об этом рассказать например ? а то ведь они осенью на час назад сами время переведут обратно

пятница, 25 марта 2011 г.

SetTraceCallback

а вот например в advapi32.dll есть такая ф-ция и ее близнец. И как обычно нет механизма перечисления этих обработчиков
Устроено оно внутри очень просто и примитивно - все обработчики лежат в примерно такой структуре:

struct trace_list_item
{
  LIST_ENTRY List;
  GUID       Iid;
  PEVENT_CALLBACK  TraceCallback;
};

Cписок из этих структур живет в EtwpEventCallbackList, причем до vista там лежит указатель на LIST_ENTRY
Доступ к списку синхронизируется через critical section EtwTCCritSect
Обе переменные вытаскиваются простым дизассемблированием SetTraceCallback

вторник, 22 марта 2011 г.

портирование под linux 64bit

а вот например давеча на старости лет угораздило меня портировать некую самопальную либу, изначально написанную под windows, на 64битную бубунту. Должен заметить что это отвратительно (например у них в gcc нету _byteswap_ulong & _lrotl)

После некоторого количества произнесенного мата и страшных заклинаний про мать оно таки собралось, да. Только тесты не проходят. Под windows 32bit & 64bit все работает, так же как и под linux 32bit, что совсем уже подозрительно. А под linux 64 бит - нет
В результате долгих ковыряний в отладчике выяснилось что все дело в размере long. Дело в том что у них все не как у людей принята т.н. LP64 модель - размер long & pointer равны 64 битам, а размер int - 32. Люто-бешенно ненавижу

Ну и как скажите мне правильно писать одновременно под windows & linux и 32 & 64 бит в таком случае ? Или может книжка какая есть умная специально про такие случаи ?

Update: книжка нашлась -Cross-Platform Development in C++: Building Mac OS X, Linux, and Windows Applications. Учитывая что она довольно свежая (декабрь 2007), я надеюсь про 64битные операционки там чо-нть да будет рассказано

воскресенье, 20 марта 2011 г.

модульность-2

а вот например в июле 2010 я взял да и подсчитал количество модулей для всяких разных новомодных языков программирования.
Спустя 8 месяцев можно отследить динамику роста например:
тут должны быть какие-нть выводы, но мне лень например. И да - слухи о смерти delphi несколько преувеличены, ибо между 2.2% и 2.9% у ruby разница весьма незначительна

Hex-Rays for x64

а вот например Ильфак сказал что таки планируется
Для тех кому не видно (там регистрация нужна):
Мар 17, 2011, XXX:
Скажите, пожалуйста, планируется ли редакция декомпилятора для 64-разрядных приложений? Спасибо
Мар 18, 2011, ilfak:
Да, планируется, но сроки (как обычно), неизвестны.
Что-то мне подсказывает что это крайне небыстро будет, учитывая как жестоко 64битные компиляторы обходятся с аргументами функций и локальными переменными

суббота, 19 марта 2011 г.

J source

надеюсь все уже видели
APLщина в сорцах зашкаливает - вот берем например самый первый файл с многозначительным и дико описательным именем a.c и видим примерно такой адовый угар:
 
static A jtmemoput(J jt,I x,I y,A self,A z){A*cv,h,*hv,q;I c,*jv,k,m,*mv,*v;
 RZ(z);
 c=AC(self); h=VAV(self)->h; hv=AAV(h);
 q=hv[0]; mv= AV(q);
 q=hv[1]; jv= AV(q);
 q=hv[2]; cv=AAV(q); m=AN(q);
 if(m<=2**mv){A cc,*cu=cv,jj;I i,*ju=jv,n=m,*u;
  v=ptab; while(m>=*v)++v; m=*v;
  RZ(jj=reshape(v2(m,2L),sc(IMIN))); jv= AV(jj);
  GA(cc,BOX,m,1,0);                  cv=AAV(cc);
  for(i=0,u=ju;i<n;++i,u+=2)if(IMIN!=*u){
   k=HIC(x,y)%m; v=jv+2*k; while(IMIN!=*v){v+=2; if(v==jv+2*m)v=jv;}
   cv[(v-jv)/2]=cu[i]; cu[i]=0; v[0]=u[0]; v[1]=u[1];
  }
  q=hv[1]; AC(q)=1; fa(q); AC(jj)+=c; hv[1]=jj;
  q=hv[2]; AC(q)=1; fa(q); AC(cc)+=c; hv[2]=cc;
 }
 ++*mv;
 k=HIC(x,y)%m; v=jv+2*k; while(IMIN!=*v){v+=2; if(v==jv+2*m)v=jv;}
 cv[(v-jv)/2]=raa(c,z); v[0]=y; v[1]=x; 
 R z;
}
комментарии излишни, бгг
программу на фортране APL можно написать на любом языке !

михалковщина головного мозга

не раз упомянутый здесь персонаж kaspersky (другой - не тот что готов распродать родину японцам, бгг) жжот просто дичайше адовым напалмом:
покажите мне pdf или swf, который зловред и который не определит наш filescan.mcafee.com
отлично-отлично - ссылаться на сайт, требующий авторизацию без кнопки register. Впрочем чо-то я и насчет этого секретного прибора сильно сомневаюсь, учитывая результаты vt.
даже в рамках ЦП, 64 бита уже достаточно популярны. а где для них эмули?
расскажите уже ему про bochs кто-нть
хотя движок хорошо обкатан, но пройдут годы, прежде чем его внедрят в массовые продукты, когда он уже устареет
бгг, "Похоронят меня. И никто не узнает, где могилка моя."

Ну и там далее почти все в духе "на пять метров в могилу закопать". Интересно mcafee имеет психиатров в штате ?

четверг, 17 марта 2011 г.

ie team

Напомнило бессмертное:
- руководитель проекта: Нагенерил Мудрапраграм
- программер: Ражалпраграм Наджави
- тестировщик: Струдомпрассал Вашапраграм
- специалист по тендерам: Ваштонивайдет Всепросиранд
- HR Director: Триразобосрал Своякоманда
- офис менеджер: Нипрастая Лахудра
- юрист: Невижувашазаява
- секретарь: Дасамата Шалава

вторник, 15 марта 2011 г.

ie9

released,так что в ближайшие несколько дней я буду адово занят например
Интересно когда под него появится первый CVE ? Что-то мне подсказывает что не позже двух недель, бгг

Касперский отжыгает

Японцы сообщают, что у них резкий дефицит дозиметров (счётчики Гейгера). Учитывая новости о реакторах в Фукушиме... В России наверняка где-то на складах еще с советско-чернобыльских времён хранятся тонны уже никому не нужных, но вполне работающих приборов. Наверное, можно договориться с МЧС и несколько тонн очередным рейсом туда отправить. С японцами, наверное, можно договориться о приёме и раздаче приборов. Оплату могу взять на себя
пруфлинк
Ну вы понели - на родине уже никому не нужные, доставку могу оплатить, с кем нужно можно договориться. Отчего он не может оплатить покупку этих счетчиков где-нть еще - мне неведомо. И в самом деле - зачем вам счетчики Гейгера ? Лучше у вас отобрать вам быдлу все равно недолго осталось и отдать иностранцам всяким во имя торжества коммунизма например, бгг

Update: как и ожидалось никому не нужные дозиметры довольно скоро дико понадобились самим. А если еще учесть сколько всякого грязного хлама будет оттуда ввезено дорогим расиянчикам...

пятница, 11 марта 2011 г.

Python Tools for Visual Studio

они не шутят между прочим
CPython 2.5 through 3.2
Release To Manufacturing - Fall 2011
неужели мне на старости лет придется таки учить этот высер старого голландского норкомана ?

годный Наброс

паттерны проектирования на php - наслаждайтесь
прозреваю что на perl можно было бы ничуть не хуже оформить - с Class::HideMethods & Proxy::AccessControl например, бгг

вторник, 8 марта 2011 г.

Morpher

а вот бывает встаешь с утра похмеляешься и находишь в этих ваших инторнетах, что высказанная однажды лет этак 10-11 лет назад идея уже реализована и даже вполне коммерчески успешно
Вот например - пермутирующий компилятор с с/с++ под скромным названием morpher
Сделано насколько я понимаю на основе llvm
Цены правда ни разу не гуманны - каждый модуль нужно покупать отдельно и по паре килобаксов, win 64 бита не поддерживается, зато говорят что можно даже драйвера им компилить
Угарно, чо
Было бы дико интересно посмотреть примерчик генерируемого кода

воскресенье, 6 марта 2011 г.

раздел, защищенный gpt

купил сегодня от жадности 2 терабайтник wd
при подключении винда отказалась с ним чего-нть делать, мотивировав тем, что это "раздел, защищенный gpt".
После некоторых плясок с бубном нашелся работающий алгоритм подключения:
  • запускаем diskpart
  • в ее консоли пишем list disk чтобы узнать номер подключаемого диска
  • далее select disk N (смотрите не промахнитесь, бгг)
  • потом говорим clean
  • и последним заклинанием создаем partition: create partition primary
Алгоритм нагло потырен отсюда

Прощёное воскресенье

только в такой дегенеративной религии как православие подобный "праздник" может мирно уживаться с их же собственным библейским принципом "глаз за глаз, зуб за зуб, руку за руку, ногу за ногу" (Книга Исход ,21ая глава, есличо).
я например щетаю что любое зло должно быть тщательно запротоколировано и при первой же возможности люто наказано. Если после этого останется время и желание - можно нассать в обугленный череп, бгг
Анимированная картинка для привлечения внимания:

суббота, 5 марта 2011 г.

user32.dll exports

к иллюстрации предыдущего поста
xp sp2 & xp sp3 одинаковы
также одинаковы vista & vista sp2

пятница, 4 марта 2011 г.

RtlRetrieveNtUserPfn

а вот например начиная с висты адреса таблиц для известной даже детскому юмористическому журналу ксакеп функции NtUserInitializeClientPfnArrays больше не хранятся где-то внутри user32.dll, а доставляются из ntdll.dll с помощью специально обученной функции RtlRetrieveNtUserPfn. Подозреваю это сделано для улучшения поддержки ASLR - ntdll.dll все равно должна грузиться всегда по одинаковому адресу, но для user32.dll после удаления оттуда всех таблиц callbacks это уже необязательно.
Таблиц как известно должно быть три - два указателя на таблицы функций типа PFNCLIENT и последняя - указатель на таблицу типа PFNCLIENTWORKER
Прототип RtlRetrieveNtUserPfn выглядит примерно так:

четверг, 3 марта 2011 г.

роман Руссиновича

А Марк то оказывается теперь пейсатель-жыжыст
спрашивайте с 15 марта в ближайшем киоске, бгг

я так полагаю что новых изданий windows internals от этих ленивых граждан мы больше никогда не дождемся например

среда, 2 марта 2011 г.

неумные вопросы про wireshark

навеяло чтением всяких неумных книжек и вчерашним выходом очередной версии
  1. всем давно известно © что dissectors в wireshark наплодили уже почти на 80Mb исходников. А пришла ли кому безумная идея выдрать из этих диссекторов структуры пакетов и сделать на их основе кучу protocols fuzzers например ?
  2. я смотрю у них есть в epan/dissectors несколько файлов packet-usb*. Вики правда говорит что эта фича linux-only. А собственно почему ? Неужели среди толпы авторов не нашлось человека, способного смастерить bus filter driver для винды ? Или есть более другие ограничения ? URB пакеты вроде везде должны быть одинаковы, соотв-но достаточно один раз написать их парзер
  3. наиболее оголтелая идея - а есть ли примерчики использования wireshark для сниффинга совсем уже экзотических вещей типа IRP или firewire IRB пакетов ? Насколько я понимаю вся инфраструктура для этого в wireshark уже есть - нужно либо свой модуль для wiretap написать, либо подсунуть ему правильный источник пакетов из kernel mode. Или я как обычно понимаю неправильно ?