Last active
August 29, 2015 14:02
-
-
Save yajd/01616e237e743a7a560d to your computer and use it in GitHub Desktop.
_ff-addon-snippet-JSCTypesKernel - Setting up JS CTypes so can bypass that WinXP crashing issue on TB_BUTTON.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Cu.import('resource://gre/modules/ctypes.jsm'); | |
var kernel32 = ctypes.open('kernel32.dll'); | |
var user32 = ctypes.open('user32.dll'); | |
/* http://msdn.microsoft.com/en-us/library/windows/desktop/ms684320%28v=vs.85%29.aspx | |
* HANDLE WINAPI OpenProcess( | |
* __in_ DWORD dwDesiredAccess, | |
* __in_ BOOL bInheritHandle, | |
* __in_ DWORD dwProcessId | |
* ); | |
*/ | |
var OpenProcess = kernel32.declare('OpenProcess', ctypes.winapi_abi, ctypes.voidptr_t, //HANDLE | |
ctypes.unsigned_long, //DWORD | |
ctypes.bool, //BOOL | |
ctypes.unsigned_long //DWORD | |
); | |
/* http://msdn.microsoft.com/en-us/library/windows/desktop/aa366890%28v=vs.85%29.aspx | |
* LPVOID WINAPI VirtualAllocEx( | |
* __in_ HANDLE hProcess, | |
* __in_opt_ LPVOID lpAddress, | |
* __in_ SIZE_T dwSize, | |
* __in_ DWORD flAllocationType, | |
* __in_ DWORD flProtect | |
* ); | |
*/ | |
var VirtualAllocEx = kernel32.declare('VirtualAllocEx', ctypes.winapi_abi, ctypes.voidptr_t, //LPVOID | |
ctypes.voidptr_t, //HANDLE | |
ctypes.voidptr_t, //LPVOID | |
ctypes.voidptr_t.size == 8 ? ctypes.uint64_t : ctypes.unsigned_long, //SIZE_T | |
ctypes.unsigned_long, //DWORD | |
ctypes.unsigned_long //DWORD | |
); | |
/* http://msdn.microsoft.com/en-us/library/windows/desktop/ms681674%28v=vs.85%29.aspx | |
* BOOL WINAPI WriteProcessMemory( | |
* __in_ HANDLE hProcess, | |
* __in_ LPVOID lpBaseAddress, | |
* __in_ LPCVOID lpBuffer, | |
* __in_ SIZE_T nSize, | |
* __out_ SIZE_T *lpNumberOfBytesWritten | |
* ); | |
*/ | |
var WriteProcessMemory = kernel32.declare('WriteProcessMemory', ctypes.winapi_abi, ctypes.bool, //BOOL | |
ctypes.voidptr_t, //HANDLE | |
ctypes.voidptr_t, //LPVOID | |
ctypes.char.ptr, //LPCVOID | |
ctypes.voidptr_t.size == 8 ? ctypes.uint64_t : ctypes.unsigned_long, //SIZE_T | |
ctypes.voidptr_t.size == 8 ? ctypes.uint64_t : ctypes.unsigned_long //SIZE_T | |
); | |
/* http://msdn.microsoft.com/en-us/library/windows/desktop/ms680553%28v=vs.85%29.aspx | |
* BOOL WINAPI ReadProcessMemory( | |
* __in_ HANDLE hProcess, | |
* __in_ LPCVOID lpBaseAddress, | |
* __out_ LPVOID lpBuffer, | |
* __in_ SIZE_T nSize, | |
* __out_ SIZE_T *lpNumberOfBytesRead | |
* ); | |
*/ | |
var ReadProcessMemory = kernel32.declare('ReadProcessMemory', ctypes.winapi_abi, ctypes.bool, //BOOL | |
ctypes.voidptr_t, //HANDLE | |
ctypes.char.ptr, //LPCVOID | |
ctypes.voidptr_t, //LPVOID | |
ctypes.voidptr_t.size == 8 ? ctypes.uint64_t : ctypes.unsigned_long, //SIZE_T | |
ctypes.voidptr_t.size == 8 ? ctypes.uint64_t : ctypes.unsigned_long //SIZE_T | |
); | |
/* http://msdn.microsoft.com/en-us/library/windows/desktop/aa366894%28v=vs.85%29.aspx | |
* BOOL WINAPI VirtualFreeEx( | |
* __in_ HANDLE hProcess, | |
* __in_ LPVOID lpAddress, | |
* __in_ SIZE_T dwSize, | |
* __in_ DWORD dwFreeType | |
* ); | |
*/ | |
var VirtualFreeEx = kernel32.declare('VirtualFreeEx', ctypes.winapi_abi, ctypes.bool, //BOOL | |
ctypes.voidptr_t, //HANDLE | |
ctypes.voidptr_t, //LPVOID | |
ctypes.voidptr_t.size == 8 ? ctypes.uint64_t : ctypes.unsigned_long, //SIZE_T | |
ctypes.unsigned_long //DWORD | |
); | |
/* http://msdn.microsoft.com/en-us/library/windows/desktop/ms633522%28v=vs.85%29.aspx | |
* DWORD WINAPI GetWindowThreadProcessId( | |
* __in_ HWND hWnd, | |
* __out_opt_ LPDWORD lpdwProcessId | |
* ); | |
*/ | |
var GetWindowThreadProcessId = user32.declare('GetWindowThreadProcessId', ctypes.winapi_abi, ctypes.unsigned_long, //DWORD | |
ctypes.voidptr_t, //HWND | |
ctypes.unsigned_long.ptr //LPDWORD | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment