Repository files navigation

Deviare is a professional hooking engine for instrumenting arbitrary Win32 functions, COM objects, and functions whose symbols are located in program databases (PDBs). It can intercept unmanaged code in 32-bit and 64-bit applications. It is implemented as a COM component, so it can be integrated with all the programming languages which support COM, such as C/C++, VB, C#, Delphi, and Python.

Several Fortune 500 companies are using Deviare technology for application virtualization, packaging, and troubleshooting, and for computer security. Computer science researchers are also using Deviare to conduct malware and reverse engineering studies. Our blog articles contain a vast quantity of code samples to get you started easily.

Deviare offers a unique programmer friendly API which resolves the complexities associated with binary instrumentation so that even software engineers without expertise in the field can use it. Deviare takes care of code injection, parameter marshalling, and inter-process communication. We created Deviare API in 2007 and continually improve it. Intercepting applications is a complex task. We test multiple application environments to ensure that the end user has a trouble-free experience. Deviare also has a focus on performance handling thousands of hooks with little footprint.

Code instrumentation is used in several other areas like: tracing and debugging, sandboxing and browser security, malware analysis, video conference recording, and gaming.

Download the latest binaries and source code from here.


MINIMUM REQUIREMENTS

Deviare runtime runs on any computer with Microsoft Windows XP or later OS installed.

To compile Deviare and/or build samples you need:

  • Visual Studio 2017.
  • .NET Framework 4.
  • Windows SDK 8 with all .NET Framework components installed.

NOTE: The database (.db) files you'll find in the BIN folder are NOT generated when building Deviare. Deviare needs these files to work. If you create new databases, don't forget to move them to the BIN folder. To create them you must first build the corresponding tools that are included in the solution. Refer to these instructions for further details.


BEFORE BUILDING

Since Deviare depends directly on Deviare-InProc, it is included as a submodule in this repository. To clone this repository do git clone --recursive. If you already cloned without the --recursive option, you can complete the repository initialization with git submodule update --init --recursive.

We recommend always executing git submodule update --init --recursive after pulling from this repository. This ensures the Deviare-InProc submodule is up to date with the HEAD of the Deviare2 branch.

If you downloaded the zipped source package from Github instead, you need to satisfy this dependency manually. To do so, place the contents of Deviare-InProc inside Externals/DeviareInProc.


BUILDING DEVIARE

To build Deviare you can either execute the build script (build.bat) in a VS2017 command prompt or open the solution and build it from within Visual Studio. When doing the latter, make sure to build for both x86 and x64 target platforms.


BUG REPORTS

If you experience something you think might be a bug in Deviare, please report it in the GitHub repository or write to us in our contact page.

Describe what you did, what happened, what kind of computer you have, which operating system you're using and anything else you think might be relevant.


LICENSING INFORMATION

This library has a dual license, a commercial one suitable for closed source projects and a GPL license that can be used in open source software.

Depending on your needs, you must choose one of them and follow its policies. A detail of the policies and agreements for each license type are available in the LICENSE.COMMERCIAL and LICENSE.GPL files.

For further information please refer to our licensing options or contact Nektra here.

This library uses a portion of UDis86 project, authored, copyrighted and maintained by Vivek Thampi. UDis86 is licensed under the terms of BSD License. For any questions referring to UDis86 contact the author at vivek[at]sig9[dot]com.

About

Deviare API Hook

Resources

Stars

469 stars

Watchers

42 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Deviare is a professional hooking engine for instrumenting arbitrary Win32 functions, COM objects, and functions whose symbols are located in program databases (PDBs). It can intercept unmanaged code in 32-bit and 64-bit applications. It is implemented as a COM component, so it can be integrated with all the programming languages which support COM, such as C/C++, VB, C#, Delphi, and Python.

Several Fortune 500 companies are using Deviare technology for application virtualization, packaging, and troubleshooting, and for computer security. Computer science researchers are also using Deviare to conduct malware and reverse engineering studies. Our blog articles contain a vast quantity of code samples to get you started easily.

