From 108c12ff4f98de2205a0f2a259557a203430ae43 Mon Sep 17 00:00:00 2001 From: Lunar Journal Date: Thu, 7 Sep 2023 12:06:18 +0200 Subject: cdl86: readme: update readme Update readme with additional info on library usage. --- README.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/README.md b/README.md index 225452d..3f49142 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,58 @@ void cdl_swbp_dbg(struct cdl_swbp_patch *swbp_patch); The API is documented in more detail in the corresponding header and source files. +# Example Usage + +Assuming we have a function `add()` that is defined as follows: +``` +int add( + __in int x, + __in int y +) +{ + printf("Inside original function\n"); + return x + y; +} +``` + +Assuming we want to hook this function with `cdl86` the first step +is to define a function pointer typedef and declare our detour function: + +``` +typedef int add_t( + __in int x, + __in int y +); +add_t* addo = NULL; +``` +``` +// define detour function +int add_detour( + __in int x, + __in int y +) +{ + printf("Inside detour function\n"); + return addo(5,5); +} + +``` +Then in our `main()` function we create a cdl_jmp_patch struct and assign +a value to `addo` (our function pointer to the original function): +``` +struct cdl_jmp_patch jmp_patch = {}; +addo = (add_t*)add; +``` + +Finally call `cdl_jmp_attach` as follows: +``` +jmp_patch = cdl_jmp_attach((void**)&addo, add_detour); +``` + +The original function `add` has now been hooked! + +To dump debug info from the `cdl_jmp_patch` struct use `cdl_jmp_dbg`. + # Info **cdl.c** - C source file for CDL.
**cdl.h** - CDL header file to include. -- cgit v1.2.3-70-g09d2