Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 16:19

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Problem mit Proxy DLL

Discussion on Problem mit Proxy DLL within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Dec 2013
Posts: 6
Received Thanks: 0
Problem mit Proxy DLL

Hallo zusammen,

ich bin neu hier im Forum, lese aber schon eine Weile fleissig mit.
Als WorldOfTanks Spieler hab ich mich oft gefragt, ob das Sichtsystem wirklich auf dem Server berechnet wird.
Mit einem Kollegen hab ich da lange drüber philosophiert und wir sind der Meinung, dass der Server zwar die Information, ob ein Panzer sichtbar ist oder nicht, liefert, es am Client aber erst ausgewertet wird.
In diesem Zuge hab ich die Funktionen der umbraob32.dll exportiert um mir eine Proxy DLL dazu zu schreiben.
Verwendet habe ich den Dev-C++ Compiler.
Source:
Code:
#include <windows.h>
#pragma pack(1)


HINSTANCE hLThis = 0;
HINSTANCE hL = 0;
FARPROC p[79] = {0};

int pint0, pint1, pint2, pint3, pint4, pint5, pint6, pint7, pint8, pint9, pint10;
int pint11, pint12, pint13, pint14, pint15, pint16, pint17, pint18, pint19, pint20;
int pint21, pint22, pint23, pint24, pint25, pint26, pint27, pint28, pint29, pint30;
int pint31, pint32, pint33, pint34, pint35, pint36, pint37, pint38, pint39, pint40;
int pint41, pint42, pint43, pint44, pint45, pint46, pint47, pint48, pint49, pint50;
int pint51, pint52, pint53, pint54, pint55, pint56, pint57, pint58, pint59, pint60;
int pint61, pint62, pint63, pint64, pint65, pint66, pint67, pint68, pint69, pint70;
int pint71, pint72, pint73, pint74, pint75, pint76, pint77, pint78;

