Pull to refresh
45
0

Windows system programmer, student.

Send message

Intercepting Program Startup on Windows and Trying to Not Mess Things Up

Reading time12 min
Views2.7K

Have you ever heard of Image File Execution Options (IFEO)? It is a registry key under HKEY_LOCAL_MACHINE that controls things like Global Flags and Mitigation Policies on a per-process basis. One of its features that drew my attention is a mechanism designed to help developers debug multi-process applications. Imagine a scenario where some program creates a child process that crashes immediately. In case you cannot launch this child manually (that can happen for various reasons), you might have a hard time troubleshooting this problem. With IFEO, however, you can instruct the system to launch your favorite debugger right when it's about to start this troublesome process. Then you can single-step through the code and figure what goes wrong. Sounds incredibly useful, right?

I don't know about you, but I immediately saw this feature as a mechanism for executing arbitrary code when someone creates a new process. Even more importantly, it happens synchronously, i.e., the target won't start unless we allow it. Internally, the system swaps the path to the image file with the debugger's location, passing the former as a parameter. Therefore, it becomes the debugger's responsibility to start the application and then attach itself to it.

So, are there any limitations on what we can do if we register ourselves as a debugger? Let's push this opportunity to the limits and see what we can achieve.

Read more
Rating0
Comments3

Заставляем любой процесс работать с транзакционной NTFS: мой первый шаг к созданию песочницы для Windows

Reading time6 min
Views7.4K

TransactionMaster В ядре Windows есть модуль, отвечающий за поддержку группировки файловых операций в некоторую сущность, называемую транзакцией. Действия над этой сущностью изолированы и атомарны: её можно применить, сделав перманентной, или откатить. Очень удобно при установке программ, согласитесь? Мы всегда переходим от одного согласованного состояния к другому, и если что-то идёт не так, все изменения откатываются.


С тех пор, как я узнал о поддержке такой функциональности, я всегда хотел посмотреть на мир изнутри этих транзакций. И знаете что: я нашёл простой и поистине замечательный метод заставить любой процесс работать внутри файловой транзакции, но поля книги слишком узки для него. В большинстве случаев, для этого не требуются даже административные привилегии.


Давайте разберёмся, как же это работает, поэкспериментируем с моей программой, и поймём, при чём тут вообще песочницы.

Читать дальше →
Total votes 33: ↑33 and ↓0+33
Comments12

How to Make Any Process Work With Transactional NTFS: My First Step to Writing a Sandbox for Windows

Reading time6 min
Views3.5K

TransactionMaster One of the modules in the Windows kernel provides support for combining a set of file operations into an entity known as a transaction. Just like in databases, these entities are isolated and atomic. You can make some changes to the file system that won't be visible outside until you commit them. Or, as an alternative, you can always rollback everything. In any case, you act upon the group of operations as a whole. Precisely what needed to preserve consistency while installing software or updating our systems, right? If something goes wrong — the installer or even the whole system crashes — the transaction rolls back automatically.


From the very first time I saw an article about this incredible mechanism, I always wondered how the world would look like from the inside. And you know what? I just discovered a truly marvelous approach to force any process to operate within a predefined transaction, which this margin is too narrow to contain. Furthermore, most of the time, it does not even require administrative privileges.


Let's then talk about Windows internals, try out a new tool, and answer one question: what does it have to do with sandboxes?

Read more →
Total votes 3: ↑3 and ↓0+3
Comments0

«Не всё так очевидно»: обсуждаем распространённые заблуждения

Reading time7 min
Views48K

Я люблю Хабр и Гиктаймс за то, насколько вменяемые и образованные люди здесь собрались. Но будучи даже мастером рационального мышления можно попасться на высказывании какой-нибудь глупости просто потому, что вы не задумались об альтернативах вовремя. Как говорится, сколько ещё морских свинок должно пострадать из-за того, что они не морские и не свинки? Я предлагаю вашему внимаю подборку и обсуждение некоторых достаточно распространённых заблуждений, чтобы впредь мы c вами были чуть меньше неправы. Давайте посмотрим, насколько вы знакомы с обратившими на себя внимание вопросами, и знаете ли правильные ответы на них.

Читать дальше →
Total votes 64: ↑61 and ↓3+58
Comments243

Перехватываем запуск любого приложения в Windows и пытаемся ничего не сломать

Reading time14 min
Views51K

Если вы много занимаетесь отладкой приложений под Windows — вы, возможно, слышали о таком замечательном механизме, как Image File Execution Options (IFEO). Одна из предоставляемых им возможностей позволяет отлаживать приложение в условиях, более приближенных к боевым. Записав в нужное место в реестре специальный ключик, мы можем вместо программы автоматически запускать её отладчик, позволяя ему делать свои отладочные дела. Однако кто сказал, что этот механизм (фактически — перехвата запуска чего угодно) можно использовать только в подобных целях? Эта статья вовсе не об использовании вещей по назначению.


Под катом рассказ о том, как я попытался выжать побольше из этого механизма в своих добрых целях, и какие подводные камни мне встретились на пути. А у меня тут хорошие, отборные камни.

Читать дальше →
Total votes 49: ↑48 and ↓1+47
Comments21

Information

Rating
Does not participate
Location
Россия
Registered
Activity