Мэйнтейнер проекта GNU Parallel (http://www.gnu.org/software/parallel/), предоставляющего средства для одновременного выполнения типовых работ на большом числе серверов, опубликовал (http://www.fsf.org/blogs/community/who-actually-reads-the-code) на страницах блога фонда СПО результаты эксперимента, проведённого чтобы убедиться, что код открытых проектов действительно изучают сторонние разработчики.
В рамках эксперимента в кодовую базу был добавлен комментарий, содержащий просьбу отправить письмо по определённому адресу, если человек увидит данный текст. Сообщение было зашифровано с использованием шифра ROT13 (https://ru.wikipedia.org/wiki/ROT13) и размещено в самой непримечательной части кода, в которую нет необходимости вносить исправления или улучшения. В итоге, первое письмо пришло через два с половиной месяца - человек не только заметил комментарий, но и сумел его расшифровать.
Спустя два с половиной года эксперимент был повторён, но сообщение было закодировано более изощрённым и нетиповым алгоритмом ROT14. Письмо от разработчика, сумевшего раскодировать второй комментарий, было получено только спустя два года. В итоге сделан вывод, что найдётся люди никак не связанные с разработкой проекта которые изучают и разбирают код проекта, но происходит такое не очень часто (GNU Parallel достаточно специфичный и малоизвестный проект).URL: http://www.fsf.org/blogs/community/who-actually-reads-the-code
Новость: https://www.opennet.ru/opennews/art.shtml?num=42718
Лень в коде копаться, но если там действительно всего лишь комментарий - чудо, что кто-то вообще не поленился с ним возиться. Впрочем, и так чудо - штуковина достаточно экзотическая чтобы я, допустим, впервые о ней узнал из этой новости.
> если там действительно всего лишь комментарийоригинальная формулировка:
> To test this I put in a comment telling people to email me when they read this.Так что да.
Я бы, честно говоря, забил бы на расшифровку, посчитав шуткой "для внутреннего пользования" (благо, такие "комментарии не по делу" - не такая уж и редкость).
Лучше, имхо, был бы "мертвый" код с примерно таким же содержанием.
Да читал я. Опеннетовские новости читать, не глядя на оригинал - себя не уважать. Меня смутило вот что: To make sure the comment would not show up if some one just grepped through the source code I rot13'ed the source code.Но лезть в код и искать этот самый пыльный угол софтины, о которой я никогда даже не слышал мне лень.
> Но лезть в код и искать этот самый пыльный угол софтины, о
> которой я никогда даже не слышал мне лень.Так сразу же в глаза бросается :)
http://git.savannah.gnu.org/cgit/parallel.git/tree/src/paral...} else {
return total_size(@_);
}
}# Guvf vf n grfg gb frr vs bguref ner ernqvat zl pbqr. Cyrnfr rznvy
# pbbxvr@gnatr.qx jura lbh ernq guvfsub my_dump {
# Returns:
# ascii expression of object if Data::Dump(er) is installed
# error code otherwise
my @dump_this = (@_);
Не в комментарии дело. Зашифрованный комментарий тут - это аналог трудно-понимаемого места кода. Чтобы посмотреть, есть ли люди не просто просматривающие код, а именно проверяющие там каждую строку и разбирающие самые мозгодробительные места.
Пример выше. Там комментарий выглядит какой-то лишней фигнёй, абсолютно не являющейся необходимой для понимания кода. По идее, на одного, кто упёрся и стал разбираться, что это за ерунда, должны быть десятки тех, кто не стал этого делать, а читал только код.
Ну, не знаю... Я бы, увидев такой комментарий, предположил бы, что в этом комментарии сокрыта какая-то неочевидная для многих разработчиков информация, которую им полезно знать, но которую лучше скрыть от всего остального мира. Например, где-то в районе комментария скрыт бекдор для внутреннего пользования. Или может быть не бекдор, а некая проблема решена совершенно идиотским образом, по каким-то причинам разработчики избегают более здравого способа решения и напоминают всем кто в теме об этом таким комментарием. А может... Блин, тут можно десятками генерировать конспирологические теории, объясняющие "зашифрованный" комментарий в коде. Это разжигает любопытство в достаточной мере для того, чтобы хотя бы посмотреть повнимательнее на сообщение. А чуть более внимательный взгляд показывает, что в нём находится email, да и разбивка на слова, судя по всему, не пострадала, что наводит на соображение о том, что здесь какой-то совершенно идиотский способ шифрования, который можно обратить за пять минут. Эти соображения поддержат любопытство в достаточной мере, чтобы потратить пять минут на то, чтобы "взломать" шифр.То есть, соотношение 1:10 тех кто разбирался к тем, кто не разбирался -- это резко заниженные оценки. Я бы скорее оценил бы как 1:1. Даже если не иметь никаких предположений о том, что прячется в комментарии, то любопытство, видящее идиотский шифр, не сможет удержаться и не потратить пять минут на взлом.
А если и сможет удержаться, то вечером, когда такой программист ляжет спать, его любопытство съест с потрохами: что ж это такое было? Он не сможет заснуть, пока не взломает шифр. Ну я бы, во всяком случае, не смог бы.
Беглый взгляд видит что что это ROT13. Я думаю очевидно что ни один нормальный "секрет" не будет скрываться такой ерундой.Вообщем ваш коментарии из серии "Джуниор открывает для себя мир: "Привет мир"
> Даже если не иметь никаких предположений о том, что прячется в комментарии, то любопытство, видящее идиотский шифр, не сможет удержаться и не потратить пять минут на взлом.Вы реально имеете дело с чужим кодом, или это просто теоретические рассуждения.
> А если и сможет удержаться, то вечером, когда такой программист ляжет спать, его любопытство съест с потрохами: что ж это такое было? Он не сможет заснуть, пока не взломает шифр. Ну я бы, во всяком случае, не смог бы.
Точно не имеете.
Я бы просто предположил что еще один индус не разобрался с кодировками. Какое там еще любопытство? Что, в жизни больше нечем заняться, кроме как расшифровывать какие-то комменты? Я уж молчу (сказал в другом комментарии), что такого типа коммент невозможно закоммиттить ни в один реально живой проект, его никогда не пропустят.
И кому приспичит сидеть и разбирать комментарий рядом с которым в коммите не прилетело кода. А если бы и прилетело, то проще было бы взять и прочитать код чем пытаться расшифровать билеберду в комментарии.
В любом случае это тест несостоятельный.
Нет смысла возится с какой-то ерундой в комментарии.
В любом нормальном живом опенсорсном проекте такое даже закомиттить не удалось бы. Весь эксперимент попахивает. Идиотизмом. Попробуйте закомиттить нечитаемый коммент в ядро, месу, или еще куда-нибудь, и расскажите нам потом, как далеко вас послали...А если удалось в каком-то полудохлом проекте, то да, можно удивляться, что труп отозвался только через пару месяцев.
И если бы я даже встретил нечитаемый коммент в чужом коде, стал бы я его расшифровывать? Если за это не платят, то для этого нужно быть альтернативно одаренным, как и эти "исследователи"...
Вот теперь проприетарщики могут быть свободны. Ответ на их вопрос - "А что? Кто-то читает исходные коды в опенсорс проектах?" - в этой новости.
Кек. Сначала 2 месяца, потом 2 года. А проект какого объёма (банально сколько строк)? Я вот тоже бывает люблю от нечего делать пройтись по своим проектам, в очередной раз проверить code style и прочие мелочи и косметику. На 5000-7000 строк это делается легко и непринуждённо, и вот такая абракадра легко выявляется визуально.
А ты этот кусок кода видел? Комментарий, вообще не относящийся к делу. Чудо, что кому-то вообще стало не лень эту шараду разгадывать - я бы уж точно списал на глюк редактора и пошёл по коду дальше.
> А ты этот кусок кода видел? Комментарий, вообще не относящийся к делу. Чудо, что кому-то вообще стало не лень эту шараду разгадывать - я бы уж точно списал на глюк редактора и пошёл по коду дальше.В 99.999% случаев я вообще код разбираю только "по требованию", т.е. анализирую только нужные структуры и функции. Поэтому если вдруг все же повезет встретить коментарии, то вряд ли я буду тратить время на разбор непонятно чего. Там же не написано что это ROT13 или ROT14, т.е. надо либо заниматься частотным анализом, либо позаниматься "угадайкой" а-ля "а вдруг повезет". Лично я в угадайки играть терпреть не могу.
Я описал свою ситуацию, а теперь надо подумать какой процент из разбирающих код ведет себя как я.
> Кек. Сначала 2 месяца, потом 2 года.Сначала ROT13, потом ROT14. Он бы еще зашифровал каким-нибудь RC4 и тогда можно было бы ждать все 20 лет.
Да проще всего ему сразу в дурку обратиться, мир точно не обеднеет.
Нет, этот ответ в новостях об Openssl и Shellshock.
ага и ответ звучит: "Нет, не читают"
> ага и ответ звучит: "Нет, не читают"есть более популярные проекты
я, например, подписался на RSS парочки интересных мне
и если будет комит - я, не напрягаясь особо, замечу
и возможно даже схожу по ссылке (если дифф не приходит, а только описание)
и сотня других людей, отслеживающих проект, тоже заметит
и если вдруг там будет что-то подобное в комите - первые сто писем с текстом "Чо за фигня?" придут разработчику в течении часа
возможно уже потом, кто-то особо упоротый, рзгадает это послание
примеры из linux kernel показывают что вы врете..
Врёт, что не сотни, а тысячи разработчиков отслеживают ядро, или, что письма придут в течение пяти минут, а не часа? Примеры из linux kernel как раз такую динамику показывают. Смотрите баталии в LKML, возникающие даже по мелочам.
Какие примеры, например?
Окстись. если уж в этой экзотике что-то нашли, то в более интересных проектах - и подавно.
Мило.Вообще, нужно больше таких экспериментов.
Мне ещё в "до_линуксовые" времена нравился эксперимент когда в лицензионное соглашение вставляли рандомный текст, или, например, обещали скидку в несколько десятков долларов если человек укажет на этот пункт. (Люди, действительно, отзывались, но очень редко. Слишком редко на мой личный взгляд.)
Что значит "редко"?! Человек расколупал _зашифрованный_ комментарий..._зашифрованный_, Корал! Уж поверь на него пришлось минимум пару десятков которые просто смотрели код.
Читали ли вы мой комментарий? Посмотрите, пожалуйста, внимательней, какое событие я оценил на "редко".
Редко читают EULA.
Вы различаете ситуации, когда все должны прочитать и согласиться перед использованием и когда каждый в праве прочитать?
Ну да, в первом случае читают только те, кому совсем нечего делать, во втором - только те, кому это реально нужно. Как не различать.
> Вообще, нужно больше таких экспериментов.Вообще, такие эксперименты регулярно ставят студенты. "Всё равно мой диплом/курсовую никто читать не будет, поэтому я подставлю сюда вот эту ерунду для объёма...". И также регулярно многие из таких попадают, когда оказывается, что кто-нибудь всё же читает.
вспомнились громкие истории с аннулированием дипломов
>> Вообще, нужно больше таких экспериментов.
> Вообще, такие эксперименты регулярно ставят студенты. "Всё равно мой диплом/курсовую никто
> читать не будет, поэтому я подставлю сюда вот эту ерунду для
> объёма...". И также регулярно многие из таких попадают, когда оказывается, что
> кто-нибудь всё же читает.«Тому, кто дочитал до этого места — коньяк».
:)
Спасибо, в Сибирь отправите? )))
EULA читают реже чем код.
Это ж надо не только прочитать, а ещё и коментом корявым заморочиться... эпично...
может у чела чтение кодировок KOI8-R и CP1251 прокачаны до 90lvl, что автоматом дает бонус при прочтении ROT'ов
> может у чела чтение кодировок KOI8-R и CP1251 прокачаны до 90lvl, что
> автоматом дает бонус при прочтении ROT'овКод на перле - т.е. если он опытный перловщик, то возможно даже и не заметил ROT ;)
То есть кто-то должен был озадачиться белебердой в комментарии когда проще прочесть исходный код сам по себе, а не строить предположения что это такое?
Более дурацкого теста придумать было просто нельзя.
cgit не очень удобен, подсветки синтаксиса нету.
наверное потому, что cgit это просто веб-интерфейс для git, а не редактор текстов
> Мэйнтейнер проекта GNU ParallelДа, Оле оригинал в хорошем смысле слова.
Что не отменяет всей глупости этого "исследования" и заставляет волноваться о судьбе проектов GNU, если их контролируют эти люди.Страшно думать, что судьба этих проектов в руках людей, кто даже не понимает, как именно идет разработка открытого кода... Если бы понимали, то и вопроса такого не возникло бы.
Так многие студенты развлекаются. Сам пару интересных строчек в середину пояснительной записки вставил.
>В итоге, первое письмо пришло через два с половиной месяца - человек не только заметил комментарий, но и сумел его расшифровать.А еще можно предположить, что никто не хотел париться с расшифровкой. Серьезно, почему нельзя было написать нормальным текстом?
"ROT13 представляет собой шифр подстановки простой заменой, используемый в интернет-форумах, как средство для сокрытия спойлеров, основных мыслей, решений загадок и оскорбительных материалов от случайного взгляда" (c) wikipediaНадо же в первые слышу про такое применение...
"2 месяца", "2 года"... Они бы ещё AES-256 зашифровали, а ключик на флешку и в океане утопили. Идиоты.Нужно коммент в открытом виде писать, типа:
# If you see this comment send me a letter to robux@mail.ru.
# It's a checking the observation of open source. Thanks in advance.Вот тогда можно говорить об адекватных сроках обнаружения.
А в белиберде "Dg dfg dfgdf" мало кто будет разбираться - откуда я знаю, может у разраба кот там по клаве ходил, или киндер шлёпал по клавишам пока папка мамку тискал на кухне.
> Нужно коммент в открытом виде писать, типа:А ещё лучше руткит вставить прямо в код, и ждать, когда обнаружат.
азаза
> Нужно коммент в открытом виде писать, типа:
>
> # If you see this comment send me a letter to robux@mail.ru.
> # It's a checking the observation of open source. Thanks in advance.Тогда grep-нуть и машина сможет, а смысл в том, чтобы человек заморочился и проанализировал.
Но тогда и выводы о том, что никто не читает, преждевременны. Может, в первый день прочитало 100 человек и просто пропустила дурацкий комментарий.
> Но тогда и выводы о том, что никто не читает, преждевременны. Может,
> в первый день прочитало 100 человек и просто пропустила дурацкий комментарий.Возможно, что эти 100 человек и на корявый код не обратят внимания, хотя да, не факт... Разумнее было бы шифровать не всё сообщение, а только email.
> Нужно коммент в открытом виде писать, типа: If you see this comment send me a letter to robux@mail.ruМне вот было бы западло на такой почтовый сервер что-то отправлять.
Я думаю тут идёт речь о том что: кто-то читает код и вдруг "НАХУА" эта строчка именно тут? какой её смысл ?....К примеру так можно было бы бэкдор впихнуть или ещё что ... (отсюда и проверка найдётся ли кто-то вумный ... кто-то осиливший код и понявший это "НАХУА" )
Бэкдор в каментариях?
Любой комментатор с опёнка знает, что каменты не компилируются и не исполняются.Если уж хочется проверить хакеров на вшивость, то как выше сказали, нужно бэкдоры и руткиты в сам код пихать, а не в комментарии. Чтобы у хакера подбамбливало, когда он видит непонятный для себя исполняемый код.
>Бэкдор в каментариях? Любой комментатор с опёнка знает, что каменты не компилируются и не исполняются.Ничто не мешает это сделать. Открыть файл, найти коммент test... test... test... и выполнить $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see;
>>Бэкдор в каментариях? Любой комментатор с опёнка знает, что каменты не компилируются и не исполняются.
> Ничто не мешает это сделать. Открыть файл, найти коммент test... test... test...
> и выполнить $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see;Тоже допустимо, особенно для проведения специфичных атак =)
Ну да, никто также не мешает сделать rm -rf / под рутом.
Внесу небольшие разъяснения по поводу мной написанного:
абзац 1:
Я говорю о коментах, потому что иногда забавно читать такое : "njq ;jgt e;t cjnyz ktn b ybrnj yt pyftn pfztv jyj...абзац 2:
Я говорил о скрытом выполнении левого алгоритма внутри другого для осуществления нужных действий, или никто не слышал о сих вещах ?p.s.
И да, к вашему сведению я знаю что такое компилятор (как и из чего он состоит) и что такое программирование, потому ваше разъяснение мне о том что коменты не компилируются является неудачным )
> потому ваше разъяснение мне о том что коменты не компилируются является неудачнымправильно ли я понял что вы такой знающий компилятор и мастер программирования утверждаете что коменты компилируются?
1. Пожалуйста покажите мне где я такое утверждал ?
2. Найдите в сети найдите где Я писал что именно коменты И именно компилируются ?
3. Может быть Вы не знаете как выглядит утверждение ?p.s.
Я конечно такой плохой кодер... сырци и демки моих древних проектов не найти уже в сети :D
> Я конечно такой плохой кодер... сырци и демки моих древних проектов не найти уже в сети :DАхаха, так если их не найти, то зачем упоминать? К чему такие непонятные пoнты?
Если бы были нужные проекты, они бы из сети не пропали. Когда, лет 50 назад писал? С Адой Лавлейс не знаком? Может Чарльз Бэббидж? Ничего не говорит?
Так что да, особенно если ты сам зовешь себя "кодер", то да, ты явно плохой он самый.
Это был сарказм, если ты не понял .... Это прямо скажем твои проблемы. Найти мои проекты в сети проще пареной репы. Даже спустя 10 лет после того как я перестал писать под мелкомягкие )
> какой её смысл?Один чувак написал такое на фортране:
a=1785 ! LVB
и надолго свалил
народ долго вгонял что значит сей злобный коментарий
причем единственный в проге
ответ афтара гениальный:
Я вспомнил, что это дата рождения Людвига ВАн Бетховена, и подумал что это забавно
И то лучше чем магическая константа совсем без пояснений.
Спгс болезнь глубокая как г. Мамонта.
> Спгс болезнь глубокая как г. Мамонта.Это как выпустить поросёнков с номерами 1, 2 и 4. Дата-то не правильная.
бэкдор в комментарий. Ага.
> бэкдор в комментарий. Ага.Про перл не скажу, а вот в питоне - вполне можно замутить ;)
А я лично только за, проведите и такой эксперимент тоже.Некоторый смысл в ROT13 может быть в том что неверно написанный код сложно распознать. Беглого прочтения недостаточно как для нахождения некоторых видов ошибок, так и для расшифровки ROT13.
Вывод - АНБ-шникам надо менять код своих закладок раз в два месяца.
Если только они выпустят своё NSASpyTool, установить бесплатно без СМС.
Мне одному кажется что несмотря на ROT13 данный текст был бы отгрепан первым же, кто ищет адреса электронной почты? Напоминает слона, который прячется за деревом.
> Мне одному кажется что несмотря на ROT13 данный текст был бы отгрепан
> первым же, кто ищет адреса электронной почты?Ну, дерзайте. Напомню - это перл :)
parallel-20150622 $ grep -R "[a-z]*@[a-z]*\.[a-z]*" * | grep -v gnu|grep -v example|wc -l
13
parallel-20150622 $ grep -R "[a-z]*@[a-z]*\.[a-z]*" * | grep -v gnu|grep -v example
CREDITS:rici@stackoverflow.com: Documentation on exporting arrays using --env.
CREDITS:jengelh@inai.de: Maintaining GNU Parallel for openSUSE.
install-sh: # Otherwise, the last argument is the destination. Remove it from $@.
missing:# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
Binary file src/parallel_tutorial.pdf matches
Binary file src/parallel.pdf matches
src/sem: ::error("No more processes: cannot run a single job. Something is wrong at @arg.");
src/sem: # @full_path = full paths to @programs. Nothing if not found
src/sem: # qymux oaawuq@fmzsq.pw itqz kag dqmp ftue.
src/parallel: ::error("No more processes: cannot run a single job. Something is wrong at @arg.");
src/parallel: # @full_path = full paths to @programs. Nothing if not found
src/parallel: # qymux oaawuq@fmzsq.pw itqz kag dqmp ftue.
Binary file src/niceload.pdf matches
grep -Pro "\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b" parallel/
> Мне одному кажется что несмотря на ROT13 данный текст был бы отгрепан
> первым же, кто ищет адреса электронной почты? Напоминает слона, который прячется
> за деревом.Ответ простой, такой коммит не прошел бы вообще. Какой там наx греп?
Впрочем, теперь более очевидно, что бОльшая часть комментаторов здесь вообще далека от всего этого, несмотря на все их усилия.
> Ответ простой, такой коммит не прошел бы вообще.а по‐моему, это забавно. я бы смержил, например — люблю безобразия.
Неплохо, мой знакомый так себе девушку искал на странице вк, правда просто перевёл сообщение двоичный вид и потом в хекс ... и немного спустя женился =)
*первая мысль: немного стрёмно всё же будет в плане девушек со знакомыми друзьями-программистами
*после минуты раздумий: хотя норм. При знакомстве всё равно ИМХО ясно будет знает ли девушка binary, или нет.
искать в вк сродни копанию в помойной яме
> искать в вк сродни копанию в помойной ямену вот видишь — выкопал. какое искало — такое и накопало.
> Неплохо, мой знакомый так себе девушку искал на странице вк, правда просто
> перевёл сообщение двоичный вид и потом в хекс ... и немного
> спустя женился =)Если хочешь её фото запостить, переведи в "двоичный вид и потом в хекс", чтобы не так страшно было...
В большом проекте такой комент не прошел бы ревью и зарубился бы еще ботом/удалили бы позже при чистке:)
Так при ревью объяснить своему товарищу (или другому девелоперу) в чём суть. Если проект просто большой, но не проприетарный -- наверняка прокатило бы.
и тогда эта дискуссия будет видна погуглив коммит/change-id..:)
Можно хоть один пример серьезного живого проекта, где такая муть прокатила бы?Если вы не в курсе, а походу так и есть, то такую хрень не дадут закоммиттить никуда. Вообще, никуда. Совсем.
Кто-то с доступом, конечно, может сам закоммиттить без review, но это уже неправильный ход вещей и такое точно отревертят довольно быстро.
Но, конечно, можно выбрать дохлый проект с 0.001 майнтейнеров и потом жаловаться что никто не читает код этого никому не нужного проекта. Это было бы идеальное исследование...
Напоминает классику: в качестве материала для шестерни выбираем дерево, т.к. дипломный проект всё равно никто не читает.
Классика у всех своя. Помню "А валы у нас делают из дуба. Потому, что записку никто не читает"
Аналогично, "сердечник трансформатора выполнен из морёного дуба"
Нормальная с точки зрения ИБ ситуёвина в интырпрайзе. Кто вам всем сказал, что код парсится ВРУЧНУЮ? Для анализа кода уже столько тулзов понаписано. Задача программера - разобрать лишь те участки кода, которые по какой-то причине были акцентированы тулзой. Опять же, достаточно обратить внимание на дифы в новом коде. И если аудит кода производится регулярно, то не такие это уж и серьезные временные затраты. Вопрос цены. Главное, что такая возможность есть по-определению.
как же раздражают плоские коментарии гуманитариев
Гуманитарий прав - слишком большой объем кода. Это не гуманно просто ожидать что люди будут вычитывать код.
> Гуманитарий прав - слишком большой объем кода. Это не гуманно просто ожидать что люди будут вычитывать код.Еще один гуманитарий? Где "слишком большой объем кода"? Вроде речи не шло о конкретных репозиториях. Так где именно, расскажи?
Ядро линукс достаточно большое? Гуманно ли ожидать, что люди будут вычитывать код? Одно могу сказать точно, такого типа комментарий ты туда не пропихнешь при всем желании...
Вы такое в исходниках докера напишите.
Вот недавно такой эксперимент провели в ext4.
багу добавили 3.8 нашли и пофиксили только в 4.2 .. спустя 2 года.
> Вот недавно такой эксперимент провели в ext4.Как там btrfs, не падает? ;-) И пару утилит которые могут её восстановить в случае затирания первых нескольких Гб диска. Со структурой папок и именами файлов, естественно. А то у меня только исходников и документов несколько тысяч.
Это круто!
В сорцах одного приличного нетфлоу-сенсора попадался анекдот про отца и голых женщин на львах, на русском, в коях-восемь
Вот ещё пример:
Пример чего? Что не так?
Там есть ссылка на git Wine. Там показано,что в файле advapi.c,где описаны функции advapi, каким-то боком попала функция ole32,а она должна быть в файле ole32_main.c