BOOL WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID)
	{
	if (reason == DLL_PROCESS_ATTACH)
		{
		hLThis = hInst;
		hL = LoadLibrary("umbraob32_.dll");
		if (!hL) return false;


		p[0] = GetProcAddress(hL,"??0Commander@OB@Umbra@@IAE@PAVGraphicsServices@LibraryDefs@12@@Z");
		p[1] = GetProcAddress(hL,"??0GraphicsServices@LibraryDefs@OB@Umbra@@QAE@XZ");
		p[2] = GetProcAddress(hL,"??0SystemServices@LibraryDefs@OB@Umbra@@QAE@XZ");
		p[3] = GetProcAddress(hL,"??1Camera@OB@Umbra@@MAE@XZ");
		p[4] = GetProcAddress(hL,"??1Commander@OB@Umbra@@UAE@XZ");
		p[5] = GetProcAddress(hL,"??1GraphicsServices@LibraryDefs@OB@Umbra@@UAE@XZ");
		p[6] = GetProcAddress(hL,"??1SystemServices@LibraryDefs@OB@Umbra@@UAE@XZ");
		p[7] = GetProcAddress(hL,"?addReference@ReferenceCount@OB@Umbra@@QAEXXZ");
		p[8] = GetProcAddress(hL,"?allocateMemory@SystemServices@LibraryDefs@OB@Umbra@@UAEPAXI@Z");
		p[9] = GetProcAddress(hL,"?allocateQueryObject@GraphicsServices@LibraryDefs@OB@Umbra@@UAEPAXXZ");
		p[10] = GetProcAddress(hL,"?beginNamedEvent@SystemServices@LibraryDefs@OB@Umbra@@UAEXHPBD@Z");
		p[11] = GetProcAddress(hL,"?clearFlags@Library@OB@Umbra@@SAXW4FlagType@LibraryDefs@23@I@Z");
		p[12] = GetProcAddress(hL,"?create@Camera@OB@Umbra@@SAPAV123@XZ");
		p[13] = GetProcAddress(hL,"?create@Cell@OB@Umbra@@SAPAV123@XZ");
		p[14] = GetProcAddress(hL,"?create@OBBModel@OB@Umbra@@SAPAV123@ABVMatrix4x4@3@@Z");
		p[15] = GetProcAddress(hL,"?create@OBBModel@OB@Umbra@@SAPAV123@ABVVector3@3@0@Z");
		p[16] = GetProcAddress(hL,"?create@OBBModel@OB@Umbra@@SAPAV123@PBVVector3@3@H@Z");
		p[17] = GetProcAddress(hL,"?create@Object@OB@Umbra@@SAPAV123@PAVModel@23@@Z");
		p[18] = GetProcAddress(hL,"?endNamedEvent@SystemServices@LibraryDefs@OB@Umbra@@UAEXH@Z");
		p[19] = GetProcAddress(hL,"?error@SystemServices@LibraryDefs@OB@Umbra@@UAEXPBD@Z");
		p[20] = GetProcAddress(hL,"?exit@Library@OB@Umbra@@SAXXZ");
		p[21] = GetProcAddress(hL,"?getCameraToWorldMatrix@Viewer@Commander@OB@Umbra@@QBEXAAVMatrix4x4@4@@Z");
		p[22] = GetProcAddress(hL,"?getCellToCameraMatrix@Viewer@Commander@OB@Umbra@@QBEXAAVMatrix4x4@4@@Z");
		p[23] = GetProcAddress(hL,"?getDataCount@Commander@OB@Umbra@@IBEHXZ");
		p[24] = GetProcAddress(hL,"?getEventCount@Library@OB@Umbra@@SAHXZ");
		p[25] = GetProcAddress(hL,"?getFlags@Library@OB@Umbra@@SAIW4FlagType@LibraryDefs@23@@Z");
		p[26] = GetProcAddress(hL,"?getFrustum@Viewer@Commander@OB@Umbra@@QBEXAAUFrustum@4@@Z");
		p[27] = GetProcAddress(hL,"?getInfoString@Library@OB@Umbra@@SAPBDW4InfoString@LibraryDefs@23@@Z");
		p[28] = GetProcAddress(hL,"?getLine2D@Commander@OB@Umbra@@IBE?AW4LineType@LibraryDefs@23@AAVVector2@3@0AAVVector4@3@@Z");
		p[29] = GetProcAddress(hL,"?getLine3D@Commander@OB@Umbra@@IBE?AW4LineType@LibraryDefs@23@AAVVector3@3@0AAVVector4@3@@Z");
		p[30] = GetProcAddress(hL,"?getObjectData@Commander@OB@Umbra@@IBEPBVObjectData@123@H@Z");
		p[31] = GetProcAddress(hL,"?getOcclusionQueryData@Commander@OB@Umbra@@IBEPBVOcclusionQueryData@123@H@Z");
		p[32] = GetProcAddress(hL,"?getOcclusionQueryResultData@Commander@OB@Umbra@@IBEPAVOcclusionQueryResultData@123@H@Z");
		p[33] = GetProcAddress(hL,"?getProjectionMatrix@Viewer@Commander@OB@Umbra@@QBEXAAVMatrix4x4@4@W4Handedness@1234@@Z");
		p[34] = GetProcAddress(hL,"?getQueryObject@OcclusionQueryData@Commander@OB@Umbra@@QBEPAXXZ");
		p[35] = GetProcAddress(hL,"?getQueryObject@OcclusionQueryResultData@Commander@OB@Umbra@@QBEPAXXZ");
		p[36] = GetProcAddress(hL,"?getStatistic@Library@OB@Umbra@@SAMW4Statistic@LibraryDefs@23@@Z");
		p[37] = GetProcAddress(hL,"?getStatisticName@Library@OB@Umbra@@SAPBDW4Statistic@LibraryDefs@23@@Z");
		p[38] = GetProcAddress(hL,"?getTextMessage@Commander@OB@Umbra@@IBEPBDXZ");
		p[39] = GetProcAddress(hL,"?getTileMask@ObjectData@Commander@OB@Umbra@@QBEIXZ");
		p[40] = GetProcAddress(hL,"?getTriangleCount@OcclusionQueryData@Commander@OB@Umbra@@QBEIXZ");
		p[41] = GetProcAddress(hL,"?getTriangles@OcclusionQueryData@Commander@OB@Umbra@@QBEPBVVector3i@4@XZ");
		p[42] = GetProcAddress(hL,"?getUserPointer@ObjectData@Commander@OB@Umbra@@QBEPAXXZ");
		p[43] = GetProcAddress(hL,"?getVertexCount@OcclusionQueryData@Commander@OB@Umbra@@QBEIXZ");
		p[44] = GetProcAddress(hL,"?getVertices@OcclusionQueryData@Commander@OB@Umbra@@QBEPBVVector3@4@XZ");
		p[45] = GetProcAddress(hL,"?getViewer@Commander@OB@Umbra@@IBEPBVViewer@123@XZ");
		p[46] = GetProcAddress(hL,"?getWaitForResult@OcclusionQueryResultData@Commander@OB@Umbra@@QBE_NXZ");
		p[47] = GetProcAddress(hL,"?init@Library@OB@Umbra@@SAXW4MatrixFormat@LibraryDefs@23@PAVSystemServices@523@@Z");
		p[48] = GetProcAddress(hL,"?initThreads@Library@OB@Umbra@@SAXPAXHPAHH@Z");
		p[49] = GetProcAddress(hL,"?isOccluder@ObjectData@Commander@OB@Umbra@@QBE_NXZ");
		p[50] = GetProcAddress(hL,"?namedCounter@SystemServices@LibraryDefs@OB@Umbra@@UAEXMPAD@Z");
		p[51] = GetProcAddress(hL,"?processVisibility@Camera@OB@Umbra@@QAEXPAVCommander@23@@Z");
		p[52] = GetProcAddress(hL,"?release@ReferenceCount@OB@Umbra@@QBEXXZ");
		p[53] = GetProcAddress(hL,"?releaseMemory@SystemServices@LibraryDefs@OB@Umbra@@UAEXPAX@Z");
		p[54] = GetProcAddress(hL,"?releaseQueryObject@GraphicsServices@LibraryDefs@OB@Umbra@@UAEXPAX@Z");
		p[55] = GetProcAddress(hL,"?resetStatistics@Library@OB@Umbra@@SAXXZ");
		p[56] = GetProcAddress(hL,"?resolveVisibility@Camera@OB@Umbra@@QBEXXZ");
		p[57] = GetProcAddress(hL,"?set@Object@OB@Umbra@@QAEXW4Property@123@_N@Z");
		p[58] = GetProcAddress(hL,"?setBitmask@Camera@OB@Umbra@@QAEXI@Z");
		p[59] = GetProcAddress(hL,"?setBitmask@Object@OB@Umbra@@QAEXI@Z");
		p[60] = GetProcAddress(hL,"?setCameraToCellMatrix@Camera@OB@Umbra@@QAEXABVMatrix4x4@3@@Z");
		p[61] = GetProcAddress(hL,"?setCell@Camera@OB@Umbra@@QAEXPAVCell@23@@Z");
		p[62] = GetProcAddress(hL,"?setCell@Object@OB@Umbra@@QAEXPAVCell@23@@Z");
		p[63] = GetProcAddress(hL,"?setCullDistance@Object@OB@Umbra@@QAEXMM@Z");
		p[64] = GetProcAddress(hL,"?setCullPlanes@Camera@OB@Umbra@@QAEXPBVVector4@3@HW4Space@123@@Z");
		p[65] = GetProcAddress(hL,"?setEvaluationKey@Library@OB@Umbra@@SAXPBD@Z");
		p[66] = GetProcAddress(hL,"?setFlags@Library@OB@Umbra@@SAXW4FlagType@LibraryDefs@23@I@Z");
		p[67] = GetProcAddress(hL,"?setFrustum@Camera@OB@Umbra@@QAEXABUFrustum@3@@Z");
		p[68] = GetProcAddress(hL,"?setFrustumAndCullPlanes@Camera@OB@Umbra@@QAEXABUFrustum@3@PBVVector4@3@HW4Space@123@@Z");
		p[69] = GetProcAddress(hL,"?setModel@Object@OB@Umbra@@QAEXPAVModel@23@@Z");
		p[70] = GetProcAddress(hL,"?setObjectToCellMatrix@Object@OB@Umbra@@QAEXABVMatrix4x4@3@@Z");
		p[71] = GetProcAddress(hL,"?setProperties@Camera@OB@Umbra@@QAEXI@Z");
		p[72] = GetProcAddress(hL,"?setRenderCost@Object@OB@Umbra@@QAEXW4RenderCost@123@@Z");
		p[73] = GetProcAddress(hL,"?setResult@OcclusionQueryResultData@Commander@OB@Umbra@@QAEX_J@Z");
		p[74] = GetProcAddress(hL,"?setTilingScenario@Camera@OB@Umbra@@QAEXPBUTile@23@H@Z");
		p[75] = GetProcAddress(hL,"?setTome@Cell@OB@Umbra@@QAEXPBVTome@3@@Z");
		p[76] = GetProcAddress(hL,"?setTomeID@Object@OB@Umbra@@QAEXI@Z");
		p[77] = GetProcAddress(hL,"?setUserPointer@ReferenceCount@OB@Umbra@@QAEXPAX@Z");
		p[78] = GetProcAddress(hL,"?textCommand@Library@OB@Umbra@@SAHPAVCommander@23@PBD@Z");


		}
	if (reason == DLL_PROCESS_DETACH)
		{
		FreeLibrary(hL);
		}

	return 1;
	}

// ??0Commander@OB@Umbra@@IAE@PAVGraphicsServices@LibraryDefs@12@@Z
extern "C" __declspec(naked) void __stdcall __E__0__()
{
    pint0 = (int)p[0*4];
	__asm__ ("jmp _pint0");
}	
	

// ??0GraphicsServices@LibraryDefs@OB@Umbra@@QAE@XZ
extern "C" __declspec(naked) void __stdcall __E__1__()
{
	pint1 = (int)p[1*4];
    __asm__ ("jmp _pint1");		
}

// ??0SystemServices@LibraryDefs@OB@Umbra@@QAE@XZ
extern "C" __declspec(naked) void __stdcall __E__2__()
{
	pint2 = (int)p[2*4];
    __asm__ ("jmp _pint2");
}

// ??1Camera@OB@Umbra@@MAE@XZ
extern "C" __declspec(naked) void __stdcall __E__3__()
{
	pint3 = (int)p[3*4];
    __asm__ ("jmp _pint3");
}

// ??1Commander@OB@Umbra@@UAE@XZ
extern "C" __declspec(naked) void __stdcall __E__4__()
{
	pint4 = (int)p[4*4];
    __asm__ ("jmp _pint4");
}

// ??1GraphicsServices@LibraryDefs@OB@Umbra@@UAE@XZ
extern "C" __declspec(naked) void __stdcall __E__5__()
{
	pint5 = (int)p[5*4];
    __asm__ ("jmp _pint5");
}

// ??1SystemServices@LibraryDefs@OB@Umbra@@UAE@XZ
extern "C" __declspec(naked) void __stdcall __E__6__()
{
	pint6 = (int)p[6*4];
    __asm__ ("jmp _pint6");
}

// ?addReference@ReferenceCount@OB@Umbra@@QAEXXZ
extern "C" __declspec(naked) void __stdcall __E__7__()
{
	pint7 = (int)p[7*4];
    __asm__ ("jmp _pint7");
}

// ?allocateMemory@SystemServices@LibraryDefs@OB@Umbra@@UAEPAXI@Z
extern "C" __declspec(naked) void __stdcall __E__8__()
{
	pint8 = (int)p[8*4];
    __asm__ ("jmp _pint8");
}

// ?allocateQueryObject@GraphicsServices@LibraryDefs@OB@Umbra@@UAEPAXXZ
extern "C" __declspec(naked) void __stdcall __E__9__()
{
	pint9 = (int)p[9*4];
    __asm__ ("jmp _pint9");
}

// ?beginNamedEvent@SystemServices@LibraryDefs@OB@Umbra@@UAEXHPBD@Z
extern "C" __declspec(naked) void __stdcall __E__10__()
{
	pint10 = (int)p[10*4];
    __asm__ ("jmp _pint10");
}

// ?clearFlags@Library@OB@Umbra@@SAXW4FlagType@LibraryDefs@23@I@Z
extern "C" __declspec(naked) void __stdcall __E__11__()
{
	pint11 = (int)p[11*4];
    __asm__ ("jmp _pint11");
}

// ?create@Camera@OB@Umbra@@SAPAV123@XZ
extern "C" __declspec(naked) void __stdcall __E__12__()
{
	pint12 = (int)p[12*4];
    __asm__ ("jmp _pint12");
}

// ?create@Cell@OB@Umbra@@SAPAV123@XZ
extern "C" __declspec(naked) void __stdcall __E__13__()
{
	pint13 = (int)p[13*4];
    __asm__ ("jmp _pint13");
}