Deviare offers a unique programmer friendly API which resolves the complexities associated with binary instrumentation so that even software engineers without expertise in the field can use it. Deviare takes care of code injection, parameter marshalling, and inter-process communication. We created Deviare API in 2007 and continually improve it. Intercepting applications is a complex task. We test multiple application environments to ensure that the end user has a trouble-free experience. Deviare also has a focus on performance handling thousands of hooks with little footprint.

Code instrumentation is used in several other areas like: tracing and debugging, sandboxing and browser security, malware analysis, video conference recording, and gaming.

Download the latest binaries and source code from here.


MINIMUM REQUIREMENTS

Deviare runtime runs on any computer with Microsoft Windows XP or later OS installed.

To compile Deviare and/or build samples you need:

  • Visual Studio 2017.
  • .NET Framework 4.
  • Windows SDK 8 with all .NET Framework components installed.

NOTE: The database (.db) files you'll find in the BIN folder are NOT generated when building Deviare. Deviare needs these files to work. If you create new databases, don't forget to move them to the BIN folder. To create them you must first build the corresponding tools that are included in the solution. Refer to these instructions for further details.


BEFORE BUILDING

Since Deviare depends directly on Deviare-InProc, it is included as a submodule in this repository. To clone this repository do git clone --recursive. If you already cloned without the --recursive option, you can complete the repository initialization with git submodule update --init --recursive.

We recommend always executing git submodule update --init --recursive after pulling from this repository. This ensures the Deviare-InProc submodule is up to date with the HEAD of the Deviare2 branch.

If you downloaded the zipped source package from Github instead, you need to satisfy this dependency manually. To do so, place the contents of Deviare-InProc inside Externals/DeviareInProc.


BUILDING DEVIARE

To build Deviare you can either execute the build script (build.bat) in a VS2017 command prompt or open the solution and build it from within Visual Studio. When doing the latter, make sure to build for both x86 and x64 target platforms.


BUG REPORTS

If you experience something you think might be a bug in Deviare, please report it in the GitHub repository or write to us in our contact page.

Describe what you did, what happened, what kind of computer you have, which operating system you're using and anything else you think might be relevant.


LICENSING INFORMATION

This library has a dual license, a commercial one suitable for closed source projects and a GPL license that can be used in open source software.

Depending on your needs, you must choose one of them and follow its policies. A detail of the policies and agreements for each license type are available in the LICENSE.COMMERCIAL and LICENSE.GPL files.

For further information please refer to our licensing options or contact Nektra here.

This library uses a portion of UDis86 project, authored, copyrighted and maintained by Vivek Thampi. UDis86 is licensed under the terms of BSD License. For any questions referring to UDis86 contact the author at vivek[at]sig9[dot]com.

About

Deviare API Hook

Resources

Stars

469 stars

Watchers

42 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Deviare is a professional hooking engine for instrumenting arbitrary Win32 functions, COM objects, and functions whose symbols are located in program databases (PDBs). It can intercept unmanaged code in 32-bit and 64-bit applications. It is implemented as a COM component, so it can be integrated with all the programming languages which support COM, such as C/C++, VB, C#, Delphi, and Python.

Several Fortune 500 companies are using Deviare technology for application virtualization, packaging, and troubleshooting, and for computer security. Computer science researchers are also using Deviare to conduct malware and reverse engineering studies. Our blog articles contain a vast quantity of code samples to get you started easily.

Deviare offers a unique programmer friendly API which resolves the complexities associated with binary instrumentation so that even software engineers without expertise in the field can use it. Deviare takes care of code injection, parameter marshalling, and inter-process communication. We created Deviare API in 2007 and continually improve it. Intercepting applications is a complex task. We test multiple application environments to ensure that the end user has a trouble-free experience. Deviare also has a focus on performance handling thousands of hooks with little footprint.

