Comments (5)
Updated for WDK 11 and bumped version of Zydis to the latest.
@den7ba, could you test it one more time with the latest HookLib?
And if it will bsod again, could you give me a dump with PDBs for the driver and test app?
from hooklib.
Updated for WDK 11 and bumped version of Zydis to the latest. @den7ba, could you test it one more time with the latest HookLib? And if it will bsod again, could you give me a dump with PDBs for the driver and test app?
Same again. Minidump is enough?
dump.zip
from hooklib.
Fixed tests. It was false-negative assert. In release mode the compiler makes assumption that a test function couldn't change and caches its return value to use it instead of the second call of a test function. So, an assert fails.
void testHookOnce()
{
const auto original = static_cast<decltype(func<0>)*>(hook(func<0>, handler<0>));
hk_assert(func<0>(11, 22) == validHandler<0>(11, 22));
hk_assert(original(11, 22) == validFunc<0>(11, 22));
unhook(original);
hk_assert(func<0>(11, 22) == validFunc<0>(11, 22)); // <-- Fails here
}
The function above in the release mode looks as follows:
void testHookOnce()
{
const auto original = static_cast<decltype(func<0>)*>(hook(func<0>, handler<0>));
const auto cachedFuncResult = func<0>(11, 22);
hk_assert(cachedFuncResult == validHandler<0>(11, 22));
hk_assert(original(11, 22) == validFunc<0>(11, 22));
unhook(original);
hk_assert(cachedFuncResult == validFunc<0>(11, 22)); // Boom!
}
So, the solution is to make func
"volatile": call any external function to prevent a compiler to make an assumption that the function doesn't change internal state of an app.
@den7ba, please, check it again.
from hooklib.
Excellent. So, is this the expected result?
from hooklib.
@den7ba, yep, looks good.
from hooklib.
Related Issues (19)
- External dep(Zydis) is not resolved HOT 1
- how to fix HOT 1
- please help HOT 4
- win10 KiDispatchException HOT 23
- help ASAP HOT 1
- cant find dynamic library in current folder
- This project doesn't contain the Configuration and Platform combination Release|x64 HOT 2
- is my test doing good? xD i dont know what im looking at HOT 6
- Breaks on W11 HOT 2
- windows 10 1809 page_fault_in_nonpaged_area HOT 4
- Странный баг HOT 14
- [Help]HookLib.lib(HookLib.obj) : warning LNK4257: Object file was not compiled for kernel mode
- hook failed with DbgkpCloseObject HOT 1
- Problem with hooking windows api HOT 3
- This project doesn't contain the Configuration and Platform combination Release|x64
- StopProcessors or ResumeProcessors freezes windows 10 HOT 1
- Build failed due to identifier "_Original" and "_State" is not defined HOT 1
- Сделать хук для другого процесса
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hooklib.