// ?create@OBBModel@OB@Umbra@@SAPAV123@ABVMatrix4x4@3@@Z
extern "C" __declspec(naked) void __stdcall __E__14__()
{
	pint14 = (int)p[0*4];
    __asm__ ("jmp _pint14");
}

// ?create@OBBModel@OB@Umbra@@SAPAV123@ABVVector3@3@0@Z
extern "C" __declspec(naked) void __stdcall __E__15__()
{
	pint15 = (int)p[15*4];
    __asm__ ("jmp _pint15");
}

// ?create@OBBModel@OB@Umbra@@SAPAV123@PBVVector3@3@H@Z
extern "C" __declspec(naked) void __stdcall __E__16__()
{
	pint16 = (int)p[16*4];
    __asm__ ("jmp _pint16");
}

// ?create@Object@OB@Umbra@@SAPAV123@PAVModel@23@@Z
extern "C" __declspec(naked) void __stdcall __E__17__()
{
	pint17 = (int)p[17*4];
    __asm__ ("jmp _pint17");
}

// ?endNamedEvent@SystemServices@LibraryDefs@OB@Umbra@@UAEXH@Z
extern "C" __declspec(naked) void __stdcall __E__18__()
{
	pint18 = (int)p[18*4];
    __asm__ ("jmp _pint18");
}

// ?error@SystemServices@LibraryDefs@OB@Umbra@@UAEXPBD@Z
extern "C" __declspec(naked) void __stdcall __E__19__()
{
	pint19 = (int)p[19*4];
    __asm__ ("jmp _pint19");
}

// ?exit@Library@OB@Umbra@@SAXXZ
extern "C" __declspec(naked) void __stdcall __E__20__()
{
	pint20 = (int)p[20*4];
    __asm__ ("jmp _pint20");
}

// ?getCameraToWorldMatrix@Viewer@Commander@OB@Umbra@@QBEXAAVMatrix4x4@4@@Z
extern "C" __declspec(naked) void __stdcall __E__21__()
{
	pint21 = (int)p[21*4];
    __asm__ ("jmp _pint21");
}

// ?getCellToCameraMatrix@Viewer@Commander@OB@Umbra@@QBEXAAVMatrix4x4@4@@Z
extern "C" __declspec(naked) void __stdcall __E__22__()
{
	pint22 = (int)p[22*4];
    __asm__ ("jmp _pint22");
}

// ?getDataCount@Commander@OB@Umbra@@IBEHXZ
extern "C" __declspec(naked) void __stdcall __E__23__()
{
	pint23 = (int)p[23*4];
    __asm__ ("jmp _pint23");
}

// ?getEventCount@Library@OB@Umbra@@SAHXZ
extern "C" __declspec(naked) void __stdcall __E__24__()
{
	pint24 = (int)p[24*4];
    __asm__ ("jmp _pint24");
}

// ?getFlags@Library@OB@Umbra@@SAIW4FlagType@LibraryDefs@23@@Z
extern "C" __declspec(naked) void __stdcall __E__25__()
{
	pint25 = (int)p[0*4];
    __asm__ ("jmp _pint25");
}

// ?getFrustum@Viewer@Commander@OB@Umbra@@QBEXAAUFrustum@4@@Z
extern "C" __declspec(naked) void __stdcall __E__26__()
{
	pint26 = (int)p[26*4];
    __asm__ ("jmp _pint26");
}

// ?getInfoString@Library@OB@Umbra@@SAPBDW4InfoString@LibraryDefs@23@@Z
extern "C" __declspec(naked) void __stdcall __E__27__()
{
	pint27 = (int)p[27*4];
    __asm__ ("jmp _pint27");
}

// ?getLine2D@Commander@OB@Umbra@@IBE?AW4LineType@LibraryDefs@23@AAVVector2@3@0AAVVector4@3@@Z
extern "C" __declspec(naked) void __stdcall __E__28__()
{
	pint28 = (int)p[28*4];
    __asm__	("jmp _pint28");
}

// ?getLine3D@Commander@OB@Umbra@@IBE?AW4LineType@LibraryDefs@23@AAVVector3@3@0AAVVector4@3@@Z
extern "C" __declspec(naked) void __stdcall __E__29__()
{
	pint29 = (int)p[29*4];
    __asm__	("jmp _pint29");
}

// ?getObjectData@Commander@OB@Umbra@@IBEPBVObjectData@123@H@Z
extern "C" __declspec(naked) void __stdcall __E__30__()
{
	pint30 = (int)p[30*4];
    __asm__	("jmp _pint30");
}

// ?getOcclusionQueryData@Commander@OB@Umbra@@IBEPBVOcclusionQueryData@123@H@Z
extern "C" __declspec(naked) void __stdcall __E__31__()
{
	pint31 = (int)p[31*4];
    __asm__	("jmp _pint31");
}

// ?getOcclusionQueryResultData@Commander@OB@Umbra@@IBEPAVOcclusionQueryResultData@123@H@Z
extern "C" __declspec(naked) void __stdcall __E__32__()
{
	pint32 = (int)p[32*4];
    __asm__	("jmp _pint32");
}

// ?getProjectionMatrix@Viewer@Commander@OB@Umbra@@QBEXAAVMatrix4x4@4@W4Handedness@1234@@Z
extern "C" __declspec(naked) void __stdcall __E__33__()
{
	pint33 = (int)p[33*4];
    __asm__ ("jmp _pint33");
}

// ?getQueryObject@OcclusionQueryData@Commander@OB@Umbra@@QBEPAXXZ
extern "C" __declspec(naked) void __stdcall __E__34__()
{
	pint34 = (int)p[34*4];
    __asm__ ("jmp _pint34");
}

