|
You last visited: Today at 01:09
Advertisement
InternetOpenUrlA hook - URL verändern.
Discussion on InternetOpenUrlA hook - URL verändern. within the C/C++ forum part of the Coders Den category.
06/06/2013, 21:28
|
#1
|
elite*gold: 14
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
|
InternetOpenUrlA hook - URL verändern.
Hallo, ich hooke die InternetOpenUrlA-Funktion eines Programmes, und versuche dabei den hostname "xxxxx.net" zu "127.0.0.1" zu ändern (hostname + endung hat genau so viele Zeichen wie 127.0.0.1".
Ich versuche es so:
Code:
HINTERNET __stdcall hkInternetOpenUrlA(HINTERNET hInternet, LPCTSTR lpszUrl, LPCTSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD_PTR dwContext)
{
char szBuffer[256];
sprintf(szBuffer, "%s", lpszUrl);
szBuffer[7] = '1';
szBuffer[8] = '2';
szBuffer[9] = '7';
szBuffer[10] = '.';
szBuffer[11] = '0';
szBuffer[12] = '.';
szBuffer[13] = '0';
szBuffer[14] = '.';
szBuffer[15] = '1';
LPCTSTR newUrl = (LPCTSTR) szBuffer;
return pInternetOpenUrlA(hInternet, newUrl, lpszHeaders, dwHeadersLength, dwFlags, dwContext);
}
Allerdings crashed das Programm (.. funktioniert nicht mehr) mit meiner Version.
Wo liegt denn das Problem?
|
|
|
06/06/2013, 22:11
|
#2
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Ähm.
Was genau spricht gegen:
Code:
char* szNewUrl = "127.0.0.1";
if(strlen(lpszUrl) >= strlen(szNewUrl))
{
strncpy(&lpszUrl, szNewUrl, strlen(szNewUrl));
}
(Untested)
€: * vergessen
Padmak
|
|
|
06/06/2013, 22:29
|
#3
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Steht dein Projekt auf Unicode oder Multibyte?
|
|
|
06/06/2013, 22:38
|
#4
|
elite*gold: 14
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
|
Multibyte, Smith.
Padmak, ich muss nur einen Teil der übergebenen URL ändern, deswegen der Zugriff per Index.
|
|
|
06/06/2013, 22:55
|
#5
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Dann machs trotzdem so wie ichs gesagt hab:
Code:
char* szNewUrl = "127.0.0.1";
if(strlen(lpszUrl) >= (strlen(szNewUrl) + 7))
{
strncpy(&lpszUrl[7], szNewUrl, strlen(szNewUrl));
}
Kannst du debuggen und schaun, wos crasht?
Padmak
|
|
|
06/06/2013, 22:57
|
#6
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
^Würde ich nicht versuchen. Der Parameter ist ein const Pointer, da hast du nichts zu verändern! Und deine Bedingung macht keinen Sinn ;O
Versuch es mal mit Debug-Ausgaben bzw. Logs. Der Code sieht so erstmal nicht falsch aus.
|
|
|
06/06/2013, 22:57
|
#7
|
elite*gold: 14
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
|
Würde ich gerne, allerdings erhalte ich bei der Zeile "strncpy(&lpszUrl[7], szNewUrl, strlen(szNewUrl));" die Fehlermeldung "Das Argument vom Typ ""const CHAR *"" ist mit dem Parameter vom Typ ""char *"" inkompatibel."
Das "&"-Zeichen ist unterstrichen.
Mit folgendem Logging erhalte ich folgende Ausgabe:
Code:
HINTERNET __stdcall hkInternetOpenUrlA(HINTERNET hInternet, LPCTSTR lpszUrl, LPCTSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD_PTR dwContext)
{
char szBuffer[256];
sprintf(szBuffer, "%s", lpszUrl);
AddLog("Buffer initialized.");
szBuffer[7] = '1';
szBuffer[8] = '2';
szBuffer[9] = '7';
szBuffer[10] = '.';
szBuffer[11] = '0';
szBuffer[12] = '.';
szBuffer[13] = '0';
szBuffer[14] = '.';
szBuffer[15] = '1';
AddLog("New address set: %s", szBuffer);
LPCTSTR newUrl = (LPCTSTR) szBuffer;
AddLog("Converted buffer: %s", newUrl);
return pInternetOpenUrlA(hInternet, newUrl, lpszHeaders, dwHeadersLength, dwFlags, dwContext);
}
Code:
[06/06/13 23:01:08]: Buffer initialized.
[06/06/13 23:01:08]: New address set: http://127.0.0.1/schit.php?i=memati67&blame=f80e646440c6021501aa90b8b7f26728&surv=fea05fbaa726e6ba3ddfd21872bdf2f1&l=021501aa99590b05fe95c7f460b8b7f2&p=wosifwse
[06/06/13 23:01:08]: Converted buffer: http://127.0.0.1/schit.php?i=memati67&blame=f80e646440c6021501aa90b8b7f26728&surv=fea05fbaa726e6ba3ddfd21872bdf2f1&l=021501aa99590b05fe95c7f460b8b7f2&p=wosifwse
Die Url scheint korrekt zu sein.
|
|
|
06/06/2013, 23:21
|
#8
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Oh, tatsächlich. Die Bedingung macht schon Sinn...
Crasht das ganze auch ohne dein Zeug? Dann wäre nämlich schlicht dein Hook im Ar***^^
Padmak
|
|
|
06/06/2013, 23:40
|
#9
|
elite*gold: 14
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
|
Nein, der Hook passt.
Wenn ich einfach den Parameter wieder returne, funktioniert alles.
|
|
|
06/06/2013, 23:50
|
#10
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Probier mal NUR PROBEHALBER dein Array auf'm Heap zu erstellen, also
Code:
char* szBuffer = new char[256];
Und dann nicht deleten, sondern lassen.. Ist zwar falsch, aber es könnte theoretisch funktionieren
Padmak
|
|
|
06/06/2013, 23:53
|
#11
|
elite*gold: 14
Join Date: May 2011
Posts: 2,671
Received Thanks: 818
|
Ändert leider nichts.
|
|
|
06/07/2013, 01:14
|
#12
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Was spricht gegen Debuggen?
|
|
|
06/07/2013, 01:26
|
#13
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Würde ich gerne, allerdings erhalte ich bei der Zeile "strncpy(&lpszUrl[7], szNewUrl, strlen(szNewUrl));" die Fehlermeldung "Das Argument vom Typ ""const CHAR *"" ist mit dem Parameter vom Typ ""char *"" inkompatibel."
Das "&"-Zeichen ist unterstrichen.
|
Wie gesagt, weil der Parameter const ist. Da hast du nichts reinzuschreiben und das teilt dir der Compiler auch mit. Deine Lösung mit dem lokalen Buffer war schon richtig.
Quote:
|
Die Bedingung macht schon Sinn...
|
Welchen?
Quote:
Originally Posted by Headpuster
Ändert leider nichts.
|
Wieso auch? Ob Heap oder Stack ist in dem Fall völlig wurst.
Verstehe ich es richtig, dass nach deinen Logs quasi der Aufruf der originalen Funktion crasht, aber nur mit dem modifizierten Parameter?
Fehlt vielleicht am Ende das 0-Byte? Calling-Conventions richtig?
Der Logstring nach dem Casten des Buffers ist übrigens überflüssig, du verschiebst da letztendlich nur den Pointer in eine andere Variable (daran ist auch nichts "Konvertieren"), insofern kann da auch nichts passieren. Interessanter wäre, wenn du den Return-Wert von pInternetOpenUrlA speicherst, dann diesen loggst und danach erst returnst. Dann weiß man auch, ob der Crash tatsächlich dort stattfindet oder erst später.
Am besten wäre aber in der Tat einfach debuggen.
|
|
|
 |
Similar Threads
|
WarLord Public Hook (Client Hook) 01.03 Rleased Official Epvp Release by pastalov.
03/03/2012 - WarRock Hacks, Bots, Cheats & Exploits - 4 Replies
hi.
Endlich hat WarLord seinen Public Hack mal geupdated :handsdown:
Hier habt ihr Ihn:
http://img715.imageshack.us/img715/7504/frecky.pn g
Der Download befindet sich im anhang!
Virus Check:
https://www.virustotal.com/file/3792beba0863829ec 3e2b53f3b0c17d20bfc09c7d76f5f24967a79f1a82a4ddb/an alysis/1330708386/
|
<26.06.11> Chico™ Public Hook, //Invisible//Chams /Stamina/Mini Hook/NO CRASH VERSION
07/08/2011 - WarRock Hacks, Bots, Cheats & Exploits - 46 Replies
26.06.11 Hack Released
26.06.11 SuperNoSpread Problem Fixxen Status= Not in Hack
Hej Com, leider hab ich eine schlechte nachricht xP^^ aus egendeinen Grund verursacht bei mir SuperNoSpread einen Direkten Crash sobald man in game ist, deshalb habe ich es entfernt O,o
der Hack ist tortzdem nett und wird euch gefallen, sobald ich mehr addys habe kommen mehrere funktionen noch dazu ;)
http://img4.fotos-hochladen.net/uploads/public24e lfvtrw1u.png
STOP! VOR DEM DOWNLOAD!
Mit Dem...
|
Shops Verändern,FileZilla Verbinden, & Map Verändern..
02/26/2010 - Metin2 Private Server - 16 Replies
Hallo Comm.
Ich brauche hilfe bei Filezilla Wächter Des Dorfplatzes zu Entbuggen.
Ich brauche hilfe bei Maps Verändern.
Ich brauche hilfe bei Shops Items zu verändern.
Ich brauche hilfe bei Filezilla Zu Verbinden.
Mfg Tod<3
|
All times are GMT +1. The time now is 01:09.
|
|