Code instrumentation is used in several other areas like: tracing and debugging, sandboxing and browser security, malware analysis, video conference recording, and gaming.

Download the latest binaries and source code from here.


MINIMUM REQUIREMENTS

Deviare runtime runs on any computer with Microsoft Windows XP or later OS installed.

To compile Deviare and/or build samples you need:

  • Visual Studio 2017.
  • .NET Framework 4.
  • Windows SDK 8 with all .NET Framework components installed.

NOTE: The database (.db) files you'll find in the BIN folder are NOT generated when building Deviare. Deviare needs these files to work. If you create new databases, don't forget to move them to the BIN folder. To create them you must first build the corresponding tools that are included in the solution. Refer to these instructions for further details.


BEFORE BUILDING

Since Deviare depends directly on Deviare-InProc, it is included as a submodule in this repository. To clone this repository do git clone --recursive. If you already cloned without the --recursive option, you can complete the repository initialization with git submodule update --init --recursive.

We recommend always executing git submodule update --init --recursive after pulling from this repository. This ensures the Deviare-InProc submodule is up to date with the HEAD of the Deviare2 branch.

If you downloaded the zipped source package from Github instead, you need to satisfy this dependency manually. To do so, place the contents of Deviare-InProc inside Externals/DeviareInProc.


BUILDING DEVIARE

To build Deviare you can either execute the build script (build.bat) in a VS2017 command prompt or open the solution and build it from within Visual Studio. When doing the latter, make sure to build for both x86 and x64 target platforms.


BUG REPORTS

If you experience something you think might be a bug in Deviare, please report it in the GitHub repository or write to us in our contact page.

Describe what you did, what happened, what kind of computer you have, which operating system you're using and anything else you think might be relevant.


LICENSING INFORMATION

This library has a dual license, a commercial one suitable for closed source projects and a GPL license that can be used in open source software.

Depending on your needs, you must choose one of them and follow its policies. A detail of the policies and agreements for each license type are available in the LICENSE.COMMERCIAL and LICENSE.GPL files.

For further information please refer to our licensing options or contact Nektra here.

This library uses a portion of UDis86 project, authored, copyrighted and maintained by Vivek Thampi. UDis86 is licensed under the terms of BSD License. For any questions referring to UDis86 contact the author at vivek[at]sig9[dot]com.

About

Deviare API Hook

Resources

Stars

469 stars

Watchers

42 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Deviare is a professional hooking engine for instrumenting arbitrary Win32 functions, COM objects, and functions whose symbols are located in program databases (PDBs). It can intercept unmanaged code in 32-bit and 64-bit applications. It is implemented as a COM component, so it can be integrated with all the programming languages which support COM, such as C/C++, VB, C#, Delphi, and Python.

Several Fortune 500 companies are using Deviare technology for application virtualization, packaging, and troubleshooting, and for computer security. Computer science researchers are also using Deviare to conduct malware and reverse engineering studies. Our blog articles contain a vast quantity of code samples to get you started easily.

Deviare offers a unique programmer friendly API which resolves the complexities associated with binary instrumentation so that even software engineers without expertise in the field can use it. Deviare takes care of code injection, parameter marshalling, and inter-process communication. We created Deviare API in 2007 and continually improve it. Intercepting applications is a complex task. We test multiple application environments to ensure that the end user has a trouble-free experience. Deviare also has a focus on performance handling thousands of hooks with little footprint.

Code instrumentation is used in several other areas like: tracing and debugging, sandboxing and browser security, malware analysis, video conference recording, and gaming.

Download the latest binaries and source code from here.


MINIMUM REQUIREMENTS

Deviare runtime runs on any computer with Microsoft Windows XP or later OS installed.

To compile Deviare and/or build samples you need:

  • Visual Studio 2017.
  • .NET Framework 4.
  • Windows SDK 8 with all .NET Framework components installed.

