- Sep 10, 2015
- 147
- 140
- 158
ok, how do you imagine the sound transmission through the php?Ever heard of an event loop?
ok, how do you imagine the sound transmission through the php?Ever heard of an event loop?
Your PoV implies that memory editing != patching the code.Anyway. You're talking about patching the code, which I mentioned in my reply. This isn't basic memory manipulation with which you can only change simple data values.
I don't know if you have ever heard of jmp OP codes. But the server does a check if you have the Channel Commander. You jmp this check to always grant you Channel Commander. Not a big deal.Okay, then tell me: how would you go about setting the channel commander flag for every client? Keep in mind that the flag doesn't switch. It's set to channel commander right away.
Or even harder: how would you add the "Seclevel xx" client description. It displays the actual security level of the client identity.
Yes, that's exactly my standing. There is a clear difference between changing values in the heap memory and actually patching the code while the process is running. Don't pretend there's not.Your PoV implies that memory editing != patching the code.
Which is rather interesting since that's exactly what you do.
lol nope. First off, the security level is stored as an integer. You can't just append an integer to a string without casting / transforming it first. You won't find "Seclevel xx" as a string anywhere in memory, so you can't possibly "jump" there.As for security level. I found it pretty interesting at first until I found the description part. You can literally make the description jmp to the sec level of the specific client. This will make your security level appear as description instead of the actual description (which won't be shown if it's "not set").
You could also make this appear only in case no description is set.
You forget, that the memory would have to be manipulated before the packets in question are assembled and transmitted, as subsequent changes will have no effect in the client view.This requires finding a general ptr for the client but that's not too bad.
pft
Okay .. You got me. At first i thought you were serious. But now I can smell the troll.
Throwing in words like jmp op code etc might impress some people but every who actually know how reverse engineering works will you start laughing. Or crying. In first case perhaps both. You cant jump straight across the memory. You need to save register etc. All that would be such an incredible amount of work. Just for a commander stat? Come on. You can do better trolling than that.
But good news for you. You can proof now that I am wrong and you are awesome.
Just do some very basic noobish shit. That nooby commander stuff. You said its easy, For god sake please do it!
Yes, that's exactly my standing. There is a clear difference between changing values in the heap memory and actually patching the code while the process is running. Don't pretend there's not.
lol nope. First off, the security level is stored as an integer. You can't just append an integer to a string without casting / transforming it first. You won't find "Seclevel xx" as a string anywhere in memory, so can't possibly "jump" there.
Furthermore, you cannot edit your or other client's descriptions, although you have the required permissions to do so.
You forget, that the memory would have to be manipulated before the packets in question are assembled and transmitted, as subsequent changes will have no effect in the client view.
Are you absolutely sure, that you really know what you're talking about? Because right now it seems like you're just throwing around with buzzwords.
It's harder for security level which - as I said would require you to have the specific ptr.
You can literally make the description jmp to the sec level of the specific client.
I'll just stop discussing this here - it doesn't lead anywhere anyway.
But I asked this exact question and this whole thread is about HTP. If everything is so easy and possible by only editing some values here and there, then how did they generate this dynamic description? Don't give answers to questions I didn't ask - we can't have a conversation like that.I didn't say you could change the description. I said you could make it to only appear like that in case no description is said - not talking anything specific about HTP.
Which doesn't really apply since you say they make their own server, while I say this is no proof to me since it's possible by memory editing.
You brought packet manipulation to the table, not I. And in the post you've quoted I wasn't in fact talking about manipulating packets. I was talking about editing the memory before a packet is assembled by the server.Also bringing in manipulating packets at this point makes literally no sense. Since everything send FROM the manipulated server would apply to the packets as well. Therefore not having a reason to manipulate them AFTERWARDS anyway because they are created with already manipulated information.
The whole time you're claiming that everything they do on that server is possible with trivial memory hacks and code patching, yet you still did not explain how to dynamically set the description using these techniques.And with your last question we are at the same point as we have been before.
HTP doesn't have ANY proper proof they are really creating their own server - It may be possible but it's not for certain, like @Asphyxia said.
Which is like this since everything they "have" can be done without the need of a "new" Server.
Memory editing or patching the code (however you want to call it) can do this.
We are talking about a different part here. I said jmp the check. Alternativly you could invert the check.Yeah i dont know my shit. Where is your decryption? Where is you fully decrypted packet dump?
Btw that stuff was a lot easier than everything you are trying to do xD
Well maybe its possible to gain channel commander with some memory editing. I havn't looked at the packet yet neither the disasm (disassembled "for you").
Now lets get serious. You want to JMP to a ptr? Or to an offset? What do you think the code will do after? Magically return to your old position? So you might want to use a CALL... But that wont help you. The only serious way to do so would probably be using a straight MOV EAX, 1 or something like that. I guess channel commander will be just a boolean type.
Next question, as I am dumb and don't know what to do, you have an JMP XYZ which will produce channelcommander = 0. How will you patch the code so that it will produce channelcommander = 1? Using JNZ? Well yeah :-/ How do you know that your opcode will fit the given size? I mean jmp can take from 2 to 6? bytes.
And remember. JMP is relative. What do you do if the size is bigger? Yeah okay that was easy. NOP ..
But yeah.. You know that ofc. Anyway i like to see a method with a JMP Seriously.
I am not editing my posts because I am changing my mind. I change them to include replies that have been made while I was writing my post to include those - rather than double posting like you do.@self.add() it would be great if you could not edit your posts, but write new posts, when you've forgotten something or changed your mind on something. Especially after we have replied to you.
See this doesn't lead anywhere. We have different standpoints on this.Yeah, right...
See above.The whole time you're claiming that everything they do on that server is possible with trivial memory hacks and code patching, yet you still did not explain how to dynamically set the description using these techniques.
Funny how I have to go into detail about how it's done while I don't see any detail on the HTP Side of that being done. As in decrypted protocols and packets. etc.You need detailed knowledge of many intricacies of the code to be able to do such things via code patching, which again brings me back to my original point. If you have that much knowledge, you might as well just implement the server.
Take a step back. Then look at this whole process.Granted - this includes writing code for it. But it's not rewriting the whole server and you have a running base. No need to break any encryption or similar.
This can also make you able to do the sec level description.
From the desc part jump to your script part which "returns a description" with reading the sec level from the ptr for the called client (this requires work - I agree) and after that jmp back to the part where it would send the desc info.
So you agree it's possible doing this via memory editing and code patching?Take a step back. Then look at this whole process.
They did not add one or two little hacks that already require a lot of work. They implemented a whole load of new stuff. The amount of work needed to go through the asm code and analyze all stack frames is insane. The fact that the server is multi-threaded makes it even worse. You'll see what I mean, when you try to go through it step by step.
That "running base" really is nothing. Think about what few tasks the server actually has to do.
It is infinitely more efficient to only crack the encryption and the one other problem I mentioned. There is no way they did this whole bulk by memory hacking and code patching.
Talking about editing posts...Also, take into account that it's very likely that many, if not all, code pointers change with every update. If they used the original server, this would mean they had to redo a significant part of their work for every update. Otherwise, they'd be vulnerable to old exploits.
In theory yes, just like I could turn notepad.exe into GTA V. Practically no; the amount of work required is to big.So you agree it's possible doing this via memory editing and code patching?
I never claimed that this wasn't their actual workflow. It most likely was. However, I'm talking about the finished end product: a self-written re-implementation of the TS server, and parts of the client fyi.But breaking the encryption usually includes trying to reverse parts of the the code by looking into the memory. Also sniffing the packets. Analyze structures. Order headers and similar things. Having the server being able to decrypt and work with received packets and creating proper answers and encrypting them again.
Doing this by editing the memory saves the work of breaking the encryption but still makes you able to add certain features.
btw, that's the "one other problem" I was talking about.The original teamspeak server splits and compresses the packets if they get too big.