Пікірлер
@mbehboodian
@mbehboodian Күн бұрын
Great video! Thanks a lot!
@khiemnguyen7988
@khiemnguyen7988 7 күн бұрын
can you game me the link to download the file you use to hack pls. pls rep me quick
@lordkauck
@lordkauck 8 күн бұрын
Funny story, ya don't need to use virtual alloc, u can just change the page protection type to "Page_exec_readwrite" and achieve similar results
@Jouss3ph
@Jouss3ph Ай бұрын
I have software that checks for cpu temperature on the VM ! how to spoof it ?
@jfarinhote
@jfarinhote Ай бұрын
Question, does this static address remain valid after a game fresh restart?
@247CTF
@247CTF 11 күн бұрын
It depends on the game and ASLR. The relative offsets for pointers *should* remain the same.
@hodayfa000h
@hodayfa000h 2 ай бұрын
ended up writing my own thing... now it is AWESOME, why? i can just automatically place the hex digits... which makes it work on both x86 and x64 (it is awesome) it is as easy as going to an asm to hex converter, and writing a function to place those hex bytes into a byte vector, i then copy the data to my detour, and of course call the hook function and making a copy of the original code, allowing me to make an unhook function, it also nops any additional bytes by actually checking if our instruction is bigger than 5 and if it is? it will just nop them out so no need for a mangled bytes variable... yay!, i then manually write the asm code needed... and we are done, it works flawlessly, anyway... this tutorial was awesome! i learned so much... i had 0 knowledge before
@247CTF
@247CTF 11 күн бұрын
Nice work, that tool sounds great!
@ANguyenNhatVy-
@ANguyenNhatVy- 2 ай бұрын
Thank you for this video. Can you guide me some steps to read other information of the games like: kill/losses, win/lose,.. Great video by the way!
@arcsyndicate
@arcsyndicate 3 ай бұрын
Nice video. Sharing code outside patreon would be nice
@mohiuddinwaresi6351
@mohiuddinwaresi6351 3 ай бұрын
Bro, how did you manage to put the entire program on a singlr graph? It is no easy task. Please enlighten us
@TheInnerSession
@TheInnerSession 3 ай бұрын
pretty sure i cant just watch this with zero knowledge on anything lol.
@247CTF
@247CTF 11 күн бұрын
Have to start somewhere!
@draknyte1
@draknyte1 4 ай бұрын
Did anyone ever notice the obfuscated cheats were from the base game? (From ancient memory it seems to align)
@irwys
@irwys 4 ай бұрын
thanks for ur tutorial i learnt how to get the pointers and stuff but. i have pointerscan results and they all point to ammo. even when the game resets and the pointer changes the ponterscans are still valid. i created a program to read and write value to a memory address but the memory address needs to be manually corrected every time. idk how to automatically get the correct addresses and i’m stuck on it
@irwys
@irwys 4 ай бұрын
what if i change the type from 4 bytes to float and it turns into weird numbers and letters , do i change it back?
@247CTF
@247CTF 4 ай бұрын
If it's the wrong type, you might need to have a few guesses or do some reverse engineering
@varshneydevansh
@varshneydevansh 4 ай бұрын
I saw Age of Empire and reverse engineering immediately subbed❤
@v-for-victory
@v-for-victory 4 ай бұрын
As an old cracker/ trainermaker : You don’t need to understand the game. You just need to know what you want to influence. Then take memory snapshots at certain stages and compare. See the changes and then go into detail. That’s trainer making Oldskool.
@AEGISAOE
@AEGISAOE 4 ай бұрын
u think my aoe1 game is better than my aoe2 game? all ur videos is RE on aoe1
@247CTF
@247CTF 4 ай бұрын
1 > 2
@AEGISAOE
@AEGISAOE 4 ай бұрын
try reverse aegis
@ruadeil_zabelin
@ruadeil_zabelin 4 ай бұрын
Wouldn't piggybagging on one of the existing dll's be better? So for example it probably uses winmm.dll or some d3d dll. If you put that in the same directory as the executable; it'll get loaded first. You stub/forward all the functions and put your own stuff in one of the ones that gets called. That way you don't need admin elevation to inject yourself into the other process
@247CTF
@247CTF 4 ай бұрын
That is another option sure, but you don't need admin rights to inject into another process you own
@gameplayoffert1326
@gameplayoffert1326 4 ай бұрын
Hi, excellent video, however i have a question about the first software with the printf, where did you see what was needed for the "printf" function ? I'm asking that because for example, if you reverse engineer whatever software, how do we know the parameters used for that function ? nvm i'm new so i'm sorry if my question sound a little bit dumb :D
@247CTF
@247CTF 4 ай бұрын
I know from playing the game and guessed the format of the format specifier
@aozzz6936
@aozzz6936 5 ай бұрын
I thought windows will always give you random memory addresses, but you apply patching to the same address all the time. I don't get it.
@misch2
@misch2 4 ай бұрын
It's a virtual address, not a physical one. So it doesn't depend where into the RAM the process is loaded, it always sees itself with the same addresses.
@aozzz6936
@aozzz6936 4 ай бұрын
@@misch2 what do you mean sees itself, when he specifies the exact address. Try to define a variable and it will have different addresses on each run, even if it's virtual memory.
@247CTF
@247CTF 4 ай бұрын
Depends if the binary / DLL is compiled with ASLR or not
@ChiChi-li3xn
@ChiChi-li3xn 5 ай бұрын
Thankyou for this video, very interested! Can you show me step by step when get Address of resources ingame to value base address 0x001830F4 of memory_ptr resource_hack_ptr param in code, and the offsets. In video you talk and action to fast, i can't follow. I'm newbie for this technology, and i want to practice with this game, I want get some info ingame some thing like player's civil, total gold corrected, kill/losses, win/lose ... can you give some advice? thank in advance, and sorry for my poor English!
@DukeNuGets
@DukeNuGets 6 ай бұрын
Nice tutorial !. It's possible to inject a .Net Framework DLL ?. Thx
@247CTF
@247CTF 4 ай бұрын
Yes, it's a different method but you can - there are a few projects from GitHub that will show you how this works
@tumio599
@tumio599 6 ай бұрын
PLS Find for me address at time 2:24
@syfler1266
@syfler1266 6 ай бұрын
what about x64 hook tutorial?
@tr7zw
@tr7zw 7 ай бұрын
When you find an awesome channel and they haven't uploaded in 2 years :(
@247CTF
@247CTF 6 ай бұрын
F
@tr7zw
@tr7zw 6 ай бұрын
@@247CTF 👀
@cuentamicrosoft9841
@cuentamicrosoft9841 7 ай бұрын
i dont understand, what we are doing is reading a pointer that points to a pointer that points to a pointer and so on until the last pointer points to the actual memory adress or are we just adding the known offsets? and if thats the case, why couldnt we just store the sum of all of the offsets and add that instead of storing all of them and adding them one by one? if i press "pointer scan for this adress" and it tells me there is a base adress an then 2 offsets, offset 0 is 10 and offset 1 is 154, then what im looking for is base adress + (10 + 154) and if i go there i should find the memory location im looking for right? also when cheat engine says 10, does it mean decimal 10 or hexadecimal 10, wich would be 16?
@247CTF
@247CTF 6 ай бұрын
It's pointer -> pointer -> pointer. The pointer will (likely) contain a different memory address, so you can't just add offsets to the first one and expect the same result as following the pointers.
@QWERTZ-NOOB
@QWERTZ-NOOB 7 ай бұрын
Very interesting! Maybe you have heard that ubisoft has shut down The Crew 1, an always online racing game that has an integrated offline mode not available for normal players. Could the same or a similar method be used to make this offline mode available?
@247CTF
@247CTF 4 ай бұрын
Maybe, depends what is on the server and if any data needs to be pulled down to play
@tommyjefferson2955
@tommyjefferson2955 7 ай бұрын
Age of mythology resources doesnt work the same with resources. Can you explain why? For example, if i have 250 and change to 200, it wont show up.
@247CTF
@247CTF 6 ай бұрын
They might be using a different representation for the value, or it could be being masked / obfuscated (to prevent exactly what you are trying to do).
@DegradationDomain_stuff
@DegradationDomain_stuff 7 ай бұрын
#BoycottPatreon for providing services to rashian war criminals like WarGonzo
@AR-dx6nm
@AR-dx6nm 7 ай бұрын
Is it possible to do this in an online games like ragnarok online?
@igorthelight
@igorthelight 4 ай бұрын
It is but you may be banned ;-)
@Playeroth
@Playeroth 8 ай бұрын
the process reminds me of MelonLoader, which is easier to load custom dll into a game
@jackibackiboy5528
@jackibackiboy5528 8 ай бұрын
For anyone it might concern: if you're using WCHAR (wchar_t) type in case of unicode and you're using LoadLibraryW, then you need to use wcslen for the string length. And not only that, wcslen only returns the length in wide-char units, and since VirtualAllocEx and WriteProcessmemory expects it in byte units, you must multiply the string length by sizeof(WCHAR), which commonly is 2 bytes. TLDR; dllPathBytes = (wcslen(dllFullPath) + 1) * sizeof(WCHAR)
@youssefblt9839
@youssefblt9839 9 ай бұрын
how can we detedt this type of vulnerabilitys on a web app using burp
@247CTF
@247CTF 8 ай бұрын
You could try making multiple requests at the same time. PortSwigger has a free lab on race conditions you could check out.
@johnkeo358
@johnkeo358 10 ай бұрын
I'm having issues trying to find the value for a timer. For example, I'm playing the combat mission series. I want to find the timer for how long it takes for artillery shells to fire. I can easily find the address to modify the amount of ammunition I have but I'm having issues finding the address that relates to how long it takes for the ammunition to fire. It has a 9 minute timer but I'd like to change it to 1. I've tried searching for 9 and trying to find it while it's counting down but no luck. How would you approach this scenario?
@247CTF
@247CTF 8 ай бұрын
Trial and error - especially on the data type used to store the timer data. It might be stored in seconds for example, not minutes.
@sylvesterrac3792
@sylvesterrac3792 10 ай бұрын
Very clear and to the point, you are a great teacher, love your style. TYVM
@247CTF
@247CTF 8 ай бұрын
Thank you! 😊
@blorb112
@blorb112 10 ай бұрын
This is excellent and definitely more interested in a more robust DLL injection solution.
@ahmedgames9335
@ahmedgames9335 10 ай бұрын
can i deal with mono.dll like you used the LoadLibraryA and run it in thread inside the target process but i will use for ex mono_get_root_domain ???
@247CTF
@247CTF 8 ай бұрын
You want to do this with .NET? You can achieve a similar effect but the process is slightly different, there are some examples on GitHub you could check out. The bonus is .NET makes the reversing step easier (usually).
@SlightControl
@SlightControl 11 ай бұрын
Great video. I have two things I don't understand: What is the purpose of poping the return address at the start? Why are the instruction overwritten by the jump being pushed onto the stack instead of where the instruction pointer will be looking at?
@247CTF
@247CTF 8 ай бұрын
The value is popped so we know where to return back to before the value is overwriten
@lolsucks3599
@lolsucks3599 Жыл бұрын
I wanna add new civs to settlers 4 not sure if that is possible but I dont even understand reverse engineering so that is the biggest barrier.
@247CTF
@247CTF 8 ай бұрын
Possible.. yes. But it's (likely) more involved than this, you should take a look at 'modding' rather than hacking.
@RogueWind365
@RogueWind365 Жыл бұрын
Is this technique also work on Ghidra, I'm newbie and I've been trying to reverse a game coded in C++ called Rise and Fall Civilisation at war
@Model_Tamilan
@Model_Tamilan Жыл бұрын
Hello sir AVIATOR GAME hacking videos please sir..
@247CTF
@247CTF 8 ай бұрын
😂
@heatseeker3654
@heatseeker3654 Жыл бұрын
What program are you using scan the memory locations?
@247CTF
@247CTF 8 ай бұрын
x64dbg
@djay10101
@djay10101 Жыл бұрын
How do you locate the address of the patch without knowing it in the first place? And how do you know what values to overwrite it with to achieve the function you want?
@DatBoi_TheGudBIAS
@DatBoi_TheGudBIAS 9 ай бұрын
This is where the previous part comes in. Before U inject a dll, u should use cheat engine to make a script. With Dat script, u can then see the bytes of the new opcodes and the adress changed, and there's ur answer
@247CTF
@247CTF 8 ай бұрын
That's right - there is a playlist for the series, if you watch it in order the current video (usually) builds on the previous one.
@yashgupta8000
@yashgupta8000 Жыл бұрын
So the most secure way is to use magic bytes?
@247CTF
@247CTF 8 ай бұрын
Depends what you want to do, but generally make sure you are using the correct comparison type.
@heatseeker3654
@heatseeker3654 Жыл бұрын
Can this be done for Age of Empires II: The Conquerors?
@247CTF
@247CTF 8 ай бұрын
Probably something similar, I've never looked..
@heatseeker3654
@heatseeker3654 8 ай бұрын
@@247CTF I have already tested time ago and it works.
@darkfllame
@darkfllame Жыл бұрын
i watch dll injection tutorial for "educational" purpose 😏
@schittPosts101
@schittPosts101 Жыл бұрын
Script kiddie
@darkfllame
@darkfllame Жыл бұрын
@@schittPosts101 no worry kid, i got the *C programming language👍👌* directly into my brain, with a lot of cafeine lol
@schittPosts101
@schittPosts101 Жыл бұрын
@@darkfllame LMK when you go straight to the diet coke to finish by deadline xD
@darkfllame
@darkfllame Жыл бұрын
@@schittPosts101 okay xd, i'm making a programming language with zig and don't really have a deadline so anyway
@Kronos.Saturn
@Kronos.Saturn 11 ай бұрын
@@darkfllame i code in pure binary im better then you
@deckard5pegasus673
@deckard5pegasus673 Жыл бұрын
You have an error in your code. You should get rid of the [::-1] I will explain: In the video at 10:01 the codes(in little edian hex dump) are the following: 78 68 00 00 5f 2a 00 00 but because memory is in *little endian* , the codes are really: 6878h 2a5fh ... you copied the codes into python in little endian form(meaning, already "swapped")... This code really swaps the bytes 8:50 mov ecx, dword[....] ; *loads 6878h into ecx NOT 7868* move edx,ecx ; ditto into edx sar edx,0x8 ; now edx holds 68h mov byte[eax],dl ;68h is loaded into LOW memory inc eax ; advance memory pointer move byte[eax],cl ;78h is loaded into HIGHER memory *The value loaded into ecx is 6878h NOT 7868h, and the value written into memory pointed to by eax is 7868h NOT 6878h* You copied the codes into the python array directly from hex dump in little endian format, thus the python does not need [::-1], as you already inadvertently swapped the bytes when copying.