NOTE: The database (.db) files you'll find in the BIN folder are NOT generated when building Deviare. Deviare needs these files to work. If you create new databases, don't forget to move them to the BIN folder. To create them you must first build the corresponding tools that are included in the solution. Refer to these instructions for further details.


BEFORE BUILDING

Since Deviare depends directly on Deviare-InProc, it is included as a submodule in this repository. To clone this repository do git clone --recursive. If you already cloned without the --recursive option, you can complete the repository initialization with git submodule update --init --recursive.

We recommend always executing git submodule update --init --recursive after pulling from this repository. This ensures the Deviare-InProc submodule is up to date with the HEAD of the Deviare2 branch.

If you downloaded the zipped source package from Github instead, you need to satisfy this dependency manually. To do so, place the contents of Deviare-InProc inside Externals/DeviareInProc.


BUILDING DEVIARE

To build Deviare you can either execute the build script (build.bat) in a VS2017 command prompt or open the solution and build it from within Visual Studio. When doing the latter, make sure to build for both x86 and x64 target platforms.


BUG REPORTS

If you experience something you think might be a bug in Deviare, please report it in the GitHub repository or write to us in our contact page.

Describe what you did, what happened, what kind of computer you have, which operating system you're using and anything else you think might be relevant.


LICENSING INFORMATION

This library has a dual license, a commercial one suitable for closed source projects and a GPL license that can be used in open source software.

Depending on your needs, you must choose one of them and follow its policies. A detail of the policies and agreements for each license type are available in the LICENSE.COMMERCIAL and LICENSE.GPL files.

For further information please refer to our licensing options or contact Nektra here.

This library uses a portion of UDis86 project, authored, copyrighted and maintained by Vivek Thampi. UDis86 is licensed under the terms of BSD License. For any questions referring to UDis86 contact the author at vivek[at]sig9[dot]com.

About

Deviare API Hook

Resources

Stars

469 stars

Watchers

42 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Deviare is a professional hooking engine for instrumenting arbitrary Win32 functions, COM objects, and functions whose symbols are located in program databases (PDBs). It can intercept unmanaged code in 32-bit and 64-bit applications. It is implemented as a COM component, so it can be integrated with all the programming languages which support COM, such as C/C++, VB, C#, Delphi, and Python.

Several Fortune 500 companies are using Deviare technology for application virtualization, packaging, and troubleshooting, and for computer security. Computer science researchers are also using Deviare to conduct malware and reverse engineering studies. Our blog articles contain a vast quantity of code samples to get you started easily.

Deviare offers a unique programmer friendly API which resolves the complexities associated with binary instrumentation so that even software engineers without expertise in the field can use it. Deviare takes care of code injection, parameter marshalling, and inter-process communication. We created Deviare API in 2007 and continually improve it. Intercepting applications is a complex task. We test multiple application environments to ensure that the end user has a trouble-free experience. Deviare also has a focus on performance handling thousands of hooks with little footprint.

Code instrumentation is used in several other areas like: tracing and debugging, sandboxing and browser security, malware analysis, video conference recording, and gaming.

Download the latest binaries and source code from here.


MINIMUM REQUIREMENTS

Deviare runtime runs on any computer with Microsoft Windows XP or later OS installed.

To compile Deviare and/or build samples you need:

  • Visual Studio 2017.
  • .NET Framework 4.
  • Windows SDK 8 with all .NET Framework components installed.

NOTE: The database (.db) files you'll find in the BIN folder are NOT generated when building Deviare. Deviare needs these files to work. If you create new databases, don't forget to move them to the BIN folder. To create them you must first build the corresponding tools that are included in the solution. Refer to these instructions for further details.


BEFORE BUILDING

Since Deviare depends directly on Deviare-InProc, it is included as a submodule in this repository. To clone this repository do git clone --recursive. If you already cloned without the --recursive option, you can complete the repository initialization with git submodule update --init --recursive.

We recommend always executing git submodule update --init --recursive after pulling from this repository. This ensures the Deviare-InProc submodule is up to date with the HEAD of the Deviare2 branch.

If you downloaded the zipped source package from Github instead, you need to satisfy this dependency manually. To do so, place the contents of Deviare-InProc inside Externals/DeviareInProc.


BUILDING DEVIARE

To build Deviare you can either execute the build script (build.bat) in a VS2017 command prompt or open the solution and build it from within Visual Studio. When doing the latter, make sure to build for both x86 and x64 target platforms.


BUG REPORTS

If you experience something you think might be a bug in Deviare, please report it in the GitHub repository or write to us in our contact page.

Describe what you did, what happened, what kind of computer you have, which operating system you're using and anything else you think might be relevant.


LICENSING INFORMATION

This library has a dual license, a commercial one suitable for closed source projects and a GPL license that can be used in open source software.

Depending on your needs, you must choose one of them and follow its policies. A detail of the policies and agreements for each license type are available in the LICENSE.COMMERCIAL and LICENSE.GPL files.

For further information please refer to our licensing options or contact Nektra here.

This library uses a portion of UDis86 project, authored, copyrighted and maintained by Vivek Thampi. UDis86 is licensed under the terms of BSD License. For any questions referring to UDis86 contact the author at vivek[at]sig9[dot]com.

About

Deviare API Hook

Resources

Stars

469 stars

Watchers

42 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Deviare is a professional hooking engine for instrumenting arbitrary Win32 functions, COM objects, and functions whose symbols are located in program databases (PDBs). It can intercept unmanaged code in 32-bit and 64-bit applications. It is implemented as a COM component, so it can be integrated with all the programming languages which support COM, such as C/C++, VB, C#, Delphi, and Python.

Several Fortune 500 companies are using Deviare technology for application virtualization, packaging, and troubleshooting, and for computer security. Computer science researchers are also using Deviare to conduct malware and reverse engineering studies. Our blog articles contain a vast quantity of code samples to get you started easily.

Deviare offers a unique programmer friendly API which resolves the complexities associated with binary instrumentation so that even software engineers without expertise in the field can use it. Deviare takes care of code injection, parameter marshalling, and inter-process communication. We created Deviare API in 2007 and continually improve it. Intercepting applications is a complex task. We test multiple application environments to ensure that the end user has a trouble-free experience. Deviare also has a focus on performance handling thousands of hooks with little footprint.

Code instrumentation is used in several other areas like: tracing and debugging, sandboxing and browser security, malware analysis, video conference recording, and gaming.

Download the latest binaries and source code from here.


MINIMUM REQUIREMENTS

Deviare runtime runs on any computer with Microsoft Windows XP or later OS installed.

To compile Deviare and/or build samples you need:

  • Visual Studio 2017.
  • .NET Framework 4.
  • Windows SDK 8 with all .NET Framework components installed.

NOTE: The database (.db) files you'll find in the BIN folder are NOT generated when building Deviare. Deviare needs these files to work. If you create new databases, don't forget to move them to the BIN folder. To create them you must first build the corresponding tools that are included in the solution. Refer to these instructions for further details.


BEFORE BUILDING

Since Deviare depends directly on Deviare-InProc, it is included as a submodule in this repository. To clone this repository do git clone --recursive. If you already cloned without the --recursive option, you can complete the repository initialization with git submodule update --init --recursive.

We recommend always executing git submodule update --init --recursive after pulling from this repository. This ensures the Deviare-InProc submodule is up to date with the HEAD of the Deviare2 branch.

If you downloaded the zipped source package from Github instead, you need to satisfy this dependency manually. To do so, place the contents of Deviare-InProc inside Externals/DeviareInProc.


BUILDING DEVIARE

To build Deviare you can either execute the build script (build.bat) in a VS2017 command prompt or open the solution and build it from within Visual Studio. When doing the latter, make sure to build for both x86 and x64 target platforms.


BUG REPORTS

If you experience something you think might be a bug in Deviare, please report it in the GitHub repository or write to us in our contact page.

Describe what you did, what happened, what kind of computer you have, which operating system you're using and anything else you think might be relevant.


LICENSING INFORMATION

This library has a dual license, a commercial one suitable for closed source projects and a GPL license that can be used in open source software.

Depending on your needs, you must choose one of them and follow its policies. A detail of the policies and agreements for each license type are available in the LICENSE.COMMERCIAL and LICENSE.GPL files.

For further information please refer to our licensing options or contact Nektra here.

This library uses a portion of UDis86 project, authored, copyrighted and maintained by Vivek Thampi. UDis86 is licensed under the terms of BSD License. For any questions referring to UDis86 contact the author at vivek[at]sig9[dot]com.

About

Deviare API Hook

Resources

Stars

469 stars

Watchers

42 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Deviare is a professional hooking engine for instrumenting arbitrary Win32 functions, COM objects, and functions whose symbols are located in program databases (PDBs). It can intercept unmanaged code in 32-bit and 64-bit applications. It is implemented as a COM component, so it can be integrated with all the programming languages which support COM, such as C/C++, VB, C#, Delphi, and Python.

Several Fortune 500 companies are using Deviare technology for application virtualization, packaging, and troubleshooting, and for computer security. Computer science researchers are also using Deviare to conduct malware and reverse engineering studies. Our blog articles contain a vast quantity of code samples to get you started easily.

Deviare offers a unique programmer friendly API which resolves the complexities associated with binary instrumentation so that even software engineers without expertise in the field can use it. Deviare takes care of code injection, parameter marshalling, and inter-process communication. We created Deviare API in 2007 and continually improve it. Intercepting applications is a complex task. We test multiple application environments to ensure that the end user has a trouble-free experience. Deviare also has a focus on performance handling thousands of hooks with little footprint.

Code instrumentation is used in several other areas like: tracing and debugging, sandboxing and browser security, malware analysis, video conference recording, and gaming.

Download the latest binaries and source code from here.


MINIMUM REQUIREMENTS

Deviare runtime runs on any computer with Microsoft Windows XP or later OS installed.

To compile Deviare and/or build samples you need:

  • Visual Studio 2017.
  • .NET Framework 4.
  • Windows SDK 8 with all .NET Framework components installed.

NOTE: The database (.db) files you'll find in the BIN folder are NOT generated when building Deviare. Deviare needs these files to work. If you create new databases, don't forget to move them to the BIN folder. To create them you must first build the corresponding tools that are included in the solution. Refer to these instructions for further details.


BEFORE BUILDING

Since Deviare depends directly on Deviare-InProc, it is included as a submodule in this repository. To clone this repository do git clone --recursive. If you already cloned without the --recursive option, you can complete the repository initialization with git submodule update --init --recursive.

We recommend always executing git submodule update --init --recursive after pulling from this repository. This ensures the Deviare-InProc submodule is up to date with the HEAD of the Deviare2 branch.

If you downloaded the zipped source package from Github instead, you need to satisfy this dependency manually. To do so, place the contents of Deviare-InProc inside Externals/DeviareInProc.


BUILDING DEVIARE

To build Deviare you can either execute the build script (build.bat) in a VS2017 command prompt or open the solution and build it from within Visual Studio. When doing the latter, make sure to build for both x86 and x64 target platforms.


BUG REPORTS

If you experience something you think might be a bug in Deviare, please report it in the GitHub repository or write to us in our contact page.

Describe what you did, what happened, what kind of computer you have, which operating system you're using and anything else you think might be relevant.


LICENSING INFORMATION

This library has a dual license, a commercial one suitable for closed source projects and a GPL license that can be used in open source software.

Depending on your needs, you must choose one of them and follow its policies. A detail of the policies and agreements for each license type are available in the LICENSE.COMMERCIAL and LICENSE.GPL files.