// ?getQueryObject@OcclusionQueryResultData@Commander@OB@Umbra@@QBEPAXXZ
extern "C" __declspec(naked) void __stdcall __E__35__()
{
	pint35 = (int)p[35*4];
    __asm__	("jmp _pint35");
}

// ?getStatistic@Library@OB@Umbra@@SAMW4Statistic@LibraryDefs@23@@Z
extern "C" __declspec(naked) void __stdcall __E__36__()
{
	pint36 = (int)p[36*4];
    __asm__	("jmp _pint36");
}

// ?getStatisticName@Library@OB@Umbra@@SAPBDW4Statistic@LibraryDefs@23@@Z
extern "C" __declspec(naked) void __stdcall __E__37__()
{
	pint37 = (int)p[37*4];
    __asm__ ("jmp _pint37");
}

// ?getTextMessage@Commander@OB@Umbra@@IBEPBDXZ
extern "C" __declspec(naked) void __stdcall __E__38__()
{
	pint38 = (int)p[38*4];
    __asm__	("jmp _pint38");
}

// ?getTileMask@ObjectData@Commander@OB@Umbra@@QBEIXZ
extern "C" __declspec(naked) void __stdcall __E__39__()
{
	pint39 = (int)p[39*4];
    __asm__	("jmp _pint39");
}

// ?getTriangleCount@OcclusionQueryData@Commander@OB@Umbra@@QBEIXZ
extern "C" __declspec(naked) void __stdcall __E__40__()
{
	pint40 = (int)p[40*4];
    __asm__	("jmp _pint40");
}

// ?getTriangles@OcclusionQueryData@Commander@OB@Umbra@@QBEPBVVector3i@4@XZ
extern "C" __declspec(naked) void __stdcall __E__41__()
{
	pint41 = (int)p[41*4];
    __asm__	("jmp _pint41");
}

// ?getUserPointer@ObjectData@Commander@OB@Umbra@@QBEPAXXZ
extern "C" __declspec(naked) void __stdcall __E__42__()
{
	pint42 = (int)p[42*4];
    __asm__	("jmp _pint42");
}

// ?getVertexCount@OcclusionQueryData@Commander@OB@Umbra@@QBEIXZ
extern "C" __declspec(naked) void __stdcall __E__43__()
{
	pint43 = (int)p[43*4];
    __asm__	("jmp _pint43");
}

// ?getVertices@OcclusionQueryData@Commander@OB@Umbra@@QBEPBVVector3@4@XZ
extern "C" __declspec(naked) void __stdcall __E__44__()
{
	pint44 = (int)p[44*4];
    __asm__	("jmp _pint44");
}

// ?getViewer@Commander@OB@Umbra@@IBEPBVViewer@123@XZ
extern "C" __declspec(naked) void __stdcall __E__45__()
{
	pint45 = (int)p[45*4];
    __asm__	("jmp _pint45");
}

// ?getWaitForResult@OcclusionQueryResultData@Commander@OB@Umbra@@QBE_NXZ
extern "C" __declspec(naked) void __stdcall __E__46__()
{
	pint46 = (int)p[46*4];
    __asm__	("jmp _pint46");
}

// ?init@Library@OB@Umbra@@SAXW4MatrixFormat@LibraryDefs@23@PAVSystemServices@523@@Z
extern "C" __declspec(naked) void __stdcall __E__47__()
{
	pint47 = (int)p[47*4];
    __asm__	("jmp _pint47");
}

// ?initThreads@Library@OB@Umbra@@SAXPAXHPAHH@Z
extern "C" __declspec(naked) void __stdcall __E__48__()
{
	pint48 = (int)p[48*4];
    __asm__	("jmp _pint48");
}

// ?isOccluder@ObjectData@Commander@OB@Umbra@@QBE_NXZ
extern "C" __declspec(naked) void __stdcall __E__49__()
{
	pint49 = (int)p[49*4];
    __asm__	("jmp _pint49");
}

// ?namedCounter@SystemServices@LibraryDefs@OB@Umbra@@UAEXMPAD@Z
extern "C" __declspec(naked) void __stdcall __E__50__()
{
	pint50 = (int)p[50*4];
    __asm__	("jmp _pint50");
}

// ?processVisibility@Camera@OB@Umbra@@QAEXPAVCommander@23@@Z
extern "C" __declspec(naked) void __stdcall __E__51__()
{
	pint51 = (int)p[51*4];
    __asm__	("jmp _pint51");
}

// ?release@ReferenceCount@OB@Umbra@@QBEXXZ
extern "C" __declspec(naked) void __stdcall __E__52__()
{
	pint52 = (int)p[52*4];
    __asm__	("jmp _pint52");
}

// ?releaseMemory@SystemServices@LibraryDefs@OB@Umbra@@UAEXPAX@Z
extern "C" __declspec(naked) void __stdcall __E__53__()
{
	pint53 = (int)p[53*4];
    __asm__	("jmp _pint53");
}

// ?releaseQueryObject@GraphicsServices@LibraryDefs@OB@Umbra@@UAEXPAX@Z
extern "C" __declspec(naked) void __stdcall __E__54__()
{
	pint54 = (int)p[54*4];
    __asm__	("jmp _pint54");
}

// ?resetStatistics@Library@OB@Umbra@@SAXXZ
extern "C" __declspec(naked) void __stdcall __E__55__()
{
	pint55 = (int)p[55*4];
    __asm__	("jmp _pint55");
}

// ?resolveVisibility@Camera@OB@Umbra@@QBEXXZ
extern "C" __declspec(naked) void __stdcall __E__56__()
{
	pint56 = (int)p[56*4];
    __asm__	("jmp _pint56");
}

// ?set@Object@OB@Umbra@@QAEXW4Property@123@_N@Z
extern "C" __declspec(naked) void __stdcall __E__57__()
{
	pint57 = (int)p[57*4];
    __asm__	("jmp _pint57");
}

// ?setBitmask@Camera@OB@Umbra@@QAEXI@Z
extern "C" __declspec(naked) void __stdcall __E__58__()
{
	pint58 = (int)p[58*4];
    __asm__	("jmp _pint58");
}

// ?setBitmask@Object@OB@Umbra@@QAEXI@Z
extern "C" __declspec(naked) void __stdcall __E__59__()
{
	pint59 = (int)p[59*4];
    __asm__	("jmp _pint59");
}

// ?setCameraToCellMatrix@Camera@OB@Umbra@@QAEXABVMatrix4x4@3@@Z
extern "C" __declspec(naked) void __stdcall __E__60__()
{
	pint60 = (int)p[60*4];
    __asm__	("jmp _pint60");
}

// ?setCell@Camera@OB@Umbra@@QAEXPAVCell@23@@Z
extern "C" __declspec(naked) void __stdcall __E__61__()
{
	pint61 = (int)p[61*4];
    __asm__	("jmp _pint61");
}

// ?setCell@Object@OB@Umbra@@QAEXPAVCell@23@@Z
extern "C" __declspec(naked) void __stdcall __E__62__()
{
	pint62 = (int)p[62*4];
    __asm__	("jmp _pint62");
}

// ?setCullDistance@Object@OB@Umbra@@QAEXMM@Z
extern "C" __declspec(naked) void __stdcall __E__63__()
{
	pint63 = (int)p[63*4];
    __asm__	("jmp _pint63");
}

// ?setCullPlanes@Camera@OB@Umbra@@QAEXPBVVector4@3@HW4Space@123@@Z
extern "C" __declspec(naked) void __stdcall __E__64__()
{
	pint64 = (int)p[64*4];
    __asm__	("jmp _pint64");
}

// ?setEvaluationKey@Library@OB@Umbra@@SAXPBD@Z
extern "C" __declspec(naked) void __stdcall __E__65__()
{
	pint65 = (int)p[65*4];
    __asm__	("jmp _pint65");
}

// ?setFlags@Library@OB@Umbra@@SAXW4FlagType@LibraryDefs@23@I@Z
extern "C" __declspec(naked) void __stdcall __E__66__()
{
	pint66 = (int)p[66*4];
    __asm__	("jmp _pint66");
}

// ?setFrustum@Camera@OB@Umbra@@QAEXABUFrustum@3@@Z
extern "C" __declspec(naked) void __stdcall __E__67__()
{
	pint67 = (int)p[67*4];
    __asm__	("jmp _pint67");
}

// ?setFrustumAndCullPlanes@Camera@OB@Umbra@@QAEXABUFrustum@3@PBVVector4@3@HW4Space@123@@Z
extern "C" __declspec(naked) void __stdcall __E__68__()
{
	pint68 = (int)p[68*4];
    __asm__	("jmp _pint68");
}

// ?setModel@Object@OB@Umbra@@QAEXPAVModel@23@@Z
extern "C" __declspec(naked) void __stdcall __E__69__()
{
	pint69 = (int)p[69*4];
    __asm__	("jmp _pint69");
}

// ?setObjectToCellMatrix@Object@OB@Umbra@@QAEXABVMatrix4x4@3@@Z
extern "C" __declspec(naked) void __stdcall __E__70__()
{
	pint70 = (int)p[70*4];
    __asm__	("jmp _pint70");
}

// ?setProperties@Camera@OB@Umbra@@QAEXI@Z
extern "C" __declspec(naked) void __stdcall __E__71__()
{
	pint71 = (int)p[71*4];
    __asm__	("jmp _pint71");
}

// ?setRenderCost@Object@OB@Umbra@@QAEXW4RenderCost@123@@Z
extern "C" __declspec(naked) void __stdcall __E__72__()
{
	pint72 = (int)p[72*4];
    __asm__	("jmp _pint72");
}

// ?setResult@OcclusionQueryResultData@Commander@OB@Umbra@@QAEX_J@Z
extern "C" __declspec(naked) void __stdcall __E__73__()
{
	pint73 = (int)p[73*4];
    __asm__	("jmp _pint73");
}

// ?setTilingScenario@Camera@OB@Umbra@@QAEXPBUTile@23@H@Z
extern "C" __declspec(naked) void __stdcall __E__74__()
{
	pint74 = (int)p[74*4];
    __asm__	("jmp _pint74");
}

// ?setTome@Cell@OB@Umbra@@QAEXPBVTome@3@@Z
extern "C" __declspec(naked) void __stdcall __E__75__()
{
	pint75 = (int)p[75*4];
    __asm__	("jmp _pint75");
}

// ?setTomeID@Object@OB@Umbra@@QAEXI@Z
extern "C" __declspec(naked) void __stdcall __E__76__()
{
	pint76 = (int)p[76*4];
    __asm__ ("jmp _pint76");
}

// ?setUserPointer@ReferenceCount@OB@Umbra@@QAEXPAX@Z
extern "C" __declspec(naked) void __stdcall __E__77__()
{
	pint77 = (int)p[77*4];
    __asm__	("jmp _pint77");
}

// ?textCommand@Library@OB@Umbra@@SAHPAVCommander@23@PBD@Z
extern "C" __declspec(naked) void __stdcall __E__78__()
{
	pint78 = (int)p[78*4];
    __asm__	("jmp _pint78");
}
Leider funktioniert die Initialisierung nicht mit der Fehlermeldung
"Fehler bei Initialisierung 0xc000007b"

Hat vielleicht jemand einen Tipp woran es liegen kann?
Falls noch weitere Infos zu den Funktionen aus der DLL nötig, kann ich die posten.(zumindest das was der Disassembler hergibt)

Falls ich im falschen Forum gepostet habe, dann seht es mir bitte nach.

Gruß
Hanse

Edit:
Ok, hab vergessen beim Kompilieren das DEF File mit anzugeben.
WOT Fenster öffnet sich schonmal kurz, wird dann aber wieder geschlossen.......mal schauen.
HanseDavion is offline  
Old 12/06/2013, 20:00   #2
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,227
Auch wenn der Client es auswertet, geschieht das checken, berechnen etc. auf dem Server. Du kannst vielleicht einen Effekt bei dir auslösen, dieser kann aber falsch etc. sein, da wie gesagt das ganze auf dem Server passiert.

Eine Möglichkeit bei so einem Game zu cheaten/hacken wär, Packets mitzulesen, verändern und an den Server schicken. Sprich das ganze bei dir emulieren und an den Server dann schicken.

Wo ich mir WoT zum ersten mal geholt und angesehen hab, konnte ich schon im Menü nach dem einloggen erkennen, dass es eine Art "Browser" ist. Wenn du in den Shop gehen wolltest etc. hat es immer bissl länger geladen(und hatte leichte Merkmale von Browsern die eine Seite laden), bei anderen Games passiert sowas eigentlich viel schneller, dies hat mich dann vergewissert das ca 90% des Spiels auf dem Server basiert/läuft.


Das ist die Zukunft und eine Art des Anti-Cheatings. Es wird alles mehr auf den Servern ausgelagert und der Server übernimmt immer mehr und mehr, der Client kümmert sich fürs darstellen.

Falls ich mich wo täusche, dann bitte darauf hinweisen.
XxharCs is offline  
Old 12/06/2013, 20:19   #3
 
elite*gold: 0
Join Date: Dec 2013
Posts: 6
Received Thanks: 0
Das es eine Art Browser mit Python Verarbeitung ist haben wir auch schon festgestellt. Die komplette Spiellogik wird in den vorkompilierten Pythonscripts erledigt.
Ich würde drauf wetten, dass alle Vektoren von Mitspielern einer Runde an den Client gesendet werden und per Flag geregelt wird welcher Panzer sichtbar ist und welcher nicht.
Die Funktionen in der umbraob32.dll weisen jedenfalls daraufhin.
Wenn man nun generell alle Feindpanzer Flags auf "sichtbar" setzt, ist es völlig egal was der Server sendet oder macht, am Client sind die Panzer immer sichtbar.
HanseDavion is offline  
Old 12/06/2013, 20:29   #4
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,227
Immer sichtbar, aber ob die Position stimmt? Der Server sendet dir immer wieder neue Position mit den Flags etc. Wie gesagt bei dir ist es sichtbar, aber diese Information muss nicht stimmen
XxharCs is offline  
Old 12/06/2013, 20:53   #5
 
elite*gold: 0
Join Date: Dec 2013
Posts: 6
Received Thanks: 0
Da die Vektoren mitgesendet werden stimmt auch die Position.
An den Positionsdaten wird ja nichts geändert, nur am Flag.
HanseDavion is offline  
Old 12/06/2013, 22:39   #6
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
dass du in den jeweiligen funktionen jeweils den arrayindex * 4 nimmst ist auf jedenfall falsch.
was soll die proxy dll überhaupt - und wo kommt genau der fehler?
außerdem generell net ganz schön das ganze unnötige kopieren da.
und wenn du unter windows arbeitest nimm visual studio, express version ist kostenlos, kann mehr als devc++ und hat by default nen aktuellen/brauchbaren compiler.
Dr. Coxxy is offline  
Old 12/07/2013, 00:00   #7
 
elite*gold: 0
Join Date: Dec 2013
Posts: 6
Received Thanks: 0
Die Proxy DLL soll den Sinn haben, dass ich die Daten die da durchlaufen manipulieren will.
Momentan will ich erstmal erreichen, dass sie vom Program ordentlich gefressen wird.
Die Kopiererei muss so gemacht werden, da der Linker von dev-c++ sonst den Code nicht kompiliert. Nicht schön aber selten, ich weiss.......
Der Initialisierungsfehler ist schon behoben, wie ich schon schrieb, hatte vergessen die DEF Datei mit zuverarbeiten.
Die original DLL läd einen haufen System DLLs nach und da liegt jetzt der Knackpunkt. Das Program startet schon, aber schliesst dann sofort wieder.
Welche DLLs nachgeladen werden hab ich mir durch den dependensy walker geholt.
Momentan hat die Proxy DLL ja nur die Funktionspointer und läd keine weiteren DLLs nach.
Bin offen für Ansätz wie man das angehen kann.

Ja VS2008Prof hab ich schon, aber noch nicht installiert.
HanseDavion is offline  
Old 12/07/2013, 10:03   #8



 
+Yazzn's Avatar
 
elite*gold: 420
Join Date: Jan 2012
Posts: 1,030
Received Thanks: 981
LoadLibrary in DllMain?
Quote:
The entry-point function should perform only simple initialization or termination tasks. It must not call the LoadLibrary or LoadLibraryEx function (or a function that calls these functions), because this may create dependency loops in the DLL load order. This can result in a DLL being used before the system has executed its initialization code. Similarly, the entry-point function must not call the FreeLibrary function (or a function that calls FreeLibrary) during process termination, because this can result in a DLL being used after the system has executed its termination code.
-- MSDN
+Yazzn is offline  
Old 12/07/2013, 13:26   #9
 
Lazeboy's Avatar
 
