суббота, 30 апреля 2011 г.

ололо

нас критикуют на очередном клоне лже-двача
бурление кала впрочем не жжет и подозрительно быстро закончилось. Что наводит на мысль о том что проснулись родители всемирно известных экспертов, и рыгнув луком и помочившись ацетоном, увезли непутевых чад на дачу с целью бесчеловечной эксплуатации детского труда для копания 6 соток под посадки мерзлой репы озимой конопли например, бгг
Утащил в цитатник фразу "а ты попробуй запусти свой вижуал-студио в telnet".

четверг, 28 апреля 2011 г.

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

закончил например сегодня порт одного мелкого проекта - либа для парзинга некоторых форматов файлов, большей частью на C++, размером около 20 kloc. Изначально она была написана под windows с поддержкой 32 и 64 бит.

Процесс портирования был адово отвратен. У меня сложилось совершенно четкое ощущение что разработчика под linux рассматривают как врага и относятся к нему соотв-но
Отладчик gdb - уровня debug.com, добро пожаловать в старые недобрые восьмидесятые.
IDE нет в принципе (потому что доступ к серверу linux только через ssh). vim & emacs - дичайшая упячка, как этим убожеством можно пользоваться в здравом уме - я не могу себе вообразить.
make по сравнению с нормальной visual studio с ее возможностью легко и просто прописать dependecies - каменный век.
gcc весьма своеобразно поддерживает стандарт C++ - например для всех template specialized методов пришлось явно прописывать template <>. Visual C++ например ничего такого не требовал. Пришлось написать perl script для вставки нужного
Да чо там templates - у них в заголовочных файлах даже не нашлось готовых min, max & _countof !
Дальше - я например не представляю себе как писать более-менее безопасные программы без SEH & security enhanced ф-ций типа strcpy_s. Угадайте с трех раз есть ли они под этой самой передовой в мире os ?
Меньше всего проблем как ни странно возникло с некоторым количеством кода, написанного для скорости на asmе - видимо потому что в обоих os использовался yasm

Осталось еще прикрутить это дело к perlу и ноги моей в вашем отсталом linuxе не будет я надеюсь никогда

среда, 27 апреля 2011 г.

как троллить на собеседованиях

воображаемое собеседование злобного тролля Ричарда Фейнмана в microsoft (со всеми их дебильными задачками про 3 лампочки):
Interviewer, exasperated: You could turn two switches on and one off. Then wait a minute, and turn the third switch off. When you go to the other room, the lamp controlled by the first switch will be on, the lamp controlled by the second switch will be off and cold, and the lamp controlled by the third switch will be off and hot. That seems a lot easier than all this rigamarole about disassembling the switches or building custom equipment.
RPF: How am I to measure the heat of the lamps without special equipment? You just said that I couldn't reach them.
Interviewer: Um. Yes, I suppose I did say that.
RPF: I can see a number of additional problems with your heuristic. You haven't specified how far it is between the rooms, but have several times implied that it is a considerable distance; I can't see the light from the switch room, I can't align my mirrors and I can't bring a conductor that long for continuity testing all imply considerable distance between the switch room and the light room. The time it takes me to get from one room to another can give the third lamp time to cool. The third lamp might not be very hot to begin with; if the fixtures are fluorescent bulbs, as they are in this building, or modern LED bulbs, then their heat output is far lower than an incandescent bulb. We also haven't specified where this scenario takes place. If it is in a very hot climate, like Los Alamos in the summer, both de-energized lamps could reasonably be warm to the touch, and if it is in Alaska in the winter in an uninsulated room then both could reasonably be cool by the time I get there. Your proposed heuristic depends upon a number of conditions that were not given in the problem. And it is in general a bad idea to test whether something is extremely hot by touching it.
Interviewer: Well I think that concludes this portion of the interview. Before we let you go for the day do you have any questions for me about this company, this team or the job?
RPF: Yes. When you build software algorithms, do you build systems using well-established software engineering principles to produce software that conforms to industry standards and practices?
Interviewer: Of course.
RPF: And do you use software analysis tools, like profilers, debuggers, theorem provers, and so on, to facilitate detection and diagnosis of flaws?
Interviewer: Yes, again, of course we do.
RPF: Then why would you ask an interview question that tests my willingness to abandon industry-standard, well-established techniques that use common electrician's tools to determine continuity of a portion of an electrical system? And why is the solution you were clearly driving me towards one which takes advantage of an undocumented and unreliable epiphenomenon? Does your team usually write code whose correctness relies upon undocumented and unreliable correlations, correlations whose magnitudes can vary widely as a result of implementation details?
 ржал как подорванный например

властелин колец

