Skip to content

Instantly share code, notes, and snippets.

@oksoftware
Created September 5, 2009 09:13
Show Gist options
  • Save oksoftware/181356 to your computer and use it in GitHub Desktop.
Save oksoftware/181356 to your computer and use it in GitHub Desktop.
#include <windows.h>
#include <tchar.h>
#include "NPSWF32.h"
BOOL WINAPI DllMain(HINSTANCE hDLL, DWORD dwReason, LPVOID lpReserved){
switch(dwReason){
case DLL_PROCESS_ATTACH:
AddLog(_T("DllMain called: dwReason == DLL_PROCESS_ATTACH\r\n"));
hOriginal = LoadLibrary(ORIGINAL_DLL_NAME);
if(hOriginal == NULL){
return TRUE;
}
GetProcAddresses();
break;
case DLL_THREAD_ATTACH:
AddLog(_T("DllMain called: dwReason == DLL_THREAD_ATTACH\r\n"));
break;
case DLL_THREAD_DETACH:
AddLog(_T("DllMain called: dwReason == DLL_THREAD_DETACH\r\n"));
break;
case DLL_PROCESS_DETACH:
AddLog(_T("DllMain called: dwReason == DLL_PROCESS_DETACH\r\n"));
FreeLibrary(hOriginal);
break;
default:
AddLog(_T("DllMain called: dwReason == Unknown\r\n"));
break;
}
return TRUE;
}
BOOL AddLog(LPCTSTR str){
HANDLE hFile;
DWORD nBytesWritten;
hFile = CreateFile(LOG_FILE_NAME, GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile == INVALID_HANDLE_VALUE){
MessageBox(NULL, "CANNOT WRITE TO LOG FILE!", "Error:AddLog", MB_ICONERROR);
return FALSE;
}
SetFilePointer(hFile, 0, NULL, FILE_END);
if(WriteFile(hFile, str, _tcslen(str), &nBytesWritten, NULL) != 0){
return FALSE;
}
CloseHandle(hFile);
return TRUE;
}
BOOL GetProcAddresses(){
p_NP_GetEntryPoints = GetProcAddress(hOriginal, "NP_GetEntryPoints");
p_NP_Initialize = GetProcAddress(hOriginal, "NP_Initialize");
p_NP_Shutdown = GetProcAddress(hOriginal, "NP_Shutdown");
p_Flash_DisableLocalSecurity = GetProcAddress(hOriginal, "Flash_DisableLocalSecurity");
p_Flash_EnforceLocalSecurity = GetProcAddress(hOriginal, "Flash_EnforceLocalSecurity");
p_DllRegisterServer = GetProcAddress(hOriginal, "DllRegisterServer");
p_DllUnregisterServer = GetProcAddress(hOriginal, "DllUnregisterServer");
p_Java_ShockwaveFlash_CurrentFrame_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_CurrentFrame_stub");
p_Java_ShockwaveFlash_FlashVersion_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_FlashVersion_stub");
p_Java_ShockwaveFlash_FrameLoaded_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_FrameLoaded_stub");
p_Java_ShockwaveFlash_GetVariable_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_GetVariable_stub");
p_Java_ShockwaveFlash_GotoFrame_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_GotoFrame_stub");
p_Java_ShockwaveFlash_IsPlaying_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_IsPlaying_stub");
p_Java_ShockwaveFlash_LoadMovie_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_LoadMovie_stub");
p_Java_ShockwaveFlash_Pan_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_Pan_stub");
p_Java_ShockwaveFlash_PercentLoaded_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_PercentLoaded_stub");
p_Java_ShockwaveFlash_Play_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_Play_stub");
p_Java_ShockwaveFlash_SetVariable_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_SetVariable_stub");
p_Java_ShockwaveFlash_SetZoomRect_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_SetZoomRect_stub");
p_Java_ShockwaveFlash_StopPlay_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_StopPlay_stub");
p_Java_ShockwaveFlash_TCallFrame_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_TCallFrame_stub");
p_Java_ShockwaveFlash_TCallLabel_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_TCallLabel_stub");
p_Java_ShockwaveFlash_TCurrentFrame_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_TCurrentFrame_stub");
p_Java_ShockwaveFlash_TCurrentLabel_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_TCurrentLabel_stub");
p_Java_ShockwaveFlash_TGetProperty_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_TGetProperty_stub");
p_Java_ShockwaveFlash_TGotoFrame_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_TGotoFrame_stub");
p_Java_ShockwaveFlash_TGotoLabel_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_TGotoLabel_stub");
p_Java_ShockwaveFlash_TPlay_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_TPlay_stub");
p_Java_ShockwaveFlash_TSetProperty_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_TSetProperty_stub");
p_Java_ShockwaveFlash_TStopPlay_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_TStopPlay_stub");
p_Java_ShockwaveFlash_TotalFrames_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_TotalFrames_stub");
p_Java_ShockwaveFlash_Zoom_stub = GetProcAddress(hOriginal, "Java_ShockwaveFlash_Zoom_stub");
p_native_ShockwaveFlash_CurrentFrame = GetProcAddress(hOriginal, "native_ShockwaveFlash_CurrentFrame");
p_native_ShockwaveFlash_FlashVersion = GetProcAddress(hOriginal, "native_ShockwaveFlash_FlashVersion");
p_native_ShockwaveFlash_FrameLoaded = GetProcAddress(hOriginal, "native_ShockwaveFlash_FrameLoaded");
p_native_ShockwaveFlash_GetVariable = GetProcAddress(hOriginal, "native_ShockwaveFlash_GetVariable");
p_native_ShockwaveFlash_GotoFrame = GetProcAddress(hOriginal, "native_ShockwaveFlash_GotoFrame");
p_native_ShockwaveFlash_IsPlaying = GetProcAddress(hOriginal, "native_ShockwaveFlash_IsPlaying");
p_native_ShockwaveFlash_LoadMovie = GetProcAddress(hOriginal, "native_ShockwaveFlash_LoadMovie");
p_native_ShockwaveFlash_Pan = GetProcAddress(hOriginal, "native_ShockwaveFlash_Pan");
p_native_ShockwaveFlash_PercentLoaded = GetProcAddress(hOriginal, "native_ShockwaveFlash_PercentLoaded");
p_native_ShockwaveFlash_Play = GetProcAddress(hOriginal, "native_ShockwaveFlash_Play");
p_native_ShockwaveFlash_SetVariable = GetProcAddress(hOriginal, "native_ShockwaveFlash_SetVariable");
p_native_ShockwaveFlash_SetZoomRect = GetProcAddress(hOriginal, "native_ShockwaveFlash_SetZoomRect");
p_native_ShockwaveFlash_StopPlay = GetProcAddress(hOriginal, "native_ShockwaveFlash_StopPlay");
p_native_ShockwaveFlash_TCallFrame = GetProcAddress(hOriginal, "native_ShockwaveFlash_TCallFrame");
p_native_ShockwaveFlash_TCallLabel = GetProcAddress(hOriginal, "native_ShockwaveFlash_TCallLabel");
p_native_ShockwaveFlash_TCurrentFrame = GetProcAddress(hOriginal, "native_ShockwaveFlash_TCurrentFrame");
p_native_ShockwaveFlash_TCurrentLabel = GetProcAddress(hOriginal, "native_ShockwaveFlash_TCurrentLabel");
p_native_ShockwaveFlash_TGetProperty = GetProcAddress(hOriginal, "native_ShockwaveFlash_TGetProperty");
p_native_ShockwaveFlash_TGotoFrame = GetProcAddress(hOriginal, "native_ShockwaveFlash_TGotoFrame");
p_native_ShockwaveFlash_TGotoLabel = GetProcAddress(hOriginal, "native_ShockwaveFlash_TGotoLabel");
p_native_ShockwaveFlash_TPlay = GetProcAddress(hOriginal, "native_ShockwaveFlash_TPlay");
p_native_ShockwaveFlash_TSetProperty = GetProcAddress(hOriginal, "native_ShockwaveFlash_TSetProperty");
p_native_ShockwaveFlash_TStopPlay = GetProcAddress(hOriginal, "native_ShockwaveFlash_TStopPlay");
p_native_ShockwaveFlash_TotalFrames = GetProcAddress(hOriginal, "native_ShockwaveFlash_TotalFrames");
p_native_ShockwaveFlash_Zoom = GetProcAddress(hOriginal, "native_ShockwaveFlash_Zoom");
p_register_ShockwaveFlash = GetProcAddress(hOriginal, "register_ShockwaveFlash");
p_unregister_ShockwaveFlash = GetProcAddress(hOriginal, "unregister_ShockwaveFlash");
p_unuse_ShockwaveFlash = GetProcAddress(hOriginal, "unuse_ShockwaveFlash");
p_unuse_netscape_plugin_Plugin = GetProcAddress(hOriginal, "unuse_netscape_plugin_Plugin");
p_use_ShockwaveFlash = GetProcAddress(hOriginal, "use_ShockwaveFlash");
p_use_netscape_plugin_Plugin = GetProcAddress(hOriginal, "use_netscape_plugin_Plugin");
return TRUE;
}
//Hooked functions
__declspec(naked) int NP_GetEntryPoints(){
AddLog(_T("NP_GetEntryPoints called\r\n"));
_asm{ jmp p_NP_GetEntryPoints }
}
__declspec(naked) int NP_Initialize(){
AddLog(_T("NP_Initialize called\r\n"));
_asm{ jmp p_NP_Initialize }
}
__declspec(naked) int NP_Shutdown(){
AddLog(_T("NP_Shutdown called\r\n"));
_asm{ jmp p_NP_Shutdown }
}
__declspec(naked) int Flash_DisableLocalSecurity(){
AddLog(_T("Flash_DisableLocalSecurity called\r\n"));
_asm{ jmp p_Flash_DisableLocalSecurity }
}
__declspec(naked) int Flash_EnforceLocalSecurity(){
AddLog(_T("Flash_EnforceLocalSecurity called\r\n"));
_asm{ jmp p_Flash_EnforceLocalSecurity }
}
__declspec(naked) int DllRegisterServer(){
AddLog(_T("DllRegisterServer called\r\n"));
_asm{ jmp p_DllRegisterServer }
}
__declspec(naked) int DllUnregisterServer(){
AddLog(_T("DllUnregisterServer called\r\n"));
_asm{ jmp p_DllUnregisterServer }
}
__declspec(naked) int Java_ShockwaveFlash_CurrentFrame_stub(){
AddLog(_T("Java_ShockwaveFlash_CurrentFrame_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_CurrentFrame_stub }
}
__declspec(naked) int Java_ShockwaveFlash_FlashVersion_stub(){
AddLog(_T("Java_ShockwaveFlash_FlashVersion_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_FlashVersion_stub }
}
__declspec(naked) int Java_ShockwaveFlash_FrameLoaded_stub(){
AddLog(_T("Java_ShockwaveFlash_FrameLoaded_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_FrameLoaded_stub }
}
__declspec(naked) int Java_ShockwaveFlash_GetVariable_stub(){
AddLog(_T("Java_ShockwaveFlash_GetVariable_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_GetVariable_stub }
}
__declspec(naked) int Java_ShockwaveFlash_GotoFrame_stub(){
AddLog(_T("Java_ShockwaveFlash_GotoFrame_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_GotoFrame_stub }
}
__declspec(naked) int Java_ShockwaveFlash_IsPlaying_stub(){
AddLog(_T("Java_ShockwaveFlash_IsPlaying_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_IsPlaying_stub }
}
__declspec(naked) int Java_ShockwaveFlash_LoadMovie_stub(){
AddLog(_T("Java_ShockwaveFlash_LoadMovie_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_LoadMovie_stub }
}
__declspec(naked) int Java_ShockwaveFlash_Pan_stub(){
AddLog(_T("Java_ShockwaveFlash_Pan_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_Pan_stub }
}
__declspec(naked) int Java_ShockwaveFlash_PercentLoaded_stub(){
AddLog(_T("Java_ShockwaveFlash_PercentLoaded_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_PercentLoaded_stub }
}
__declspec(naked) int Java_ShockwaveFlash_Play_stub(){
AddLog(_T("Java_ShockwaveFlash_Play_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_Play_stub }
}
__declspec(naked) int Java_ShockwaveFlash_SetVariable_stub(){
AddLog(_T("Java_ShockwaveFlash_SetVariable_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_SetVariable_stub }
}
__declspec(naked) int Java_ShockwaveFlash_SetZoomRect_stub(){
AddLog(_T("Java_ShockwaveFlash_SetZoomRect_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_SetZoomRect_stub }
}
__declspec(naked) int Java_ShockwaveFlash_StopPlay_stub(){
AddLog(_T("Java_ShockwaveFlash_StopPlay_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_StopPlay_stub }
}
__declspec(naked) int Java_ShockwaveFlash_TCallFrame_stub(){
AddLog(_T("Java_ShockwaveFlash_TCallFrame_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_TCallFrame_stub }
}
__declspec(naked) int Java_ShockwaveFlash_TCallLabel_stub(){
AddLog(_T("Java_ShockwaveFlash_TCallLabel_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_TCallLabel_stub }
}
__declspec(naked) int Java_ShockwaveFlash_TCurrentFrame_stub(){
AddLog(_T("Java_ShockwaveFlash_TCurrentFrame_stub called\r\n"));
_asm{ jmp p_Java_ShockwaveFlash_TCurrentFrame_stub }
}
__declspec(naked) int Java_ShockwaveFlash_TCurrentLabel_stub(){
AddLog(_T("Java_ShockwaveFlash_TCurrentLabel_stub called\r\n"));
_asm{
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment