Cmake претендует на скриптовый язык, из-за ограничения c++ и не только. Но какой он корявый, это просто ужас. Особенно все эти $<> распаковки. Надо было бы что-нибудь на cmake в The International Obfuscated C Code Contest запостить. :)
Я боюсь что stacktrace в том виде как он сейчас сделан, не работает для C++-C# совместимых stacktraceов.
Я попытался добавить определение call stackа с учетом C# / C++/call конверсий — мой собственный форк: github.com/tapika/stacktrace
Но определение C# call stacka в symbol naming по прежднему отсутствует.
FYI:
Meanwhile — I've tried another library — Microsoft.Diagnostics.Runtime — github.com/microsoft/clrmd, written in C#,
and what I have tested — boost::stacktrace can return native c++ symbols (on windows) and clrmd works with managed stack frames.
Basically if I want to recollect full stack trace — best way is to use combined runtime — potentially parts from C++ (boost stack trace or similar)
and potentially parts from C# — e.g. clrmd fork for example.
…
What I've briefly checked clrmd — I like that almost all windows api are available — even for querying IDebugSymbols,
so one approach is to write everything in C#. I would prefer to have clean C++ code and clean C# code side by side — just in case
if we identify some of bottlenecks in some environment.
…
Думаю пока официальной поддержки Майкрософта нет, то и без толку говорить о стандартизации…
Intel ME — мне может кто нибуть объяснить зачем оно нужно?
Ну т.е. я понимаю что это помощь администраторам сети, можно установить на комьютер что-нибуть — с этим не поспоришь — удобно и удаленно все делает.
На wiki (https://en.wikipedia.org/wiki/Intel_Management_Engine) — «was intended to be available only in machines produced for specific purchasers like the US government» — т.е. все комьютеры FBI в Америке защищены от удаленного доступа. Да, удобно тоже. Странно что там тоже есть админы, и странно что им ничего устанавливать не надо. Ну впрочем тут может быть вопрос насколько FBI админы доверяют Intel ME технологиям. Не доверяют — ну и отключили. Закопано, забыло.
Но кроме этого я думаю что Intel сам может иметь доступ фактически на все компьютеры что он производит. И если надо, то этим доступом можно делиться. Ну т.е. надо поймать террористов, Intel дает привилегии FBI, они ловят террористов, их сажают. Все рады и счастливы.
Но далее начинатся фигня. Если надо посмотреть что там росскийские политики / компании задумали, залогинился на их комьютер, скачал все файлы, отсортировал по папкам. Ну и начинаешь анти деятельность простив России, да и вообще на мировом уровне.
Но ещё интереснее если хакеры найдут очередную Zero Day уязвимость. Залогинился на миллион компьютеров, encrypt все жесткие диски. Если денег на биткойн не перечислишь — диск не верну.
Короче все это попахивает очень даже политической игрой, о который ещё не кто не пронюхал. Или может кто и понял что оно и зачем, но думаю не до конца. и какая информация, куда течет от Intel ME наверное никто даже не знает и не догадывается.
У меня на одном компе windows 7 и по каместь даже не хотел грайдить под 10ку — для меня ничего хорошего не несло. Последнее время замечал что кое что не работает под windows 7. Линукс длч меня всю жизнь был как что то что хочется попробовать, пробовал, наконфигурировал досыта — но там есть и плюсы и минусы. Кстати под win10 уже эмуляция линукс имеется. Линукс нравится тем что легкий и шустрый. Боюсь конфигурировать если это bash, да и вообще много интересных багов можно найти если искать. Не знаю насчёт будущего. Думается что микрософт допилит .net core и он будет везде, даже в линуксе. С играми сложнее, там конкрено портирумыми апи надо владеть. Так что наверное фокус на windows по прежднему.
Я повесил hook на __CxxFrameHandler3, но он работает только с native code exception, но не с managed code exception, так что пока что отключил все относящееся к 32битному коду. Пока оставлю как есть потом может вернусь к этому коду.
Вообще 32/64 отличаются в корне друг от друга.
Но то что я дебагирровал до данного момента — подвисание дебаггера, легкое или конкретное — это нормально. Отсутствие полного call stacka в дабаггере, (нужно пользовать process hacker), отличие работы аппликации с дебаггером или без него — это все нормально.
несраватывание debug breakpointов…
Ощущение что идешь в лес по дрова… :-) При чем дров больше чем самого леса…
> Some of our team's past efforts with C/C++ exception handling interop demonstrated this can > be extremely complicated and the amount of effort it took us to maintain it wasn't justified
> relative to the value it was delivering for .NET customers.
Интересно у людей с Микрософт те же проблемы что у меня?
:-)
см. example — csharp_crashy_window.xaml.cs / cpp_crashy_managed_dll/cpp_crashy_managed_dll.cpp
Пока что очень на эксперементальном уровне, но я могу теперь нативные падения отлавливать и передевывать в managed их. С достанавием call stackа и прочего.
Но пока что библиотека не допилена до конца, надо будет добавить managed call stack determination, и прочее.
Я изучаю как работают исключения под C++ + C++/clr + C#, с намерением обрабатывать ошибки со всех этих языковых диалектов. На данный момент я уже кое-что описал что и как работает здесь:
и мне интересно если у меня имеется C# аппликация, которая использует C++ — как исключения обрабавываются там. Как упоминается в моем сообщении — ни SetUnhandledExceptionFilter, ни AddVectoredExceptionHandler в C# аппликации не дают полного контроля над C++ exception (пытаюсь валить код по записи на invalid pointer).
Но тем не менее C# аппликация вызывает AppDomain.CurrentDomain.UnhandledException на стороне C#, но это уже немного поздновато, так как UnhandledExceptionEventArgs.IsTerminating = true и остановить падение программы уже невозможно.
Тем не менее — я заметил что вызов C# кода проиходит с vcruntime140_clr0400.dll / __C_specific_handler.
Я могу туда даже поверить hook, изпользуя minhook библиотеку. Но у меня остается вопрос что при вызове данной функции делать. и не слишком ли это поздно уже.
Some tools (such as Mutek's BugTrapper) have circumvented this problem by overwriting parts of the user mode exception handling code in NTDLL. One place to do this would be the KiUserExceptionDispatcher function in NTDLL.DLL, which I described in the aforementioned structured exception handling article in MSJ. While overwriting KiUserExceptionDispatcher works, it's a fragile solution, and prone to breaking as new versions of NTDLL come out.
Упоминается возможность вешать hook на NTDLL, но как я понял — это тоже проблематично, как как NTDLL имеет одну копию не дупликаты per процесс как например с kernel32.dll. Но в принципе это не важно, так как NTDLL вызывает vcruntime140_clr0400.dll, куда мы можем повесить hook.
Кстати, один из вариантов — это онлайн игры. Они по идее сами тянут контент из сети. Изменить DNS оффициального сервера на свой собственный локальный сервер, я подавать эксплойт контент напрямую с сервера.
Онлайн игр много, Terraria, Growtopia,…
Думаю что игры проще эксплойтить, чем саму приставку.
Начиная с того, что поддержка скриптинга и modинга может быть в самой игре (как фича). Заблокировать сложнее — представьте отозвать и/или забаннить все версии данной игры, да и думаю в Sony более помешанные на security программисты, чем все те поставщики игр, что под них работают.
Сам купил недавно новый PS4, но для детей — самому не охота «гадить» и/или убивать свой PS4, хотя сам с интересом поковырял бы защиту PS4. Думаю пока железо мое лезть в неё глубже пока не буду. Максимум попробовал бы PS4 SDK, и может какую нибуть игру написать пока её не хотят забанить. Боюсь, что PS4 SDK платный.
Если кто что захочет профинансировать, сообщите лично.
Все описанные здесь методы очень сложны. Т.е. да, если делать хак один раз, то они возможно сработают. Но Sony не сидит не месте, и там где можно было пролезть один раз в следующий раз уже не пролезешь — дыру залатают и профиксят.
Мне странно, что Sony до сих пор не начала вычислять хакеров проактивно — например, если странный вызов происходит — связаться с Sony серверами и сообщить о данной попытке взлома.
Я бы предпочёл не reverse engineeriть вообще ничего, если возможно.
Есть ли возможность сделать игру для PS4, и запихать туда некий development kit / scripting kit, или же использовать существующие игры и их поддержку scriptинга / компиляции.
Я пробовал googlить, но скажем «ps4 python» не дружат между собой вообще.
А какие PS4 простенькие игры знаете вы, куда можно было бы залезть и через какие скриптовые языки?
Чем проще хак и чем обширнее даннная игра разпространена, тем лучше.
Должен снять шляпу перед автором данной статьи. Все benchmarkи которые я на данный момент находил проводили тестирование на single и multithreading, а все остальное — тоже важная информация упускалась.
Мне интересно было бы ещё посмотреть есть ли на какой код code coverage и сколько он процентов, а также интересен сам benchmark тест — на тот случай, если захочу сделать свой собественный логгер. Возможно ли выложить сами тесты куда-нибуть — скажем на github.
Можно было бы заодно посмотреть код и побегать по нему.
Спасибо за данную статью. Очень странно что мои происки в Google нашли на данную статью — но у меня была идея совместить генерацию Solution / Projectа ( habr.com/post/337138 ) с real-time обновлением Solution / Projecta — вот и искал какие-то описания EnvDTE eventов. А вообще есть желание списаться и вместе подумал на данную тему? ( если есть желание и интузиазм взяться за что-то совместное )
Ну одно дело бороться за свою свободу на своей территории, совсем другое — это устраивать бардак на чужой территории. Но даже если и так — если Америка устраивает бардак на чужой территории, почему бы не финансировать бардак на их территории?
Думаю я не имею ответа на ваш вопрос, так как не знаю что думает большинство граждан. Но тем не менее — не было бы логично, что бы контроль за финансирование той или иной операции было бы у тех, кто эти деньги делает, а не случайного государственного начальника?
Но мы ведь не про армию, а про терроризм говорили.
Суть смысла сказанного выше — если сделать форум, где сами граждане могли бы выбирать куда вкладывать деньги (своих налогов), то они могли бы сами выбрать — вкладывать деньги или нет.
Например — Американское правительство — у нас тут классный проэкт. Поддержка группы ИГИЛ. Они занимаются… тем то и тем то… Мы могли бы заработать на этом… так то и так то… и как последствие дестабилизировать другие страны, от чего американцам бы казалось что они лучше живут.
Нам требуется ещё… столько то и столько то… что бы проивести… столько оружия… для продажи.
Нажми сюда что бы поддержать.
И тогда сами граждане выбрали бы хотят они туда вкладывать деньги или нет.
Единственное что интересно — как, кем и по какому критерию данный форум модерировался бы. Я сам заметил если скажем форум спонсируется компанией A, а ты на форуме рекламируешь продукты компании Б, где Б прямой конкурент компании А — такие сообщения удаляются моментально без какой либо нотификации пользователю. Т.е. форум, модераторы тоже имеют свой менталитет/веру и не хотят продвигать то с чем им не по пути.
Cmake претендует на скриптовый язык, из-за ограничения c++ и не только. Но какой он корявый, это просто ужас. Особенно все эти $<> распаковки. Надо было бы что-нибудь на cmake в The International Obfuscated C Code Contest запостить. :)
Звук модема при дозвоне вернулся ! :)
Мне интереснее было бы подгрузить .DLL с RAMа используя недокументированные API.
Я делал что-то подобное здесь: https://github.com/tapika/dllloader
Но я использую API которые помечены как deprecated, что означает что API могут в любой момент удалить.
Не пробовали godot game engine ?
Интересно узнать как бы он выдержал тесты.
https://medium.com/swlh/what-makes-godot-engine-great-for-advance-gui-applications-b1cfb941df3b
C# там поддерживается как mono, но вроде и customизированный .net6 есть, но только в branche, не знаю когда оффициально появится.
Я попытался добавить определение call stackа с учетом C# / C++/call конверсий — мой собственный форк: github.com/tapika/stacktrace
Но определение C# call stacka в symbol naming по прежднему отсутствует.
FYI:
Meanwhile — I've tried another library — Microsoft.Diagnostics.Runtime — github.com/microsoft/clrmd, written in C#,
and what I have tested — boost::stacktrace can return native c++ symbols (on windows) and clrmd works with managed stack frames.
Basically if I want to recollect full stack trace — best way is to use combined runtime — potentially parts from C++ (boost stack trace or similar)
and potentially parts from C# — e.g. clrmd fork for example.
I had also short chat with one of the authors — if you want — you can read it from here:
github.com/microsoft/clrmd/issues/847
…
What I've briefly checked clrmd — I like that almost all windows api are available — even for querying IDebugSymbols,
so one approach is to write everything in C#. I would prefer to have clean C++ code and clean C# code side by side — just in case
if we identify some of bottlenecks in some environment.
…
Думаю пока официальной поддержки Майкрософта нет, то и без толку говорить о стандартизации…
Ждем пока Майкрософт люди проснутся…
Ну т.е. я понимаю что это помощь администраторам сети, можно установить на комьютер что-нибуть — с этим не поспоришь — удобно и удаленно все делает.
На wiki (https://en.wikipedia.org/wiki/Intel_Management_Engine) — «was intended to be available only in machines produced for specific purchasers like the US government» — т.е. все комьютеры FBI в Америке защищены от удаленного доступа. Да, удобно тоже. Странно что там тоже есть админы, и странно что им ничего устанавливать не надо. Ну впрочем тут может быть вопрос насколько FBI админы доверяют Intel ME технологиям. Не доверяют — ну и отключили. Закопано, забыло.
Но кроме этого я думаю что Intel сам может иметь доступ фактически на все компьютеры что он производит. И если надо, то этим доступом можно делиться. Ну т.е. надо поймать террористов, Intel дает привилегии FBI, они ловят террористов, их сажают. Все рады и счастливы.
Но далее начинатся фигня. Если надо посмотреть что там росскийские политики / компании задумали, залогинился на их комьютер, скачал все файлы, отсортировал по папкам. Ну и начинаешь анти деятельность простив России, да и вообще на мировом уровне.
Но ещё интереснее если хакеры найдут очередную Zero Day уязвимость. Залогинился на миллион компьютеров, encrypt все жесткие диски. Если денег на биткойн не перечислишь — диск не верну.
Короче все это попахивает очень даже политической игрой, о который ещё не кто не пронюхал. Или может кто и понял что оно и зачем, но думаю не до конца. и какая информация, куда течет от Intel ME наверное никто даже не знает и не догадывается.
У меня на одном компе windows 7 и по каместь даже не хотел грайдить под 10ку — для меня ничего хорошего не несло. Последнее время замечал что кое что не работает под windows 7. Линукс длч меня всю жизнь был как что то что хочется попробовать, пробовал, наконфигурировал досыта — но там есть и плюсы и минусы. Кстати под win10 уже эмуляция линукс имеется. Линукс нравится тем что легкий и шустрый. Боюсь конфигурировать если это bash, да и вообще много интересных багов можно найти если искать. Не знаю насчёт будущего. Думается что микрософт допилит .net core и он будет везде, даже в линуксе. С играми сложнее, там конкрено портирумыми апи надо владеть. Так что наверное фокус на windows по прежднему.
github.com/boostorg/stacktrace/pull/90/commits/cf4eb6300c1d19b8fe0138bbd275b69a9b36de80
Я повесил hook на __CxxFrameHandler3, но он работает только с native code exception, но не с managed code exception, так что пока что отключил все относящееся к 32битному коду. Пока оставлю как есть потом может вернусь к этому коду.
Вообще 32/64 отличаются в корне друг от друга.
Но то что я дебагирровал до данного момента — подвисание дебаггера, легкое или конкретное — это нормально. Отсутствие полного call stacka в дабаггере, (нужно пользовать process hacker), отличие работы аппликации с дебаггером или без него — это все нормально.
несраватывание debug breakpointов…
Ощущение что идешь в лес по дрова… :-) При чем дров больше чем самого леса…
github.com/dotnet/diagnostics/issues/152#issuecomment-480457800
> Some of our team's past efforts with C/C++ exception handling interop demonstrated this can > be extremely complicated and the amount of effort it took us to maintain it wasn't justified
> relative to the value it was delivering for .NET customers.
Интересно у людей с Микрософт те же проблемы что у меня?
:-)
На данный момент то, что я сделал и/или собираюсь сделать описанно тут:
github.com/dotnet/runtime/issues/12405#issuecomment-626291059
А сам обработчик исключений находится тут:
github.com/tapika/stacktrace
см. example — csharp_crashy_window.xaml.cs / cpp_crashy_managed_dll/cpp_crashy_managed_dll.cpp
Пока что очень на эксперементальном уровне, но я могу теперь нативные падения отлавливать и передевывать в managed их. С достанавием call stackа и прочего.
Но пока что библиотека не допилена до конца, надо будет добавить managed call stack determination, и прочее.
Я изучаю как работают исключения под C++ + C++/clr + C#, с намерением обрабатывать ошибки со всех этих языковых диалектов. На данный момент я уже кое-что описал что и как работает здесь:
github.com/dotnet/diagnostics/issues/152#issuecomment-616082922
и мне интересно если у меня имеется C# аппликация, которая использует C++ — как исключения обрабавываются там. Как упоминается в моем сообщении — ни SetUnhandledExceptionFilter, ни AddVectoredExceptionHandler в C# аппликации не дают полного контроля над C++ exception (пытаюсь валить код по записи на invalid pointer).
Но тем не менее C# аппликация вызывает AppDomain.CurrentDomain.UnhandledException на стороне C#, но это уже немного поздновато, так как UnhandledExceptionEventArgs.IsTerminating = true и остановить падение программы уже невозможно.
Тем не менее — я заметил что вызов C# кода проиходит с vcruntime140_clr0400.dll / __C_specific_handler.
Я могу туда даже поверить hook, изпользуя minhook библиотеку. Но у меня остается вопрос что при вызове данной функции делать. и не слишком ли это поздно уже.
В данной статье:
web.archive.org/web/20080213085805/http://msdn.microsoft.com/msdnmag/issues/01/09/hood/default.aspx
Some tools (such as Mutek's BugTrapper) have circumvented this problem by overwriting parts of the user mode exception handling code in NTDLL. One place to do this would be the KiUserExceptionDispatcher function in NTDLL.DLL, which I described in the aforementioned structured exception handling article in MSJ. While overwriting KiUserExceptionDispatcher works, it's a fragile solution, and prone to breaking as new versions of NTDLL come out.
Упоминается возможность вешать hook на NTDLL, но как я понял — это тоже проблематично, как как NTDLL имеет одну копию не дупликаты per процесс как например с kernel32.dll. Но в принципе это не важно, так как NTDLL вызывает vcruntime140_clr0400.dll, куда мы можем повесить hook.
Я попытался найти что можно делать вообще в функции __C_specific_handler, и нашёл Wine имплементацию оного
www.winehq.org/pipermail/wine-cvs/2009-May/055617.html
который в принципе предлагает стратегию обработки данной функции, но уверен сработает ли он с managed code и во всех случаях.
Здесь очень бы помог сам код vcruntime140_clr0400.dll, вроде как не существует как open source code.
Может можете что посоветовать?
Онлайн игр много, Terraria, Growtopia,…
Думаю что игры проще эксплойтить, чем саму приставку.
Начиная с того, что поддержка скриптинга и modинга может быть в самой игре (как фича). Заблокировать сложнее — представьте отозвать и/или забаннить все версии данной игры, да и думаю в Sony более помешанные на security программисты, чем все те поставщики игр, что под них работают.
Если кто что захочет профинансировать, сообщите лично.
Мне странно, что Sony до сих пор не начала вычислять хакеров проактивно — например, если странный вызов происходит — связаться с Sony серверами и сообщить о данной попытке взлома.
Я бы предпочёл не reverse engineeriть вообще ничего, если возможно.
Есть ли возможность сделать игру для PS4, и запихать туда некий development kit / scripting kit, или же использовать существующие игры и их поддержку scriptинга / компиляции.
Я пробовал googlить, но скажем «ps4 python» не дружат между собой вообще.
А какие PS4 простенькие игры знаете вы, куда можно было бы залезть и через какие скриптовые языки?
Чем проще хак и чем обширнее даннная игра разпространена, тем лучше.
Мне интересно было бы ещё посмотреть есть ли на какой код code coverage и сколько он процентов, а также интересен сам benchmark тест — на тот случай, если захочу сделать свой собественный логгер. Возможно ли выложить сами тесты куда-нибуть — скажем на github.
Можно было бы заодно посмотреть код и побегать по нему.
Думаю я не имею ответа на ваш вопрос, так как не знаю что думает большинство граждан. Но тем не менее — не было бы логично, что бы контроль за финансирование той или иной операции было бы у тех, кто эти деньги делает, а не случайного государственного начальника?
Суть смысла сказанного выше — если сделать форум, где сами граждане могли бы выбирать куда вкладывать деньги (своих налогов), то они могли бы сами выбрать — вкладывать деньги или нет.
Например — Американское правительство — у нас тут классный проэкт. Поддержка группы ИГИЛ. Они занимаются… тем то и тем то… Мы могли бы заработать на этом… так то и так то… и как последствие дестабилизировать другие страны, от чего американцам бы казалось что они лучше живут.
Нам требуется ещё… столько то и столько то… что бы проивести… столько оружия… для продажи.
Нажми сюда что бы поддержать.
И тогда сами граждане выбрали бы хотят они туда вкладывать деньги или нет.
Единственное что интересно — как, кем и по какому критерию данный форум модерировался бы. Я сам заметил если скажем форум спонсируется компанией A, а ты на форуме рекламируешь продукты компании Б, где Б прямой конкурент компании А — такие сообщения удаляются моментально без какой либо нотификации пользователю. Т.е. форум, модераторы тоже имеют свой менталитет/веру и не хотят продвигать то с чем им не по пути.