OldSchoolHack

Register / Login English

[C++] Dota 2 BaseEntity


icon [C++] Dota 2 BaseEntity #1

Join Date: Dec 2011

Posts: 97

User-Rating:

2 positive
0 negative
Guten Tag!
Ich werde einfach nicht schlau aus Dota 2. Da ich einen CSS und CSGO hack habe (uff das ist auch schon fast ein Jahr her^^) dachte ich das ich etwas in Dota auf hinbekomme.

Folgendes:
1. In Olly öffnen -> Client -> Search text -> "m_iHealth" = 0x0FC
2. CE -> Leben suchen und Pointer Scan bis ich einen mit dem Offset "0xFC" finde.

Ich finde nur eine: "client.dll"+ 01EC9874 + FC

So weit so gut. Dota Neustart. Perfekt, immer noch meine leben.
Nun versuche ich die leben eines andren Spielers (bot) zu finden. Finde nichts. 

*sigh* Jemand irgendeine Idee?

MfG

icon #2

Join Date: Jun 2011

Posts: 490

User-Rating:

12 positive
0 negative
Das ganze ist doch gewiss serverside und du bekommst die Informationen nur wenn die Gegner in der Nähe und sichtbar sind, oder ?
Außerdem solltest du mal mit ReClass oder mit dem Cheat Engine Feature Dissect Data/structures in der Nähe der hp rumschauen was man da sonst noch nützliches finden kann.

__________________

http://www10.pic-upload.de/30.04.12/j9dbc34bxdg.jpg
Last edited by Mantarochen (Mon 3. Jun 2013, 16:28)

Reason: no reason given

icon #3

Join Date: Dec 2011

Posts: 97

User-Rating:

2 positive
0 negative
Yo Manta! Schön mal wieder was von dir zu höhren.
Ich weiß das es serversided ist. Das erklärt aber nicht warum die leben des Players neben mir nicht gezeigt werden. 

Ich finde ein paar interessante Sachen wie "dota_npc_hero_meepo" oder so also der Name des Helden den ich spiele. (Mit CE Dissect Data/structures)

Das habe ich im Internet Gefunden:

Quote
CBasePlayer = 12 - DT_BasePlayer, count 29
baseclass: +00000000
localdata: +00000000
pl: +0000123C
m_iFOV: +00001250
m_iFOVStart: +00001254
m_flFOVTime: +00001274
m_iDefaultFOV: +000012DC
m_hZoomOwner: +000012C4
m_hVehicle: +000012C8
m_hUseEntity: +00001338
m_hViewEntity: +000012E8
m_hGroundEntity: +00000140
m_iHealth: +000000F0
m_lifeState: +0000024F
m_iBonusProgress: +000012B8
m_iBonusChallenge: +000012BC
m_flMaxspeed: +000012C0
m_fFlags: +000000F4
m_iObserverMode: +0000130C
m_hObserverTarget: +00001310
m_hViewModel[0]: +000012D0
m_hViewModel: +00000000
m_szLastPlaceName: +00001548
m_vecLadderNormal: +00001288
m_ladderSurfaceProps: +0000126C
m_hPostProcessCtrl: +000016FC
m_hColorCorrectionCtrl: +00001700
m_PlayerFog.m_hCtrl: +00001708
m_currentSCLPacked: +00001004

Ist zwar nicht aktuell aber wenn ich in olly nach den aktuellen offsets suche und sie mit meiner Adresse checke kommt nur random dreck raus.

Es gibt nur einen Pointer mit 0xFC und trozdem klappen andere offsets nicht.
icon #4

Join Date: Jun 2011

Posts: 490

User-Rating:

12 positive
0 negative
Such mal die hp und guck über die accesses, ob es die hp aus der entity struct sind (Offset 0xFC bei den accesses), zieh dann von der aktuellen adresse 0xFC ab und hol dir auf die baseadresse die du jetz hast mal alle möglichen pointer und teste die durch.
Was hastn eigentlich vor damit zu machen?
Besonders viel was was bringt geht ja nicht wenn so gut wie alles serverside ist und du nur an die Infos kommst wenn die Spieler nicht dormant sind.

__________________

http://www10.pic-upload.de/30.04.12/j9dbc34bxdg.jpg
Last edited by Mantarochen (Mon 3. Jun 2013, 21:58)

Reason: no reason given

icon #5

Join Date: Dec 2011

Posts: 97

User-Rating:

2 positive
0 negative
Ich will ja kein ESP machen oder ein Radar Hack. 
Es soll nur eine hilfestellung sein. Zb. Wenn einer meiner Teammitglieder einen feind sieht dann wird die HP trozdem geupdated.

Nun habe ich wieder meine Adresse (diesmal kein Pointer)
Also 0x4CB69ABC - 0xFC = 0x4CB699C0

Richtig soweit? Mal sehen was ich so alles finde. Erstmal zurück in olly.

http://s7.directupload.net/images/130603/qivda2kf.png
Last edited by vedel (Mon 3. Jun 2013, 23:09)

Reason: Bilder und Stuff

icon #6

Join Date: Dec 2011

Posts: 97

User-Rating:

2 positive
0 negative
Arrrg. Ich komme an diesem bild nicht vorbei. ^^

Neue Erkenntnisse:

Adresse:
"client.dll"+01EC9874

Offsets:
Health: 0xFC
Mana: 0x1134
maxMana: 0x1138

leider immer noch nicht die Stats meines Mitstreiters.

icon #7

Join Date: Jun 2011

Posts: 490

User-Rating:

12 positive
0 negative
Dota 2 ist doch von Valve oder? Wenn die die Entity Structs und das ganze Speicher management ähnlihc wie in der source engine aufgebaut habne dann müsstest du auf diene local hp etc mehrere pointer finden. Einer davon pointet immer auf die localplayer sachen während du mit nem anderen alle Spieler durchgehen kannst. Wie es genau aussieht kann ich dir bei dota nicht sagen.
Versuch mal ein Spiel gegen einen Kollegen zu starten und dann stellt er sich vor dich das der Spieler nciht dormant ist und sagt dir deine hp und die suchste dann. Wenn du die findest hol nen pointer auf die base und vergleich die Pointer, ob da einer bei ist der bei deiner local hp auch is.

__________________

http://www10.pic-upload.de/30.04.12/j9dbc34bxdg.jpg
icon #8

Join Date: Dec 2011

Posts: 97

User-Rating:

2 positive
0 negative
Ich bin gestern Public gejoint. Also einfach so zum spaß. Habe CE angemacht und nochmal meinen Pointer eingegeben. Ich bekomme die Leben des ersten Spielers unseres teams angezeigt. Ich schau mal was ich noch so finde. Melde mich dann.
icon #9

Join Date: Jun 2011

Posts: 490

User-Rating:

12 positive
0 negative
Wenn du das leben des ersten spielers findest dann haste shconmal den richtigen pointer zum baseentity. Nun musste schauen wie die size is damit du z.b. wie bei der hl2 engine pointer + 0x10 * playerindex rechnen kannst um zum nächsten spieler zu gelangen.

__________________

http://www10.pic-upload.de/30.04.12/j9dbc34bxdg.jpg
icon #10

Join Date: Dec 2011

Posts: 97

User-Rating:

2 positive
0 negative
So, viel zeit (2x Hintereinander update) ist vergangen aber ich habe jetzt folgendes:
Meine Leben: client.dll + 01E4455C + FC
Leben Mate: client.dll + 01E4454C + FC (<-- Spieler hat nach mir gejoint)

also 0x10 ist es auch bei Dota nehme ich mal an. Warum ist dann der 2 Spieler höher in der Memory als ich? Ich kann mir darauf keinen reim machen. (Ich habe die leben des zweiten Spielers zuerst gesucht und dann die Sachen verglichen.
icon #11

Join Date: Jun 2011

Posts: 490

User-Rating:

12 positive
0 negative
Kannste noch nen 3. Spieler drauf packen und den suchen und zwar so, dass beide nach dir joinen ? Dann sollten sie ja nen höheren index als du besitzen und dann musste schauen. Vielleicht liest es sich in Dota 2 ja so aus: Basepointer - 0x10*Index + Offset.

__________________

http://www10.pic-upload.de/30.04.12/j9dbc34bxdg.jpg
icon #12

Join Date: Mar 2011

Posts: 978

User-Rating:

89 positive
6 negative
wenn du von nem mate hast einfach mal von der lebensadresse den healthoffset abziehen, dass du also an der baseadresse der entity bist, dann rechtsklick "find out what accesses this adress" und reversen wie das spiel auf die entity zugreift.
das kannste dann nachbauen und gg.

__________________

http://www.abload.de/img/signfj5o.png
Spoiler
Vids:
Zitate:
Spoiler

Quote from xst
Vater KN4CK3R, der du hängst im irc, geheiligt werde dein Botnet, dein P7 v1.337 komme, die Bannwelle geschehe, wie in CS:S als auch in CS:GO, führe uns nicht in Versuchung, sondern erlöse uns von all dem c+p-Shit.
Quote from f4gsh0t_h4x
VAC ist an,immer,überall
Quote from gibson.w
Ich mag braune Würstchen
Quote from irc
<SilverDeath> KN4CK3R bistn nub
<~KN4CK3R> kk
Quote from irc
<OrkSchamane> das prob is das viele dieser eig. recht guten bücher englisch sind ...
<OrkSchamane> da habe ich's ja doppelt schwer
<~KN4CK3R> falsch
<~KN4CK3R> das prob is dass du programmieren willst ohne englisch zu können
Quote from irc
<SilverDeath> Ich schwöre dir Dr_Pepper Ich bumms deine Mutter tot Mann!
<Dr_Pepper> danke.
<SilverDeath> bitte
Quote from irc
<~KN4CK3R> dann liegts wenigstens an mir
<~KN4CK3R> nur noch rausfinden warum -.-
<SilverDeath> ja sicher
<SilverDeath> an wem sonst?
* You were kicked by KN4CK3R (kick)
Quote from Dr_Pepper
ihr seit beide dumm
Tutorials:
Releases:
Gifs:
Spoiler
http://www.abload.de/img/uberesp2sgul2.gif
https://i.imgur.com/Z5VQMrV.gif
http://www.abload.de/img/minesweeperzgaef.gif
icon #13

Join Date: Dec 2011

Posts: 97

User-Rating:

2 positive
0 negative
Neuer Versuch:
dieses mal sind es 4 Spieler. 2 Gegner und 2 Team mitglieder. (In der reinfolge in der sie gejoint sind)

ich: 
"client.dll" + 01E45E5C + 0xFC

gegner 1:
"client.dll"+ 01E4650C + 0xFC

gegner 2:
"client.dll"+ 01E4634C + 0xFC

mate:
"client.dll"+ 01E460DC + 0xFC

edit:
@Silver
Habe ich gerade getestet. Ich bekomme nur so and die 30 adressen^^ mal sehen was ich so erreichen kann.

edit:
btw mein code mit dem ich es vorhabe alles auszulesen: Only registered and activated users can see links. villecht gibt es da auch fehler.
Last edited by vedel (Sat 8. Jun 2013, 23:19)

Reason: no reason given

icon #14

Join Date: Dec 2011

Posts: 97

User-Rating:

2 positive
0 negative
New shit:
Ich hatte ja mal vor ewigkeiten vor einen Internen CS:GO hack zu schreiben und habe ein wenig experimentiert:

Dll Injection:
TEXT Code:
  1. DWORD WINAPI dwMainThread(LPVOID lpArguments){
  2. MessageBox(0, L"Hooked", L"Enter", MB_OK);
  3.  
  4. ClientFactory = (CreateInterfaceFn)GetProcAddress(GetModuleHandle(L"client.dll"), "CreateInterface");
  5. g_pEntList = (CEntList*) ClientFactory("VClientEntityList003", NULL);
  6. add_log("g_pEntList 0x%X", g_pEntList);
  7.  
  8. CBaseEntity *pBaseEntity = g_pEntList->GetClientEntity(0);
  9.  
  10. for(int i = 1; i < 10; i++){
  11. pBaseEntity = g_pEntList->GetClientEntity(i);
  12. add_log("-----------------------------------------");
  13. add_log("BaseAdress(%d) : 0x%X", i, pBaseEntity);
  14. add_log("BaseAdress(%d) HP : %d", i, pBaseEntity->GetHealth());
  15. }
  16.  
  17.  
  18. return 0;
  19. }

Soweit so gut. 
In der Log File:

TEXT Code:
  1. Log Added (06/14/13 12:06:52): g_pEntList 0x5657607C
  2. Log Added (06/14/13 12:06:52): -----------------------------------------
  3. Log Added (06/14/13 12:06:52): BaseAdress(1) : 0x48EE2850
  4. Log Added (06/14/13 12:06:52): BaseAdress(1) HP : 100
  5. Log Added (06/14/13 12:06:52): -----------------------------------------
  6. Log Added (06/14/13 12:06:52): BaseAdress(2) : 0x543364D0
  7. Log Added (06/14/13 12:06:52): BaseAdress(2) HP : 100
  8. Log Added (06/14/13 12:06:52): -----------------------------------------
  9. Log Added (06/14/13 12:06:52): BaseAdress(3) : 0x5433D200
  10. Log Added (06/14/13 12:06:52): BaseAdress(3) HP : 100
  11. Log Added (06/14/13 12:06:52): -----------------------------------------
  12. Log Added (06/14/13 12:06:52): BaseAdress(4) : 0x5433FAF0
  13. Log Added (06/14/13 12:06:52): BaseAdress(4) HP : 100
  14. Log Added (06/14/13 12:06:52): -----------------------------------------
  15. Log Added (06/14/13 12:06:52): BaseAdress(5) : 0x543423E0
  16. Log Added (06/14/13 12:06:52): BaseAdress(5) HP : 100
  17. Log Added (06/14/13 12:06:52): -----------------------------------------
  18. Log Added (06/14/13 12:06:52): BaseAdress(6) : 0x54344CD0
  19. Log Added (06/14/13 12:06:52): BaseAdress(6) HP : 100
  20. Log Added (06/14/13 12:06:52): -----------------------------------------
  21. Log Added (06/14/13 12:06:52): BaseAdress(7) : 0x543475C0
  22. Log Added (06/14/13 12:06:52): BaseAdress(7) HP : 100
  23. Log Added (06/14/13 12:06:52): -----------------------------------------
  24. Log Added (06/14/13 12:06:52): BaseAdress(8) : 0x54349EB0
  25. Log Added (06/14/13 12:06:52): BaseAdress(8) HP : 100
  26. Log Added (06/14/13 12:06:52): -----------------------------------------
  27. Log Added (06/14/13 12:06:52): BaseAdress(9) : 0x5434C7A0
  28. Log Added (06/14/13 12:06:52): BaseAdress(9) HP : 100
  29. Log Added (06/14/13 12:06:52): -----------------------------------------

Irgendwas habe ich falsch gemacht da die leben der Spieler in der Adresse 0x000000FC liegen und ich bin mir sicher das dass einfach nicht sein kann. Deswegen auch bei HP: 100
icon #15

Join Date: Jun 2011

Posts: 490

User-Rating:

12 positive
0 negative
Zeig mal diene GetHealth her

__________________

http://www10.pic-upload.de/30.04.12/j9dbc34bxdg.jpg
icon #16

Join Date: Dec 2011

Posts: 97

User-Rating:

2 positive
0 negative
TEXT Code:
  1. int GetHealth(){
  2. return *(PINT)((DWORD)(this) + 0xFC);
  3. }


Last edited by vedel (Sun 16. Jun 2013, 11:59)

Reason: no reason given

icon #17

Join Date: Dec 2011

Posts: 97

User-Rating:

2 positive
0 negative
Habe was ganz komisches gefunden. Je nach deinem Ping wird deine Entitiy ausgegeben. Deswegen war der bot damals auch höher da er ja 0ms hat.
icon #18

Join Date: Dec 2011

Posts: 97

User-Rating:

2 positive
0 negative
Sodala ist schon ne weile her. 
Ich habe es inzwischen hinbekommen. 


TEXT Code:
  1. for(int i = 1; i < pEntList->GetHighestEntityIndex(); i++){

das war der fehler. Jetzt sieht das so aus:

TEXT Code:
  1. Log Added (07/15/13 16:58:06): g_pEntList 0x2480bf4c
  2. Log Added (07/15/13 16:58:06): -----------------------------------------
  3. Log Added (07/15/13 16:58:06): BaseAdress(1287)      : 0x513c6300
  4. Log Added (07/15/13 16:58:06): BaseAdress(1287) HP   : 530
  5. Log Added (07/15/13 16:58:06): BaseAdress(1287) NAME : hero_chaos_knight
  6. Log Added (07/15/13 16:58:06): -----------------------------------------
  7. Log Added (07/15/13 16:58:06): BaseAdress(1329)      : 0x513cf170
  8. Log Added (07/15/13 16:58:06): BaseAdress(1329) HP   : 492
  9. Log Added (07/15/13 16:58:06): BaseAdress(1329) NAME : hero_warlock
  10. Log Added (07/15/13 16:58:06): -----------------------------------------
  11. Log Added (07/15/13 16:58:06): BaseAdress(1343)      : 0x513d8830
  12. Log Added (07/15/13 16:58:06): BaseAdress(1343) HP   : 606
  13. Log Added (07/15/13 16:58:06): BaseAdress(1343) NAME : hero_kunkka
  14. Log Added (07/15/13 16:58:06): -----------------------------------------
  15. Log Added (07/15/13 16:58:06): BaseAdress(1354)      : 0x597fa4c0
  16. Log Added (07/15/13 16:58:06): BaseAdress(1354) HP   : 454
  17. Log Added (07/15/13 16:58:06): BaseAdress(1354) NAME : hero_necrolyte
  18. Log Added (07/15/13 16:58:06): -----------------------------------------
  19. Log Added (07/15/13 16:58:06): BaseAdress(1366)      : 0x59802b10
  20. Log Added (07/15/13 16:58:06): BaseAdress(1366) HP   : 454
  21. Log Added (07/15/13 16:58:06): BaseAdress(1366) NAME : hero_sniper
  22. Log Added (07/15/13 16:58:06): -----------------------------------------
  23. Log Added (07/15/13 16:58:06): BaseAdress(1378)      : 0x5980b150
  24. Log Added (07/15/13 16:58:06): BaseAdress(1378) HP   : 587
  25. Log Added (07/15/13 16:58:06): BaseAdress(1378) NAME : hero_sven
  26. Log Added (07/15/13 16:58:06): -----------------------------------------
  27. Log Added (07/15/13 16:58:06): BaseAdress(1385)      : 0x529c4920
  28. Log Added (07/15/13 16:58:06): BaseAdress(1385) HP   : 644
  29. Log Added (07/15/13 16:58:06): BaseAdress(1385) NAME : hero_jakiro
  30. Log Added (07/15/13 16:58:06): -----------------------------------------
  31. Log Added (07/15/13 16:58:06): BaseAdress(1396)      : 0x599ac030
  32. Log Added (07/15/13 16:58:06): BaseAdress(1396) HP   : 511
  33. Log Added (07/15/13 16:58:06): BaseAdress(1396) NAME : hero_dazzle
  34. Log Added (07/15/13 16:58:06): -----------------------------------------
  35. Log Added (07/15/13 16:58:06): BaseAdress(1408)      : 0x599b35f0
  36. Log Added (07/15/13 16:58:06): BaseAdress(1408) HP   : 587
  37. Log Added (07/15/13 16:58:06): BaseAdress(1408) NAME : hero_razor
  38. Log Added (07/15/13 16:58:06): -----------------------------------------
  39. Log Added (07/15/13 16:58:06): BaseAdress(1415)      : 0x599b69c0
  40. Log Added (07/15/13 16:58:06): BaseAdress(1415) HP   : 568
  41. Log Added (07/15/13 16:58:06): BaseAdress(1415) NAME : hero_earthshaker

Jetzt klappt alles. Muhahahahahaha.