For further information please refer to our licensing options or contact Nektra here.

This library uses a portion of UDis86 project, authored, copyrighted and maintained by Vivek Thampi. UDis86 is licensed under the terms of BSD License. For any questions referring to UDis86 contact the author at vivek[at]sig9[dot]com.

About

Deviare API Hook

Resources

Stars

469 stars

Watchers

42 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Deviare is a professional hooking engine for instrumenting arbitrary Win32 functions, COM objects, and functions whose symbols are located in program databases (PDBs). It can intercept unmanaged code in 32-bit and 64-bit applications. It is implemented as a COM component, so it can be integrated with all the programming languages which support COM, such as C/C++, VB, C#, Delphi, and Python.

Several Fortune 500 companies are using Deviare technology for application virtualization, packaging, and troubleshooting, and for computer security. Computer science researchers are also using Deviare to conduct malware and reverse engineering studies. Our blog articles contain a vast quantity of code samples to get you started easily.

Deviare offers a unique programmer friendly API which resolves the complexities associated with binary instrumentation so that even software engineers without expertise in the field can use it. Deviare takes care of code injection, parameter marshalling, and inter-process communication. We created Deviare API in 2007 and continually improve it. Intercepting applications is a complex task. We test multiple application environments to ensure that the end user has a trouble-free experience. Deviare also has a focus on performance handling thousands of hooks with little footprint.

Code instrumentation is used in several other areas like: tracing and debugging, sandboxing and browser security, malware analysis, video conference recording, and gaming.

Download the latest binaries and source code from here.


MINIMUM REQUIREMENTS

Deviare runtime runs on any computer with Microsoft Windows XP or later OS installed.

To compile Deviare and/or build samples you need:

  • Visual Studio 2017.
  • .NET Framework 4.
  • Windows SDK 8 with all .NET Framework components installed.

NOTE: The database (.db) files you'll find in the BIN folder are NOT generated when building Deviare. Deviare needs these files to work. If you create new databases, don't forget to move them to the BIN folder. To create them you must first build the corresponding tools that are included in the solution. Refer to these instructions for further details.


BEFORE BUILDING

Since Deviare depends directly on Deviare-InProc, it is included as a submodule in this repository. To clone this repository do git clone --recursive. If you already cloned without the --recursive option, you can complete the repository initialization with git submodule update --init --recursive.

We recommend always executing git submodule update --init --recursive after pulling from this repository. This ensures the Deviare-InProc submodule is up to date with the HEAD of the Deviare2 branch.

If you downloaded the zipped source package from Github instead, you need to satisfy this dependency manually. To do so, place the contents of Deviare-InProc inside Externals/DeviareInProc.


BUILDING DEVIARE

To build Deviare you can either execute the build script (build.bat) in a VS2017 command prompt or open the solution and build it from within Visual Studio. When doing the latter, make sure to build for both x86 and x64 target platforms.


BUG REPORTS

If you experience something you think might be a bug in Deviare, please report it in the GitHub repository or write to us in our contact page.

Describe what you did, what happened, what kind of computer you have, which operating system you're using and anything else you think might be relevant.


LICENSING INFORMATION

This library has a dual license, a commercial one suitable for closed source projects and a GPL license that can be used in open source software.

Depending on your needs, you must choose one of them and follow its policies. A detail of the policies and agreements for each license type are available in the LICENSE.COMMERCIAL and LICENSE.GPL files.

For further information please refer to our licensing options or contact Nektra here.

This library uses a portion of UDis86 project, authored, copyrighted and maintained by Vivek Thampi. UDis86 is licensed under the terms of BSD License. For any questions referring to UDis86 contact the author at vivek[at]sig9[dot]com.

About

Deviare API Hook

Resources

Stars

469 stars

Watchers

42 watching

Forks

Releases

Packages

Used by

Contributors

Languages