[Release] Flash fix for old clients.

01/14/2021 10:24 ConquerDev#16
#Me im maked solution with changed time directly. But this solution from Ultimation is more better .Thanks Ultimation !
01/14/2021 11:06 engo#17
same problem bro :(
01/14/2021 13:06 TrapNZap#18
Quote:
Originally Posted by Ultimation View Post
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...]
God in the sky, Ultimation on the ground !
01/14/2021 14:42 Russia441#19
must to be owner loder ?
01/14/2021 16:14 Envy\Craft#20
Quote:
Originally Posted by ConquerDev View Post
#Me im maked solution with changed time directly. But this solution from Ultimation is more better .Thanks Ultimation !
Anything related to changing time is not a solution.
01/14/2021 20:17 hyperco#21
ty, bro! back up and running again!
01/14/2021 22:53 ahmed_drbaka_lo#22
well, i wont gonna need this anymore but it's really good to have u back { Angelius }
- Ultimation
ppl like u made the game something else and u { Angelius } my friend i will never forget what u have done for me u have been helping me Since day 1
thanks for all ur amazing work guy's
01/14/2021 23:22 Ultimation#23
If anyone is having issues with windows 7 SP1 (even though its no longer officially supported), You can use the flash.ocx that comes with the client, however it will be missing the conquer logo in the top right i believe.
01/15/2021 05:48 { Angelius }#24
Quote:
Originally Posted by Ultimation View Post
If anyone is having issues with windows 7 SP1 (even though its no longer officially supported), You can use the flash.ocx that comes with the client, however it will be missing the conquer logo in the top right i believe.
Also, I noticed that if someone has several different version of flash player installed at the same time, The version would be included in the dll name to differentiate between dlls when loading them. So it would look something like this "flashxx.x.x.xxx.ocx" instead of "flash.ocx".

In this case, The hook will fail to find the dll.

This would fix issue.
Code:
if (StrStrW(lpLibFileName, L"Flash") && StrStrW(lpLibFileName, L".ocx"))
     lpLibFileName = L"./Flash.ocx";
01/15/2021 22:36 KOMOKABOY#25
im still having issues.. im not sure were ive went wrong...
01/16/2021 16:03 ryuchetval#26
thanks for this release, could you help me understand what this does?
This code is hooking the global kernelbase.dll in order to make the custom Flash.ocx to be used instead of the one installed locally?
If this is not the case, then does this need to be injected into the conquer executable?
I've tried to run it from a loader but I think I'm doing it wrong since it didn't throw any error but it didn't work, so I believe it should be injected into the client and run from the client itself?

EDIT: managed to make it work, thanks a lot for the fix
01/18/2021 09:07 Soulfly25#27
How can I make this work? Do I need to create a DLL and then hook it in the Conquer.exe?
01/18/2021 11:14 marcbacor6666#28
it should be added in the loader
01/18/2021 11:17 Soulfly25#29
Quote:
Originally Posted by marcbacor6666 View Post
it should be added in the loader
Yeah, If you are using a loader. But there is a chance that you can make a DLL to hook it in the Conquer.exe. Which I think the release code for Ultimation is that's something a peice of DLL to hook in Conquer.exe if yu dont have a loader.
01/18/2021 14:57 pintinho12#30
Quote:
Originally Posted by Soulfly25 View Post
Yeah, If you are using a loader. But there is a chance that you can make a DLL to hook it in the Conquer.exe. Which I think the release code for Ultimation is that's something a peice of DLL to hook in Conquer.exe if yu dont have a loader.
[Only registered and activated users can see links. Click Here To Register...]