-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
General Discussion Thread #39
Comments
UserMessages are server->client just log sendnetmessage and start pinging, you will get the idea.
note that you can't spam these real fast, that used to be an exploit. |
thats one thing i was going to test and see ;) What if you chain the messages into one larger packet. I was able to bypass spam protection mechanisms on multiple game clients before by chaining packet data in repeat into one super large packet. to bypass the spam detection I found a client crash for a few games that used spamming, and they "fixed" it, however if I repeated the data into a larger buffer and fixed the send size to include my extension of the buffer I was able to send them slower but achieve the exact same results (it worked for one hit kos I have made in the past also which used spam packet techniques) I didn't do this fixup within the game client but through winsock itself. I was able to send my encrypted data into a much much larger packet, all I had to do was fixup the bytes which determined the size of the packet in the actual packet data which I can't remember which bytes it was to be exact but it was in the very first few bytes of the packet itself. It worked like this prefixes ,packetdata lets say this was the normal packet well I basically did this, prefixes(modified for size correction),packetdatapacketdatapacketdatapacketdatapacketdatapacketdatapacketdatapacketdatapacketdatapacketdatapacketdata and the packet data itself contained prefixes which were used internally in the game clients to identify size and type etc etc but even with chaining all the data into one larger buffer it still split them into individual packet types it did not see it as multiple packets, but still obeyed each as if they were individual packets being sent. automatically adding them to the internal processes of commands they executed within the game client. it split it accordingly even though it was one long bigasfuck buffer. it still seen them individually. would it be possible to do such a thing as this... message CDOTAClientMsg_MapPing { |
doubt that will work because all the messages have an ID. After the server gets the packet, it will get the body (https://github.com/LWSS/McDota/blob/master/src/SDK/CNetworkMessages.h#L2148 - something like this). Then do a protobuf ParseFromArray() on the bytes. It will only ever look for 1 packet at a time, it doesn't stack them up like in source 1, it uses repeated protobuf fields for that now. |
hmm forgive my ignorance I have only delved into dota2 on this level for abt a week now, I don't know much about how source engine or source2 work. I haven't messed with anything like this before. I am just speculating on what I know to have worked in my experience in the past. Back in the old days when WPE was a thing I wrote a dll to inject to it, which did what I described. I had never even heard of a protobuf until a few days ago lol. Also that code you directed me to is basically how the bypass got around it. The games internal data decoding made it figure out that it was individual commands, however it read it as one big packet. which was good for me because it bypassed the spam protection. |
no source available, you'll have to reverse it yeah i used wpe pro a couple years ago in ffxiv, had overflow in chat packet that could crash people's games when I pm'd them lol. |
I messed with wpe when it first came out, alongside tsearch. lol. I been around for a lil bit. oh and to top it off that game or part of its network was accepting SQL commands through the games ingame chat, I noticed when I typed '1==1 it disappeared. So I typed something along the lines of '1=1 where 1 SELECT AS '(asterix here it disappears when i type it)' From '(asterix here it disappears when i type it)' DROP ALL TABLES LOCK TABLES READ WRITE;-- And they had to roll back the server their last backup was two days prior! lol I miss when things were as simple as memory editing with no debugging required, I am not the best in olly , or x64. I know enough to get around but not enough to be a pro reverser. I think I managed to unpack older themida once or twice manually but that was about the best of my reversing skills. (only did that to bypass Nprotect GameGaurd) has anyone tried to do any sqli on dota2? |
i seen that attemptedtocrashserver shit when i was in olly the other morning lol. Ive ran into a bug where if monkey king is in battle with us, late game the game constantly(i mean miliseconds apart) is trying to remove a null pointer entity index by the hundreds!! it lags the fuck out of my system to 100%cpu usage So is that server-crash fix the reason I am having so much trouble trying to track down prepareunitorders? I totally had a runesnatcher coded up and then came to find out they took out prepareunitorders as a virtual lol I actually had the idea to try to chain messages together using that api as well, to see if I could possibly send less network traffic and accomplish multiple tasks. And I remember that vulkan bug, I was wondering what was causing that shit it literally made me disconnect prior to being able to join a game. |
yeah lol they made prepunitorders non virtual last month or december to try and deter hackers. Which is amusing because I didn't even really use it in the first place. The monkey king ult is very ghetto, the monkeys are all their own hero that copies cosmetics and more. When he came out, they would just spawn and remove the entities, that was extremely laggy, so they made them invisible and stored them in the team's fountain. However, this caused some bugs like breaking smoke and other weird shit, so they had to change it again and I don't even know what they do now(maybe shove them off map?).
could try forcing reliable/unreliable transmission(it's kinda like udp/tcp), also I found an up to 5ms delay in the SDR relays, It's called nagletime, you can disable it via sdr console commands. Some of the SDR source is on github (https://github.com/ValveSoftware/GameNetworkingSockets/blob/master/src/steamnetworkingsockets/clientlib/steamnetworkingsockets_snp.cpp) but it is not enjoyable to read. |
besides using netsend or scripting to 'execute orders from table' are there any ways to interact with items on the ground? (excluding clicking unless i can fool the client into believing i clicked an entity without having the capability of clicking it) IE if an item falls under an ancient (which I cant click bc the ancient is in my way!!!)I want to be able to grab it immediately if I have the space to do so, so if an enemy team of idk lets say 3 invade trying to kill me I can at least have grabbed said item and wont risk losing it to the enemy team. I Haven't even looked into what all I would have to do to actually run a script in a normal game, and or what types of scripts I could run, don't know the difficulty level of implementing it into my source. If i had been on linux I probably would have used your source. Which is quite complex btw, how long have you been working on this project? and how many people are helping? are there any message boards I should frequent about dota2 development that you know of? or other sources of discussion about developing shit for dota? I kind of like the fact that I came into the dev scene for dota when I did, a lot of the groundwork has already been laid out given the time people have already put into it. Been playing the game legit as fuck for a little while now, so I am deciding to just fuck around. ......hack ideas... Also has anyone ever tried splitting a stack of items into a "0" or "negative" amount? IE (split -1) of %tangostack or split 0 of %tangostack And has anyone ever tried "splitting" a non stackable item such as an armor or weapon item? And has anyone made a namespoofer? for ingame chat to fuck with people for the lulz? .......questions about your hacks..... |
unsure about the jungle item slots, haven't messed with that stuff since it came out.
|
If I were a dev and needed to attempt to detect it, I would use these methods or similar: 1. checking related convars values And memory values of CamPosition
Also this google protobuf shit is a fucking headache from hell. I haven't ever had to work with it before, and it is quite confusing. I spent nearly all day yesterday trying to get it included into my existing project and working- I don't know if I eventually did as I haven't tried calling a function which needs it yet , but damn that was a pain in my ass to get my shit to even compile on visual studio 2017 community edition ver 15 on windows 8sdk toolset on x64 windows 7OS.
I am only trying to work with it so I can mess with the network aspect of this client and possibly look for true exploits and real cheats- not just crashes but actual hacks. Are the packets encrypted? compressed? have they been decrypted? I would like to see raw network data streams if possible, and then decipher from that tier of communication. It may be easier to unpatch some of these "message level" spam prevention techniques by going up a networking level to the actual packet and chaining the data like I spoke of earlier. messages are internal inside of the packet, maybe the packet can be restructured to contain multiple messages hence unpatching some of the DOS techniques prevented by something along the lines of
I mean even warcraft3 had a desync upon client mismatch protocol , and that's where this game was birthed.
at first i thought maybe the index/handle could be cached and compared against new entities to determine if illusion but idk if this would work._
Also sorry about the formatting of previous posts, I'll try to make newer ones friendlier on the eyes! |
yeah about the zoom hack, they calculate the camera bounds and check to see if you clicked outside of them in 3d coordinates. They don't ban for it as far as I know, but according to my russian comrades, you get flagged for it. It probably has a big tolerance. I have fixed this before by emulating a smaller camera inside your world view. It worked pretty good, needs minimap jumps though. I made this for one of my russian comrades p2c, I said I wouldn't release it, but it has been quite a long time since then.
I have illusions already (https://github.com/LWSS/McDota/blob/master/src/SDK/CDotaBaseNPC.h#L46) I think you could get some value out of installing linux on a laptop or something and installing mcdota to see the features. |
I would install linux but I literally have a 80gb hdd which is slap full. I have like 100mb free disk space, and the only thing I really have on here is dota and a few tools alongside an IDE I only have a 10gb (i think 9 is usable) flashdrive as an extension Also i edited the above post with the explanation of the packet encapsulation so maybe I could make more sense of it, to make sure you understood what I meant with a simple analogy style pseudo code comparison. |
I forgot that you said you were new, do you have the debug binaries yet? Those make reversing 10x easier. For the raw packets.... I think... It calls SerializeAbstract(https://github.com/LWSS/McDota/blob/master/src/SDK/CNetworkMessages.h#L2255) I am not sure because it crosses a lot of dll-boundaries and most of the functions are virtual |
no I dont have debug binaries. |
Search for them on UC, I can't seem to find the link now, but they should be one there. |
`
is it dynamic??? ans:NO
Oh btw man if you dont mind keeping this issue open I am kinda logging my information gathering in here. I am looking at these datamap structures tonight, looks interesting. A bit complex maybe, but interesting. |
@lol98xlol98 Latest Dota2 MAC binaries with debug symbol from manifest 2821943592690435352 January 25, 2016. |
Update to xDT_DOTA_BaseNPC
@heyimrendy I do not see anything other than text, is that something I should google? or did you attach a file? I cant see it if so, maybe LWSS has access to it but not I -interesting function name..... virtual void AllowAdditionalMessageRegistration(bool allow) = 0; |
does this seem right? I had to typecast a ClientClass object as datamap to get it to compile here.... so I dont know how I am going to work around this typecasting error which is causing my crashes. I tried to init xXx prior and was getting compiler errors saying i overloaded it (hence the // first line of the function)
fuck it i just changed the type in the clientclass for schema to datamap* ill see if it works later it allowed me to simply type it without casting anything. ill test it out later or tomorrow. I think its a datamap setup like Ive tried writing my own crawler. Ive tried using the creator of dotkas crawler he had . Ive tried implimenting a scan through his clientbase table, and ive tried(unsucessfully) porting your netvars to win64 on win7. Any help would be highly appreciated!!! Im getting so frustrated I am losing it :( |
might be a bit different on windows, do you have reclass.net? Just try pointing it at a raw datamap pointer, that's what I did to map it out. Reclass will show you the exact memory. First you need to get entity list, grab an ent, call the vfunc for |
And along the way through the many routines I landed in an area containing this...... IDk if its for minimap or what, havent had much time to look into it. But it seems as if it may be of use to detect vision beyond normal radius
I am trying to fuck around in ida and see if I can find the difference in enemy illusion and team illusion and just hook the jumptable to always draw illusions as default. I redownloaded ida as of last night and let it run to analyze the code. Lots of useful information. IDA wont allow you to modify and save the file will it? I can't remember if it has that feature. I think I always had to go to an external debugger to do that. and as far as the datamaps I did find a few things in the client, why would they leave this in? ```
|
yeah you can make changes in IDA, but it's cumbersome. It's under Edit->Patch Program.
|
I think the logging function can be overflowed. as well. The minidump writing routine may be a very targetable system as an attack vector to try to make an RCE exploit with priv escalation. I may try to track down I think dota devs took a good long read over this |
Wow |
how are map and minimap pings generated?
I am just curious as to how the client is building the pingwheel icons on the map/minimap
I have overlooked the
DotaUsermessages.CDOTAUserMsg_Ping
and CDOTAUserMsg_LocationPing
CDOTAClientMsg_MapPing may be what i need to look at though
and I can't make sense of how its actually implemented into the games functions.
The text was updated successfully, but these errors were encountered: