[Release] Flash fix for old clients.

01/12/2021 19:37 Ultimation#1
As many of you are aware as of 12th of January 2021 Flash has been discontinued and many of you maybe facing the following issue.

The client does have a local version of flash, however it is version 6... very old and probably buggy.

I have attached a version of flash which you can put into the client folder, it is from late 2019.

[Only registered and activated users can see links. Click Here To Register...]

The client by default loads the system installed flash.ocx, this has been updated to expire on the 12th of january 2021.

Many of you have tried to remove the windows update. However, i have a better solution that microsoft can't remove. Here i have included flash.ocx which you can replace in your conquer directly. Now with a little help from a the following class you can add to your Loader / Hook. You can force the client to load the local flash.ocx from the client folder. This will fix your issue.

Code:
CFlashFix.h

#pragma once
class CFlashFix
{
	typedef HMODULE(_stdcall* HookLoadLibrary)(_In_ LPCWSTR lpLibFileName,
		_Reserved_ HANDLE hFile,
		_In_ DWORD dwFlags);
public:
	static void Hook();
	static HookLoadLibrary pLoadLibrary;
	static  HMODULE _stdcall LoadLibraryDetour(_In_ LPCWSTR lpLibFileName,
		_Reserved_ HANDLE hFile,
		_In_ DWORD dwFlags);
};
Code:
CFlashFix.cpp

#include "pch.h"
#include "CFlashFix.h"
#include <tchar.h>

CFlashFix::HookLoadLibrary CFlashFix::pLoadLibrary;
void CFlashFix::Hook()
{
    auto m = GetModuleHandleA("kernelbase.dll");
    auto proc = GetProcAddress(m, "LoadLibraryExW");
    pLoadLibrary = reinterpret_cast<CFlashFix::HookLoadLibrary>(proc);
    DetourTransactionBegin();
    DetourUpdateThread(GetCurrentThread());
    DetourAttach(&reinterpret_cast<PVOID&>(pLoadLibrary), LoadLibraryDetour);
    DetourTransactionCommit();
}

//Thanks to { Angelius } for the cleaner method.
HMODULE _stdcall CFlashFix::LoadLibraryDetour(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
{
	if (StrStrW(lpLibFileName, L"Flash.ocx"))
		lpLibFileName = L"./Flash.ocx";

    return pLoadLibrary(lpLibFileName, hFile, dwFlags);
}

I am aware this code may not be optimized and or messy. I gave it like 5 seconds of love. It is more just of a quick release to get you guys back up and running.

If done correctly, your client should now work again.

[Only registered and activated users can see links. Click Here To Register...]
01/12/2021 19:38 Yupmoh#2
I'd just like to say Thanks for the help and Happy birthday! :kappa:
01/12/2021 19:43 pintinho12#3
tyvm sir
01/12/2021 19:44 ConquerDev#4
Thanks !
01/12/2021 19:56 Captivate#5
Great work Ulti, appreciate it.

Quote:
Originally Posted by ConquerDev View Post
Thanks !
I thought you already fixed it?
01/12/2021 20:03 Ultimation#6
Quote:
Originally Posted by Captivate View Post
Great work Ulti, appreciate it.



I thought you already fixed it?
i don't think he did, since he Pmed saying he can't get this one to work on his client..
01/12/2021 20:10 Latyos#7
Nice one, thanks for the release
01/12/2021 20:22 iBotx#8
Great help, thanks.
01/12/2021 21:13 blizzardconquer#9
Thank youu!!!!!
01/12/2021 21:15 Dark^Magic#10
great work thanks
01/12/2021 21:46 bashondegek#11
tyvm! Great work!
01/12/2021 22:30 pintinho12#12
Quote:
Originally Posted by Ultimation View Post
i don't think he did, since he Pmed saying he can't get this one to work on his client..
Guess he tested his solution before midnight XD
01/12/2021 22:40 Ultimation#13
Quote:
Originally Posted by pintinho12 View Post
Guess he tested his solution before midnight XD
yea he just changed the system time back a day >.<
01/12/2021 22:49 { Angelius }#14
Slight improvement.

Code:
HMODULE _stdcall CFlashFix::LoadLibraryDetour(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
{
	if (StrStrW(lpLibFileName, L"Flash.ocx"))
		lpLibFileName = L"./Flash.ocx";

    return pLoadLibrary(lpLibFileName, hFile, dwFlags);
}
01/12/2021 22:57 Ultimation#15
Quote:
Originally Posted by { Angelius } View Post
Slight improvement.

Code:
HMODULE _stdcall CFlashFix::LoadLibraryDetour(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
{
	if (StrStrW(lpLibFileName, L"Flash.ocx"))
		lpLibFileName = L"./Flash.ocx";

    return pLoadLibrary(lpLibFileName, hFile, dwFlags);
}
kek i fucking hate the different methods for unicode and ascii