а вот например читаю я давеча от нечего делать книжку Understanding the Linux Virtual Memory Manager и от следующей цитаты медленно выпадаю в осадок:
Patches are managed through what could be loosely called a set of rings with Linus in the very middle having the final say on what gets accepted into the main tree.Linus,with rare exceptions,accepts patches only from who he refers to as his “lieutenants”, a group of around 10 people who he trusts to “feed” him correct code.
Это же дико очевидно - властелин колец и его 9 верных назгулов !
Арест Ганса Рейзера, бгг:

вторник, 26 апреля 2011 г.

наверняка баян

будучи конченным алкоголиком и злобным придурком слоупоком, я сто пудово являюсь единственным человеком, не читавшим блог tarasc0 и даже тащемта не имеющим его offline копии.
В связи с чем имею вопрос - а кто-нть уже описал например способ извлечения из TDI списочка PnpHandlerClientList и структур, которые в нем хранятся ?
Вот допустим мой многофункциональный комбайн "жни все подряд - потом разберемся" научился сегодня выдавать примерно вот такое:

TDI PnP clients: 7
[0]: version 2
 PnPPowerHandler:   00000000
 BindHandler:       00690070 <-- wtf ?
 UnBindHandler:     F24FE8CA \SystemRoot\system32\DRIVERS\tcpip.sys
 AddAddressHandler: F251E8D0 \SystemRoot\system32\DRIVERS\tcpip.sys
 DelAddressHandler: 00000000
[1]: version 2 NetBt
 PnPPowerHandler:   F248DD97 \SystemRoot\system32\DRIVERS\netbt.sys
 BindHandler:       00000000
 UnBindHandler:     F248DEA0 \SystemRoot\system32\DRIVERS\netbt.sys
 AddAddressHandler: F24931B4 \SystemRoot\system32\DRIVERS\netbt.sys
 DelAddressHandler: F249322D \SystemRoot\system32\DRIVERS\netbt.sys
[2]: version 2 Netbios
 PnPPowerHandler:   F53D1158 \SystemRoot\system32\DRIVERS\netbios.sys
 BindHandler:       00000070 <-- wtf ?
 UnBindHandler:     00000000
 AddAddressHandler: 00000000
 DelAddressHandler: F53D056A \SystemRoot\system32\DRIVERS\netbios.sys
[3]: version 2 AFD
 PnPPowerHandler:   00000000
 BindHandler:       E1E9A550 <-- wtf ?
 UnBindHandler:     F24531A4 \SystemRoot\System32\drivers\afd.sys
 AddAddressHandler: F24567AC \SystemRoot\System32\drivers\afd.sys
 DelAddressHandler: F24560FD \SystemRoot\System32\drivers\afd.sys
[4]: version 2 LanmanWorkStation
 PnPPowerHandler:   EF90D20D \SystemRoot\system32\DRIVERS\mrxsmb.sys
 BindHandler:       00450054 <-- wtf ?
 UnBindHandler:     00000000
 AddAddressHandler: 00000000
 DelAddressHandler: EF8EF97D \SystemRoot\system32\DRIVERS\mrxsmb.sys
[5]: version 720002 WebClient
 PnPPowerHandler:   EB5EDA84 \SystemRoot\system32\DRIVERS\mrxdav.sys
 BindHandler:       006E0069 <-- wtf ?
 UnBindHandler:     00000000
 AddAddressHandler: 00000000
 DelAddressHandler: 00000000
[6]: version 2 LanManServer
 PnPPowerHandler:   EB41B237 \SystemRoot\system32\DRIVERS\srv.sys
 BindHandler:       863DF6A8 <-- wtf ?
 UnBindHandler:     00000000
 AddAddressHandler: 00000000
 DelAddressHandler: EB40B587 \SystemRoot\system32\DRIVERS\srv.sys


Может я изобретаю очередной трехколесный велосипед с квадратными колесами например ?

понедельник, 25 апреля 2011 г.

Secure Programming with Static Analysis

а вот например дочитал давеча subj
Весьма попсовая книжка, посвященная скрытой рекламе совершенно определенного продукта (которому посвящена целиком четвертая часть книги например). Ничего особо нового я лично из нее не узнал (кроме пожалуй XPath injections). Лучше бы про coverity кто-нть книжку сочинил
Зато дико угарно было посмотреть сайты рекламируемого продукта и coverity
  • оба старательно перечисляют поддерживаемые языки, операционные системы и версии компиляторов, но обходят глухим молчанием стоимость продуктов
  • оба клянутся здоровьем матери что поддерживают создание пользовательских правил, но не менее старательно не упоминают про поддержку драйверов
Последнему обстоятельству впрочем есть весьма простое объяснение - дело в том что никакими custom rules невозможно описать, что некая функция (или даже ее часть) работают на повышенном уровне IRQL и потому должны избегать например обращений к paged memory (и еще много чего они должны избегать). Кажется из инструментов static code analysis об этом простом факте не задумывается ни один

религиозное мракобесие

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

четверг, 21 апреля 2011 г.

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

в связи с - увидим ли мы вскорости обвинения nod32 в похищении людей и все такое ?
прям живо представляю себе на антималваре какой-нть плохого качества скан найма люберецкого коллекторского агенства, бгг
Update
22 апреля - Преступники освободили сына Касперского
24 апреля - ГУВД: Сын Е.Касперского освобожден только сегодня
такими темпами к новому году Е.В. может обзавестись примерно 126 сыновьями

среда, 20 апреля 2011 г.

ole32.dll exports

а вот например поскольку тут уже упоминался этот модуль, то было бы недурно иметь его экспортируемые символы под всякими разными версиями windows
vista & vista sp2 одинаковы, так же как и xp sp2 & xp sp3

понедельник, 18 апреля 2011 г.

shim handlers

а вот например гражданин TSS просветил меня вчера насчет всяких малопонятных хуков в отдельных процессах - оказывается это был shim engine
Соотв-но моя злобная паранойя потребовала предпринять какие-нть действия и например найти в недрах ntdll.dll следы деятельности shim модуля

Следы впрочем находятся не очень сложно - берем экспортируемую (начиная с xp) ф-цию LdrInitShimEngineDynamic, проходим по всему ее пути исполнения, выкидывая вызовы LdrLockLoaderLock & LdrUnlockLoaderLock (в checked builds также RtlAssert). Единственный оставшимся неидентифицированным вызов ф-ции будет LdrpGetShimEngineInterface

В самой же LdrpGetShimEngineInterface все достаточно просто - через пару ф-ций RtlInitString (экспортируемую) и LdrpGetProcedureAddress (неэкспортируемую) находятся различные callbacks из модуля shim и через RtlEncodeSystemPointer сохраняются в глобальных переменных в секции .data
HMODULE на сам модуль shim сохраняется в глобальной же переменной g_pShimEngineModule
Единственная сложность во всей этой процедуре - что число callbacks отличается на разных версиях windows

воскресенье, 17 апреля 2011 г.

индекс нечитаемости

а вот например математик и рыболовный траулер откопал чюдесное
Товарищ, помни - не гадя в комментах ты увеличиваешь чорную красную дыру в сердце мордора, бгг

паранойя

будучи злобным и недоверчивым параноиком я периодически проверяю всякое на своих компах, и вот давеча при инсталляции под 32битной windows7 очередной Нужной Хрени узрел чудное - кучу iat hijaqing в процессе C:\Windows\System32\msiexec.exe
Причем virustotal на эти C:\windows\AppPatch\AcGenral.DLL & C:\windows\system32\apphelp.dll ничего не говорит.
Зачем они это делают ? Как они попали в адресное пространство msiexec.exe ? Что это вообще за директория AppPatch ?
Полный лог прилагается

суббота, 16 апреля 2011 г.

Начала православной арифметики

наслаждайтесь
а топологию вашу запретить вместе с линуксом !

Update: в списке "Те, кто смотрел эту страницу, интересовались" тоже адский жыр - Как родить бога
насколько я помню чтобы родить бога нужно чтобы
  1. мамашу звали Машей
  2. залетела она без повреждения плевы. Такие случаи впрочем науке известны - король зулусов Чака например
боги впрочем бывают всякие разные, бгг

I_RpcInitNdrImports

а вот например в windows7 появилась в rpcrt4 такая любопытная ф-ция
Любопытна она тем, что вместе с I_RpcInitImports, I_RpcInitFwImports & I_RpcInitHttpImports возвращает некие таблицы с указателями на функции, причем в отличие от перечисленных возвращаемая таблица NdrPrivateCallbackTable расположена в секции .data, что делает ее хорошим кандидатом для установки разнообразных беспалевных хуков

Вызывается I_RpcInitNdrImports из ровно одного модуля - ole32.dll - в ф-ции NdrOleInitializeImports, которая в свою очередь вызывается из DllMain & NdrOleInitializeExtension

Возвращаемая структура выглядит примерно так (мне лениво прототипы функций выяснять, потому они описаны как PBYTE):

вторник, 12 апреля 2011 г.

rpc extensions

А вот например начиная с w7 rpcrt4.dll (и RpcEpMap.dll) при инициализации проверяют ключики реестра HKLM Software\Microsoft\Rpc\Extensions
И соотв-но строковые значения в этом ключе используются для загрузки .dll и последующего вызова из той .dll ф-ции I_RpcExtInitializeExtensionPoint (кроме ole32.dll)
Насколько я понял новые extensions туда вписать не получится, но например у уже имеющихся вполне спокойно можно изменить имя .dll и таким образом обеспечить inject во все процессы, использующие rpc
Значения по умолчанию:
  • NdrOleExtDll - Ole32.dll, точка входа NdrOleInitializeExtension
  • RemoteRpcDll - RpcRtRemote.dll
  • TrustRidDll - logoncli.dll

воскресенье, 10 апреля 2011 г.

настраивал router

давеча - d-link dir-300
вот казалось бы - чего проще - один шнурок суем в комп + раздаем wi-fi, никаких тебе джамперов и irq даже не надо выставлять ручками
а вот хер

Начнем с того что прога на прилагаемом cd позволяет выставить настройки всего один (!) раз. Повторные запуски приводят к выбору - будем новый router ставить вместо старого или для одновременной работы со старым ? Причем почему-то в результате настроек у меня слетел default ip. Пришлось читать доку - оказывается чтобы сделать ему reset недостаточно однократного тычка скрепкой - нужно давить 10 секунд. Интуитивно понятно, ага

Дальше - на инструкции, прилагаемой в коробке, написано - default login: Admin. И не пускает. Читаем доку - в доке default login: admin. В греческой версии и вовсе Admin default. Тоже кстати не пускает, бгг

В проге конфигурации ссылка support отправляет на их сайт. А интернета нет. Видимо такой use-case рассматривался как невероятно несчастливое стечение обстоятельств, бгг

Девайс вернут в заводские настройки, прога установки не работает, заходим на 192.168.0.1, вколачиваем все что нужно. Вроде взлетело - в результате инторнета на компе нету. Пришлось целых 3 (!) раза звонить в isp, выяснять чего же им внезапно не нравится. Оказалось что у них привязка к mac конечного устройства на шнурке. Зашибись, враги не пройдут

Итого угробил 4 часа.

суббота, 9 апреля 2011 г.

book needed

А вот например на старости лет возникла нужда освежить знания по теории графов и прочих недобитых князьев
Поскольку предмет тяжек и времени не особо дофига на чтение - нужна ровно одна тонкая книжка, в которой были бы описаны совершенно конкретные алгоритмы потокового анализа и преобразования программ например
Из ваших интернетов нашел следующие варианты:
  1. "Graph Theory with Applications" J.A.Bondy & U.S.R.Murty
  2. "Approximation Algorithms for NP-Hard Problems" D.S.Hochbaum
  3. на русском - В. Н. Касьянов, В. А. Евстигнеев "Графы в программировании: обработка, визуализация и применение". Но они какой-то совершенно упячечный язык для описания алгоритмов используют
Какая из ? Или есть более другие варианты ?

Windows 7 device driver

дочитал например давеча subj (если верить shelfari - стал первым читателем, бгг).
Книжка про kmdf & umdf, причем для umdf даже примерчиков законченных не дается.
С одной стороны книжка весьма попсовая, ибо просто прочитав ее совершенно невозможно выучиться писать дрова с использованием kmdf например
С другой стороны - ни разу не для начального уровня подготовки. Например совершенно обязательно знание устройства ядра, irql, irp и все такое (хотя kmdf и делает старательно вид что этих вещей не существует). Кроме того совершенно нелишними будут при чтении знания об устройстве wdm драйверов и их переходы в разные состояния
В качестве бонуса прилагается весьма обстоятельный список ссылок по разным темам

пятница, 1 апреля 2011 г.

замутил опрос

как однако сложно в вашем блогспоте голосовалку сделать
есс-но сам я голосовал за п3, бгг
Тем не менее дичайше поражают меня поисковые запросы, по которым всякие разные сюда приходят. Вот например избранные перлы за последнюю неделю:
  • "детский юмористический журнал" ксакеп - сто пудово вся редакция детского юмористического журнала ксакеп погрязла в весенней депрессии, бгг
  • ida pro 6.0 скачать бесплатно - пшел вон отсюда
  • алкоголик и злобный придурок - о да детка, ты нашла нужный адрес, бгг
  • глумливо проигнорировано - всегда готов
Остальное к несчастью более-менее по делу
Update:
результаты опроса:
  • ты бездарен и не пиши сюда больше - 2. один из них очевидно sww, бгг
  • ты бездарен но пиши дальше - 21. Откуда столько повылазило, если у меня читателей всего 10 штук ?
  • мне насрать - 5
  • этот опрос сосет - 5
Здравый смысл в очередной раз был разгромлен, унижен и растоптан, бгг