Exetools

Exetools (https://forum.exetools.com/index.php)
-   Source Code (https://forum.exetools.com/forumdisplay.php?f=46)
-   -   Python Hooking - Write Less Do More (https://forum.exetools.com/showthread.php?t=20801)

vic4key 12-28-2023 19:21

Python Hooking - Write Less Do More
 
Sometimes, you need to manipulate low-level functionality (C APIs, etc) from high-level languages (Python).
Eg. Force the low-level side calls directly to your own Python override functions. This repo will help you do that.

[x] Windows
[x] Linux
[x] MacOS
[x] iOS
[x] Android

To hook & unhook a function, you only need to write codes as the following

Code:

import ctypes
from PyHooking import PyHooking, load_external_shared_library, arch, bits

# define the hook function

mylib = load_external_shared_library(f"Examples/mylib_{arch}_{bits}")

@PyHooking.CPrototype(ctypes.CFUNCTYPE(None, ctypes.c_char_p))
def hk_print_message(message):
    message = f"Invoked `hk_print_message('{message.decode('utf-8')}')`"
    PyHooking().invoke(mylib.print_message, message.encode())

# perform hooking

PyHooking().hook(mylib.print_message, hk_print_message)

mylib.print_message(b"This is a string from Python code")
mylib.c_invoke_print_message()

# perform unhooking

PyHooking().unhook(mylib.print_message)

mylib.print_message(b"This is a string from Python code")
mylib.c_invoke_print_message()

# result

'''
Invoked `hk_print_message('This is a string from Python code')`
Invoked `hk_print_message('This is a string from C code')`
This is a string from Python code
This is a string from C code
'''

The repository @ https://github.com/vic4key/py-hooking.git

Follow me on GitHub @ https://github.com/vic4key

Regards,
Vic P.

ahmadmansoor 12-29-2023 04:48

@vic4key are you the same guy from GitHub, or u have the same name?

vic4key 12-29-2023 10:06

@ahmadmansoor Yep. It's me, bro. I believe that my premature-nickname is unique. ������

P.S Corrected the mistake of copy-paste link from https://github.com/vic4key/cpp-hooking.git to https://github.com/vic4key/py-hooking.git


All times are GMT +8. The time now is 16:26.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2026, vBulletin Solutions, Inc.
Always Your Best Friend: Aaron, JMI, ahmadmansoor, ZeNiX