Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 02:06

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

Advertisement



DLL Entrypoint

Discussion on DLL Entrypoint within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Apr 2009
Posts: 177
Received Thanks: 42
DLL Entrypoint

Hi,

warum will das so nicht klappen?

Code:
#include <Windows.h>
#include <thread>


DWORD WINAPI Entrypoint(const LPVOID& reserved)
{
	MessageBox(NULL, "test", "test", NULL);
	return 0;
}

bool WINAPI DllMain(const HINSTANCE& handleDLL, const DWORD& callingReason, const LPVOID& reserved)
{
	if(callingReason == DLL_PROCESS_ATTACH)
	{
		std::thread threadEntry(Entrypoint, reserved);
		threadEntry.join();
	}

	return 1;
}
BrendonHomo is offline  
Old 08/24/2013, 17:50   #2
 
Master674b's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 255
Received Thanks: 110
Warum sind die Argumente für DllMain als const & deklariert?
Und nochwas: Wieso bool als Rückgabewert, wenn du 1 zurückgibst? Sollte zwar nichts ausmachen aber trotzdem, wozu? bool != BOOL. Das Funktionsobjekt, dass du std::thread übergibst kann übrigens irgend eine X beliebige Signatur haben. Muss nicht eine Windows Threadproc sein.
Master674b is offline  
Thanks
1 User
Old 08/24/2013, 18:03   #3
 
elite*gold: 0
Join Date: Jun 2010
Posts: 15
Received Thanks: 0
why you don´t talk english?


anyway,you cant use std:: inside DllMain function.
Ypu should do it this way --->
Code:
if(Reason == DLL_PROCESS_ATTACH)
{  
   _beginthread(MainHackFunc,0,NULL)
}
return 1;
and MainHackFunc is the code that contais tle while(1) loop,and the hotkeys,you can create also another thread to make a "functions "execution" thread".
Cr4ck3r385 is offline  
Old 08/24/2013, 18:44   #4
 
elite*gold: 0
Join Date: Apr 2009
Posts: 177
Received Thanks: 42
Quote:
Originally Posted by Master674b View Post
Warum sind die Argumente für DllMain als const & deklariert?
Und nochwas: Wieso bool als Rückgabewert, wenn du 1 zurückgibst? Sollte zwar nichts ausmachen aber trotzdem, wozu? bool != BOOL. Das Funktionsobjekt, dass du std::thread übergibst kann übrigens irgend eine X beliebige Signatur haben. Muss nicht eine Windows Threadproc sein.
const & spart doch Performance (auch wenn es in diesem Fall nichts ausmachen würde sowie in anderen fällen) oder habe ich da was falsch verstanden?

In der tat, ich bin davon ausgegangen, dass bool == BOOL ist, war der Meinung es währe typedeft.

Zum Thema std::thread, hatte CreateThread im Gedanken, da spielt die "Signatur" ja eine rolle, zumindest laut MSDN.

Wieder was neues dazugelernt.
BrendonHomo is offline  
Old 08/24/2013, 18:47   #5
 
elite*gold: 0
Join Date: Aug 2012
Posts: 236
Received Thanks: 94
Du kannst auch ganz normal CreateThread und (bestimmt auch) std::thread nutzen, solange du keinen Jahrzehnte alten Compiler nutzt. Aber dann würdest du auch nicht std::thread nutzen.
Du darfst aber nicht thread.join aufrufen. Der Thread wird erst dann ausgeführt, wenn die DllMain fertig ist. Es ist also eine schlechte Idee, auf den Thread zu warten.

Konstante Referenzen sind nur bei größeren Objekten sinnvoll, sonst wird möglicherweise eine Adresse noch größer als das Adressierte selbst kopiert. Und wenn dir eine Signatur vorgegeben wird, solltest du dich an diese halten.
Tasiro is offline  
Thanks
1 User
Old 08/24/2013, 18:59   #6
 
elite*gold: 0
Join Date: Apr 2009
Posts: 177
Received Thanks: 42
Quote:
Originally Posted by Tasiro View Post
Du kannst auch ganz normal CreateThread und (bestimmt auch) std::thread nutzen, solange du keinen Jahrzehnte alten Compiler nutzt. Aber dann würdest du auch nicht std::thread nutzen.
Du darfst aber nicht thread.join aufrufen. Der Thread wird erst dann ausgeführt, wenn die DllMain fertig ist. Es ist also eine schlechte Idee, auf den Thread zu warten.
Ah ich verstehe, das war auch der Grund wieso nichts passierte.

Quote:
Konstante Referenzen sind nur bei größeren Objekten sinnvoll, sonst wird möglicherweise eine Adresse noch größer als das Adressierte selbst kopiert. Und wenn dir eine Signatur vorgegeben wird, solltest du dich an diese halten.
Das wusste ich auch noch nicht, von welcher Größenordnung ist hier die rede?

Danke das ihr euer Wissen mit mir teilt. :P
BrendonHomo is offline  
Old 08/24/2013, 19:18   #7
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Ich denke alles, das größer als 4 oder 8 Bytes ist, bzw Objekte allgemein

Padmak
Padmak is offline  
Reply


Similar Threads Similar Threads
[Frage] Inject DLL via CRT @ EntryPoint
05/03/2012 - General Coding - 9 Replies
Hey Epvp, Ich versuch mich grad an einem simplen Injector, will aber nicht die LoadLibraryA-Methode nutzen. Wenn ich eine .DLL-Datei in OllyDbg lade (LoadDll.exe), dann breakt Olly am EntryPoint der DLL. Mir ist es möglich, diesen EntryPoint auszulesen. Bisherige Vorgehensweise: Ich allokiere nun Platz im Prozess (ich nenne ihn jetzt mal Game.exe) & schreibe via WriteProcessMemory() die Bytes der DLL in den Prozess. Wenn ich nun aber via CreateRemoteThread einen Thread an der Adresse...
EntryPoint -> NTMap
10/26/2011 - Diablo 2 - 3 Replies
Hi, hätte da mal ne Frage, ich benutze den NTBot im Moment nur für den Maphack, wie kann ich es ausschalten das er immer chiken used wenn ich am sterben bin ? Hab schon überall wo ich konnte den Wert auf =0 gesetzt, hat aber nichts gebracht :(. Danke im vorraus.



All times are GMT +1. The time now is 02:06.


Powered by vBulletin®
Copyright ©2000 - 2025, 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 ©2025 elitepvpers All Rights Reserved.