elite*gold: 0
Join Date: Jun 2008
Posts: 451
Received Thanks: 410
Quote:
Originally Posted by XxharCs View Post
Auch wenn der Client es auswertet, geschieht das checken, berechnen etc. auf dem Server. Du kannst vielleicht einen Effekt bei dir auslösen, dieser kann aber falsch etc. sein, da wie gesagt das ganze auf dem Server passiert.

Eine Möglichkeit bei so einem Game zu cheaten/hacken wär, Packets mitzulesen, verändern und an den Server schicken. Sprich das ganze bei dir emulieren und an den Server dann schicken.

Wo ich mir WoT zum ersten mal geholt und angesehen hab, konnte ich schon im Menü nach dem einloggen erkennen, dass es eine Art "Browser" ist. Wenn du in den Shop gehen wolltest etc. hat es immer bissl länger geladen(und hatte leichte Merkmale von Browsern die eine Seite laden), bei anderen Games passiert sowas eigentlich viel schneller, dies hat mich dann vergewissert das ca 90% des Spiels auf dem Server basiert/läuft.


Das ist die Zukunft und eine Art des Anti-Cheatings. Es wird alles mehr auf den Servern ausgelagert und der Server übernimmt immer mehr und mehr, der Client kümmert sich fürs darstellen.

Falls ich mich wo täusche, dann bitte darauf hinweisen.
Alles was mit Packet-Manipulation zu hacken geht, geht auch ohne

@TE:
warum rechnest da jede adresse "mal" 4?
probiers mal so

Code:
__asm{jmp p[0]}
__asm{jmp p[1]}
__asm{jmp p[2]}
...
...
...
Lazeboy is offline  
Old 12/09/2013, 09:26   #10
 
elite*gold: 0
Join Date: Dec 2013
Posts: 6
Received Thanks: 0
Hallo zusammen,

sorry das ich mich erst jetzt melde, Wochenende war ich zeitlich zu eingespannt.
Ja das *4 stammt vom sizeof(void*), werds ändern.
Die abhängigen DLLs werd ich auch nachladen.
Melde mich dann wieder.
HanseDavion is offline  
Old 12/11/2013, 12:31   #11
 
elite*gold: 0
Join Date: Dec 2013
Posts: 6
Received Thanks: 0
Hallöchen,

so ich hab den ganzen Code jetzt in VS2008 Prof. überführt.
Die Kompilierung funktioniert auch, aber es gibt Probleme mit dem DEF File.
Die Funktionsnamen werden nicht korrekt aus dem DEF File übernommen.

Beispiel:
EXPORTS
??0Commander@OB@Umbra@@IAE@PAVGraphicsServices@Lib raryDefs@12@@Z=__E__0__ @1

In der fertigen DLL findet man dann nur die Funktion "??0Commander".
Es wird immer nur bis zum ersten @ Zeichen übernommen und dann ist Feierabend.

Hochkommas und Escape-Zeichen hab ich schon ausprobiert, geht nicht.
Kann mir da jemand helfen?

Zu meiner Entlastung will ich sagen, dass ich vorher nie mit Visual Studio gearbeitet habe. Kenn mich also nicht mit den Eigenheiten aus.
HanseDavion is offline  
Reply


Similar Threads Similar Threads
proxy problem
04/09/2011 - Metin2 Private Server - 3 Replies
Ich habe mir proxy nach dieser anleitung installiert: http://www.elitepvpers.com/forum/metin2-pserver-gu ides-strategies/377534-how-eigner-proxy-root-gm-re chte.html Doch jetzt hab ich das problem, dass der proxy übels langsam ist. Davor auf mein alten root hab ich den proxy auch so installiert und der war richtig schnell. Das heißt da hatte ich keine lags usw. Und jetzt mit dem proxy hab ich voll übels lags im spiel. Woran kann es liegen das mein proxy so langsam ist? Wie krieg ich den...
Proxy Problem (JAP)
01/19/2011 - Technical Support - 5 Replies
Moin,moin Ich hab ein Problem mit meinem Proxy Server seit dem ich von FF auf Opera gewechselt bin.Ich hab den Proxy von JAP also diesem anonymiesierungsprogramm (falsch geschrieben ich weiß) Ich hatte mir JonDoFox für mein FF geholt da FF aber ein paar Funktionen auf meinem Pc blockiert hatte hab ich beschlossen auf Opera zu wechseln.Ich hab nun alles eingestellt wie es Jap wollte HTTP 127.0.0.1 HTTPS 127.0.0.1 FTP 127.0.0.1 soweit so gut funktionieren tut es auch aber mein Browser...
Proxy Problem
05/29/2010 - Diablo 2 - 1 Replies
Mir kam die Idee 8 bots in einem game laufen zu lassen, um besser "leveln" zu können. 4 auf einem Virtuellen PC in vmware und den rest auf dem Normalen. Die 4 auf vmware laufen super! Ich habe mich dann nach dem How to join 1 Game with more than 4 Chars or bnet with more than 8 per PC/IP Guide aus dem Forum hier gerichtet. Nach erfolgreichem Einstellen habe ich mir viele verschiedene proxys geholt und getestet. Allerdings immer wenn ich mit dem 5ten char versuche über ein proxy ins...
problem with cid proxy
06/10/2009 - Conquer Online 2 - 3 Replies
evry time i installe cid proxy my conquer dosnt work anymore when the aiutopatch is done CO just disapear
Proxy problem
11/11/2007 - Technical Support - 3 Replies
hiho hab folgendes problem hab mir im internet n paar proxy listen zusammn gesucht und gescannt ( 10.000 stück) Gescannt hab ich mit "Charon" Naja am schluss habe ich die proxies die mit "good" eingestuft wurden hintereinander getestet keiner von denen ging...



All times are GMT +2. The time now is 16:19.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.