Lets make a memory based bot [T-1][Disabling the client protection]
Resumo
TLDRAngelos from Elite PVP covers the process of configuring ODbg to disable decline protection in Conquer Online. The tutorial involves detailed steps for downloading and installing ODbg, setting hardware breakpoints, and modifying assembly instructions to bypass anti-debugging features of the game. After the configuration, users are able to run the game without it terminating due to protective measures, and are prepared for future tutorials on finding necessary function addresses.
ConclusΓ΅es
- π¨βπ» Learn to use ODbg for debugging.
- π Set hardware breakpoints to control execution.
- π οΈ Modify assembly instructions to bypass protections.
- πΎ Always back up your files before modifying DLLs.
- π₯ Understand the stack and its significance in debugging.
Linha do tempo
- 00:00:00 - 00:05:00
Introduction by Angelos from Elite PVP, discussing the disabling of decline protection with ODbg.
- 00:05:00 - 00:10:00
Detailed instructions on downloading and installing ODbg for debugging purposes, including configuration settings.
- 00:10:00 - 00:15:00
Explanation of opening the Conquer.exe within ODbg, and the importance of analyzing debug modules and their processes.
- 00:15:00 - 00:20:00
Steps to set breakpoints and analyze the stack to trace the source of process termination within Conquer.exe.
- 00:20:00 - 00:25:00
Use of hardware breakpoints to monitor the exit process call, leading to understanding anti-debugging measures in the program.
- 00:25:00 - 00:30:00
Instructions on altering assembly code to bypass the exit process function for successful debugging without termination.
- 00:30:00 - 00:35:00
Explanation of saving modifications to the executable and setting the correct directory for ud files for ongoing debugging.
- 00:35:00 - 00:42:02
Closing remarks on successfully entering the game and preparing for the next tutorial focusing on memory-based address finding.
Mapa mental
VΓdeo de perguntas e respostas
What is ODbg?
ODbg is a debugger used for analyzing and modifying the behavior of applications.
How do I disable decline protection in Conquer Online?
You can disable decline protection by using a debugger like ODbg to analyze and modify specific assembly instructions.
What are hardware breakpoints?
Hardware breakpoints are triggers set within the debugger that pause execution when the specified condition is met.
Why do I need to back up my files when modifying DLLs?
Backing up files prevents loss if modifications cause issues, allowing for easy restoration.
Can I skip certain segments of the tutorial?
Yes, you can skip segments if you're already familiar with certain steps or concepts.
Ver mais resumos de vΓdeos
ISO31000 - Risk Management Standard
THE DABBAWALA : A documentary film
Iron And Gold | Stories for Teenagers | @EnglishFairyTales
How to make a Laser protection security system with ESP8266 | Nodemcu ESP8266 Projects #sritu_hobby
Top 101 Secret AI Tools π€to Earn Money In 2025 | Free AI Video, Voice & Photo Editing | YTM Podcast
Israel Adesanya All 5 Losses In MMA
- 00:00:00hello Geeks this is Angelos from Elite
- 00:00:02PVP recording tutorial one of the
- 00:00:05tutorial series let's make a memory
- 00:00:07based
- 00:00:08bar so disabling decline protection
- 00:00:11that's the subject of this
- 00:00:13tutorial probably it'll extend to part
- 00:00:16two maybe I'm not sure we'll we'll
- 00:00:18figure it out anyway so the first thing
- 00:00:21I'm going to do is to disable decline
- 00:00:24protection how to do so we're going to
- 00:00:27do that uh we're gonna like do it step
- 00:00:30by step and we're GNA do it using o
- 00:00:33debug AKA o
- 00:00:36dbg now for you for those who doesn't
- 00:00:40know what ol debug is all you got to do
- 00:00:43is simply Google it Google is your
- 00:00:46friend
- 00:00:48however now uh I uh I already have it
- 00:00:53installed on my PC but I'm just going to
- 00:00:56download it now and show you
- 00:01:00how to install it and do all that crap
- 00:01:03and we'll get started so I'm going to
- 00:01:06open my web browser and I'm going to
- 00:01:08type O dbg
- 00:01:112.0 and I'm going to open the first link
- 00:01:15and I'm going to now if you can find
- 00:01:18your way around on this page all you got
- 00:01:20to do basically is just click right here
- 00:01:22where it says all the dbg and your
- 00:01:24download should start okay now that
- 00:01:28consider that I did hit okay and I saved
- 00:01:31it somewhere on my desktop on in a new
- 00:01:34folder
- 00:01:35whatever which
- 00:01:38is basically what I did I already have
- 00:01:40it downloaded in ready right here I'm
- 00:01:43just going to right click extract it to
- 00:01:45this folder I'm just going to rename it
- 00:01:47real quick and I'm going to call it ol
- 00:01:50and then I'm going to open this folder
- 00:01:52I'm going to right click on uh all uh
- 00:01:56dbg exe go to properties and go to
- 00:02:01compatibility and make sure it's running
- 00:02:04as an administrator under the prevent
- 00:02:07level that's important so you got to do
- 00:02:10that and before you even start all the
- 00:02:13de however now that I've done that let
- 00:02:17me just fix my uh toolbar so it Go of
- 00:02:22HIDs
- 00:02:24okay now that that I've done that I'm
- 00:02:26going to launch all the debug and I'm
- 00:02:30going to go to you can either click this
- 00:02:33button here or you can just hit alt o on
- 00:02:37your keyboard and it'll open the same
- 00:02:40dialogue you can also access it under
- 00:02:42options here anyways we're going to go
- 00:02:45under exceptions Tab and we're going to
- 00:02:48hit or check this check box right here
- 00:02:51where it says ignore also the following
- 00:02:53custom exceptions or ranges and I'm
- 00:02:56going to add
- 00:02:58range now we're going going to leave
- 00:03:00this box as As and we're going to change
- 00:03:03this to uh we can probably select from
- 00:03:07this list which is we're going to select
- 00:03:11the last exception in this list and
- 00:03:15we're going to hit
- 00:03:17okay and I'm going
- 00:03:20to actually delete this I'll just add
- 00:03:24range and also leave this box as is and
- 00:03:28just type f f FF FF FF so you got to
- 00:03:34type f eight times I'm not going to
- 00:03:36explain what that mean or does however
- 00:03:39you got to figure it out on your own you
- 00:03:41have a brain so now that I've done that
- 00:03:45I'm going to go under the directories
- 00:03:48Tab
- 00:03:50and as you can see it has already copied
- 00:03:54the directory where we have uh o
- 00:03:58installed or extracted
- 00:04:00so I'm just going to go to that
- 00:04:02directory which is right here and I'm
- 00:04:05going to right click create new folder
- 00:04:08and I'm going to call this
- 00:04:11UDS and uh a new folder and I'm going
- 00:04:16call it
- 00:04:18plugins now we're not going to be using
- 00:04:21plugins in this tutorial we're going to
- 00:04:23do it all
- 00:04:24manual and we're just going to do it
- 00:04:27ourselves but the UDS folder what the
- 00:04:32udds folder is needed for is just just
- 00:04:35basically for o to install all the ud
- 00:04:38files that'll create and what those
- 00:04:40files contain is a lot of helpful
- 00:04:43information that all day is going to
- 00:04:46collect uh along the line while you
- 00:04:49debug programs or attach to programs and
- 00:04:52so basically the purpose of these
- 00:04:56files to make your life easier so just
- 00:04:58hit okay
- 00:05:00now that we've done that uh I think
- 00:05:02we're all set yeah so the first step is
- 00:05:08to uh open conquer. exe before we open
- 00:05:14conquer. exe now for those who had never
- 00:05:18worked with all debug I will not explain
- 00:05:22what all these button does and whatever
- 00:05:24all you got to do simply is keep your
- 00:05:26mouse long enough on each button and
- 00:05:30it'll show you a helpful t as to what
- 00:05:33that button does
- 00:05:37so if you still don't understand stuff
- 00:05:41all you got to do is also Google it
- 00:05:43Google and again is your friend so I'll
- 00:05:47just click file open and I have a clean
- 00:05:51installation of conquer. Conquer Online
- 00:05:54and uh it'll it already took me to that
- 00:05:58folder already I think because I've
- 00:06:02opened it earlier anyway and I'm going
- 00:06:05to navigate to my Conquer Online client
- 00:06:07folder and I'm going to find conquer.
- 00:06:09exe and then I'm going to head open now
- 00:06:14you can see it analyzing down here
- 00:06:17all these modules that the that o is
- 00:06:21analyzing it'll just collect as much
- 00:06:24data as it needs and it'll save it in
- 00:06:26the ud files when you CL close uh allb
- 00:06:29so I would recommend that you let it
- 00:06:31finish it'll make your life easier
- 00:06:34so uh while it's doing that
- 00:06:38crap
- 00:06:40uh I forgot what I was going to explain
- 00:06:44never mind that anyway I'll just pause
- 00:06:46the video until it's done okay now that
- 00:06:49all is done analyzing the
- 00:06:52models we uh if if you look at the lower
- 00:06:56right corner you'll notice that it says
- 00:06:58terminated basically all the bug is
- 00:07:01telling you this process was terminated
- 00:07:04somehow so to figure out what terminated
- 00:07:08the process we're going to have to uh
- 00:07:10find our way around and find out what
- 00:07:13really uh terminated the process and
- 00:07:18uh to do so before we do so uh this
- 00:07:25is uh just uh another check to stop you
- 00:07:30from opening conquer. exe in olug even
- 00:07:35though if we go to view executable
- 00:07:37models or hit
- 00:07:40L like this you can see that we have
- 00:07:46basically uh all the models needed to uh
- 00:07:52start Conquer Online or conquer. exe and
- 00:07:56if we select conquer. exe double click
- 00:07:58on it you can see that all take us
- 00:08:01really to inside the uh conquer exe and
- 00:08:04you can see the assembly
- 00:08:06code that's not a really helpful thing
- 00:08:10because as long as we can see the code I
- 00:08:13can find my way way around and find out
- 00:08:16what really has
- 00:08:17changed but for you maybe there's some
- 00:08:20people out there that doesn't know what
- 00:08:22to do or where to go or what to look for
- 00:08:26that's going to be kind of like annoying
- 00:08:28however let's figure out what really uh
- 00:08:31killed our process so first thing I like
- 00:08:33to do is to analyze the stack and see
- 00:08:37what was the last thing that this
- 00:08:39program uh did before it it terminates
- 00:08:43so we're this is again for those who
- 00:08:46doesn't know what uh these all this
- 00:08:50nonsense on the screen is this is your
- 00:08:52main CPU window and this is the
- 00:08:54registered window this is the stack
- 00:08:56window and this is the uh memory View or
- 00:08:59me the memory dump so we're going to
- 00:09:03head to the stack window and we're going
- 00:09:05to scroll down and see if we can find
- 00:09:07something helpful all right now
- 00:09:11that I scroll down a little and I can
- 00:09:14see uh a call
- 00:09:16to Kernel
- 00:09:1832. exit process so I need to know what
- 00:09:23the exit process function does basically
- 00:09:27uh I I I already know that the exit
- 00:09:30process function is to kill the the
- 00:09:32current process so that's useful and I
- 00:09:35can like start here so what I'm going to
- 00:09:39do is just select this line where it
- 00:09:41says return from Red dll blah blah blah
- 00:09:45this is just a return address so if I
- 00:09:47select it click on it left click on it
- 00:09:51and then click enter it'll take you
- 00:09:52straight into this function and if you
- 00:09:54notied now we're inside the kernel 32
- 00:09:57model and uh
- 00:10:00straight inside the exit process
- 00:10:03function so what I'm going to do is just
- 00:10:06I'm going to right click and I'm going
- 00:10:08to go breakpoint hardware breakpoint and
- 00:10:12I'm going to make sure it's on execution
- 00:10:14and I'm going to select slot two and
- 00:10:16then I'm going to hit okay what that
- 00:10:18does is is just simply place a hardware
- 00:10:22breakpoint on the this certain address
- 00:10:25that we right clicked on so now that
- 00:10:29I've have done that uh we need to make
- 00:10:32sure that we can actually hit this break
- 00:10:35point before the process exits or else
- 00:10:39it's useless so let's just click on this
- 00:10:42button here it'll restart the the corent
- 00:10:47process and the break point was
- 00:10:50triggered and it right now we are at the
- 00:10:55top of the exit process function now
- 00:11:00now that uh my breakpoint was triggered
- 00:11:02I'm going to go back to the stack and
- 00:11:04I'm going to check what really call this
- 00:11:07function the stack uh really can really
- 00:11:10help me so I'll just go back to this
- 00:11:12stack and I'm going to click on the very
- 00:11:15first return address and if you notice
- 00:11:17it says return from TQ and P to TQ and P
- 00:11:21TQ and P is basically another D file
- 00:11:25that TQ team decided to add and it to
- 00:11:28put some trap and anti-debugging shed
- 00:11:31inside it we're going to Simply bypass
- 00:11:34that so I'm just going to click on it
- 00:11:35left click on it and then hit enter
- 00:11:38it'll take me straight into tq& model
- 00:11:40because this return address returns to
- 00:11:43this address which is the which is
- 00:11:45inside the
- 00:11:47tq& so to analyze this model here which
- 00:11:52is tq& p and uh I'll just click I'll
- 00:11:56just hit control a on my keyboard board
- 00:12:00now what this dialogue box is telling
- 00:12:02you basically is that this model
- 00:12:05contains sections of code that are
- 00:12:07either compressed or encrypted we don't
- 00:12:09really care about that right now just
- 00:12:11hit
- 00:12:12yes as you can see the helpful stuff
- 00:12:15showed up after the analysis
- 00:12:18so now this return address returns to
- 00:12:21pop ECX at this address here so Above It
- 00:12:26Right Above It one line it says it it
- 00:12:29calls a certain address and this address
- 00:12:32is also inside tq&
- 00:12:35so basically this return address is to
- 00:12:38return from this call to this address
- 00:12:41here so the program continues executing
- 00:12:44at from this address here so what I'm
- 00:12:48going to do is one line above that
- 00:12:50return address and I'm going to right
- 00:12:52click uh and I'm going to place a
- 00:12:54hardware break point again but I'm going
- 00:12:56to make sure the slot one selected also
- 00:13:00on execution and I'm going to hit
- 00:13:02okay now I'm going to restart the
- 00:13:05program and hope that this breakpoint
- 00:13:08will trigger will be triggered so
- 00:13:11restart yeah I know
- 00:13:15okay and it did however let's click
- 00:13:20let's hit contrl a again to analyze the
- 00:13:23process and what I'm going to do now is
- 00:13:26I'm going to hit f8 so f8 what what f8
- 00:13:30basically does is step over the function
- 00:13:33F7 to step into the function it's
- 00:13:35mentioned right here if
- 00:13:37you keep your mouse long enough it'll
- 00:13:40show you what these buttons does
- 00:13:44so get used to using the shortcuts
- 00:13:46because it's really uh useful it'll make
- 00:13:51everything faster you don't have to keep
- 00:13:53clicking buttons here and
- 00:13:56however now uh when I have
- 00:13:59f8 basically the program is going to is
- 00:14:02going to go inside this call execute
- 00:14:05this C code right here and then return
- 00:14:08at this this uh return address here
- 00:14:11return here anyway so if somewhere along
- 00:14:17any of these lines the exit process
- 00:14:19function was uh
- 00:14:22called what basically is going to happen
- 00:14:25is that my second break point which is
- 00:14:28now placed on the exit process function
- 00:14:30will be triggered but if nothing
- 00:14:32happened and the program executed all
- 00:14:36this code and then returned and the
- 00:14:38break point was not triggered I know
- 00:14:41that it did not call it so I'm going to
- 00:14:44hit the star button on my keyboard to go
- 00:14:48back to where the current pointer for
- 00:14:51the debugger
- 00:14:53is and uh I'm going to hit
- 00:14:56f8 now as you can see no break points
- 00:15:01were triggered nothing happened so I
- 00:15:02know it did not really call that exit
- 00:15:05process function so I right click here
- 00:15:08breakpoint and I can safely delete this
- 00:15:10Hardware breakpoint so I can use it
- 00:15:12somewhere else because all you can use
- 00:15:14is four Hardware break points you can't
- 00:15:16set more than four so we got to keep it
- 00:15:19like
- 00:15:20limited anyway so I'm going to keep uh
- 00:15:25keep on the f8 right now I'm going to
- 00:15:28hit f 8 f8 and continue with the process
- 00:15:32until I find something interesting
- 00:15:34something useful so continue now it
- 00:15:38decided to jump and discard all of this
- 00:15:41ignore it just jump now it's in the the
- 00:15:44process of returning now it
- 00:15:47returns okay now this function did not
- 00:15:50really call the exit
- 00:15:52process now remember that we were
- 00:15:55tracing the process execution backwards
- 00:15:59the stack Works backwards if you're
- 00:16:01going to use the stack to analyze stuff
- 00:16:04you can't go upwards and start from here
- 00:16:07no because the stack address imagine the
- 00:16:10stack address like a I don't know how to
- 00:16:12give you an example for that but it's
- 00:16:15like
- 00:16:16um it's like a a stack of of
- 00:16:20towels if you if you to like if you have
- 00:16:24a stack of towels and you keep stacking
- 00:16:26towels on top of each other you're not
- 00:16:28not just going to go into the middle of
- 00:16:32that stack and just pull one towel
- 00:16:34because it'll all fall apart it you're
- 00:16:37just going to have to grab the first one
- 00:16:40on top so basically that's what the
- 00:16:43stack is uh first in first out
- 00:16:48so now that we know that that's the
- 00:16:52reason that we supposed to trace
- 00:16:54backwards anyway so I'm going to
- 00:16:57continue with the f 8 again f8 F now
- 00:17:03it's pushing the arguments I know that
- 00:17:06with these arguments the function can do
- 00:17:07something but I don't know what that
- 00:17:09thing is so what I'm going to do is just
- 00:17:12right click again break Point Hardware
- 00:17:15breakpoint and I'm going to make sure on
- 00:17:17execution slot one and I'm going to hit
- 00:17:20okay
- 00:17:22now if I hit f8 again if the exit
- 00:17:26process function was called
- 00:17:29my second breakpoint will be triggered
- 00:17:31so let's hit
- 00:17:34f8 now we can see that it did trigger
- 00:17:38that breakpoint and the exit process
- 00:17:40function was called so now we know that
- 00:17:45the the this call here where my second
- 00:17:48Hardware breakpoint is really calls exit
- 00:17:52process somewhere along the line so I'll
- 00:17:55restart my
- 00:17:57process and a will take me straight back
- 00:18:00to this break point here which is really
- 00:18:04useful and it'll keep you on track
- 00:18:07without having to retrace the whole
- 00:18:10thing from uh from uh square one or
- 00:18:14Square zero whatever the term is anyway
- 00:18:18so now that I'm here I'm going to H F7
- 00:18:23to step into this function but before I
- 00:18:26do that I'm going to write click
- 00:18:30breakpoint hardware breakpoint and
- 00:18:32delete this breakpoint so we can use it
- 00:18:35somewhere else and I'm going to hit
- 00:18:38F7 now I'm inside that call okay so what
- 00:18:43this call does basically is it moves a
- 00:18:46deward value from the uh
- 00:18:50stack which is the argument to argument
- 00:18:53to Value right now equals one so it
- 00:18:56movees it's going to be it's going to
- 00:18:59move one into eax which is currently one
- 00:19:02so nothing will
- 00:19:04change and then it'll subtract it by one
- 00:19:07subtract ex ex by one and then this
- 00:19:11subtracting
- 00:19:13process it sets the BET Flags here I
- 00:19:17don't really recall which bet Flags I
- 00:19:21think it's p or Z and then it checks
- 00:19:25whether P or and or or Z equals one or
- 00:19:30zero and it jumps
- 00:19:32accordingly so we're not going to really
- 00:19:35bother with that you can Google it if
- 00:19:38you want to really know what that does
- 00:19:42but let's uh sorry let's continue with
- 00:19:46the f8 now ex still one nothing has
- 00:19:50changed now subtract ex by one ex
- 00:19:53becomes zero and then as you can see
- 00:19:57here it says jump is not
- 00:20:00taken
- 00:20:02so with the jump not taken g&z basically
- 00:20:06stands for jump not zero jump not zero
- 00:20:10again like I said it compares the bed
- 00:20:13Flags here I'm not sure whether it's b
- 00:20:15or Z but it checks whether it's one or
- 00:20:18zero and it jumps accordingly
- 00:20:22so what we understand from this process
- 00:20:25here from this few uh these six lines
- 00:20:30that
- 00:20:32uh it either jumps to this adjust here
- 00:20:38you can see this little
- 00:20:40arrow right here it either jumps or it
- 00:20:46doesn't and it calls this address this
- 00:20:49address and then it continues and
- 00:20:52returns so what we're going to do is
- 00:20:55right underneath this jump right here
- 00:20:58we're going going to set a hardware
- 00:21:00breakpoint
- 00:21:02again make sure it's on execution slot
- 00:21:06one hit okay and the reason we did that
- 00:21:09and we didn't set the break point here
- 00:21:11or here is to make sure that it really
- 00:21:14it's really executing or calling these
- 00:21:17two addresses if it's not then it's
- 00:21:20useless and like for me right now I'm
- 00:21:24sure that it's calling this or this
- 00:21:26called or both of them actually because
- 00:21:29if it didn't there's nothing else to
- 00:21:31call the exit process function so what
- 00:21:35I'm going to do is I'm going to hit f8
- 00:21:38and I'm going to hit f8 again boom the
- 00:21:41exit process function did really was
- 00:21:44really called so let's restart our
- 00:21:49process it'll take us
- 00:21:52oops what just happened okay I think our
- 00:21:56breakpoint or our Hardware break point
- 00:21:59went
- 00:22:01poof yes it did anyway I'm going to
- 00:22:04delete
- 00:22:07this
- 00:22:09uh okay
- 00:22:11delete and I'm going
- 00:22:14to return here and this one returns okay
- 00:22:18I'll fix this
- 00:22:21by tracing the whole thing all over
- 00:22:24again I guess I'm going to have to do
- 00:22:26that I don't know why
- 00:22:29did that break point disappear but oh
- 00:22:33well so I'm going to do the whole
- 00:22:35process all over again you don't have to
- 00:22:38watch this you can skip this if
- 00:22:41you are not interested so again I'm
- 00:22:43going to set a break point actually yes
- 00:22:47I can set it here power break point okay
- 00:22:51and I'm going to restart the
- 00:22:56process my breake point was trigger I
- 00:22:58can right click delete and then continue
- 00:23:03executing this function until return and
- 00:23:06if you remember this is the function
- 00:23:10that really that we were inside right
- 00:23:14now I'm going to hit F7 it'll take me
- 00:23:16inside that
- 00:23:18call and then again I'm right where we
- 00:23:23left off
- 00:23:26so now that we know that this call right
- 00:23:29here called the exit process function
- 00:23:33we're going to try and do what the
- 00:23:36program does sometimes which is
- 00:23:39discarding these two calls and jumping
- 00:23:41straight to move ex1 and then return so
- 00:23:45how do we do that we do that by simply
- 00:23:48double clicking this line right here the
- 00:23:50g&z uh instruction and then we're going
- 00:23:53to change it from gnz into GMP GMP start
- 00:23:58it stands for uh jump jump doesn't check
- 00:24:02check for any conditions any bet Flags
- 00:24:05it just jumps wherever you tell it to
- 00:24:07jump so with that said we're going to
- 00:24:10assemble that will uh edit the code
- 00:24:14modify it to what we tell told tell it
- 00:24:17to
- 00:24:18do and then we are going to test this
- 00:24:21program and see if it'll terminate or
- 00:24:24not and we do that by simply heading the
- 00:24:29play button here which will continue
- 00:24:31executing our process normally so let's
- 00:24:35click that or before we click that uh
- 00:24:40you might want to just right highlight
- 00:24:43this right click edit and then copy it
- 00:24:46as a table and you can then open a
- 00:24:49notepad and then you can paste it here
- 00:24:54and as you can see It'll uh copy the
- 00:24:57address
- 00:24:59of each instruction and the co the
- 00:25:04the the assembly
- 00:25:07instructions and
- 00:25:09the uh binary code for each assembly
- 00:25:13instruction so you can keep that for uh
- 00:25:17like later use or maybe if you lost your
- 00:25:21way or if you're tracing it and your
- 00:25:24break point was gone just like what
- 00:25:26happened to us right now you can
- 00:25:28go back to
- 00:25:30this uh model here
- 00:25:33tq& and find this function based on the
- 00:25:36address right here or you can simply
- 00:25:40right click search for and you're going
- 00:25:42to search for a sequence of commands so
- 00:25:45what we're going to do is simply play
- 00:25:48the program boom as you can see right
- 00:25:52here it says conquer the model entry
- 00:25:56point so we are inside the model entry
- 00:25:58point and the process did not really
- 00:26:00terminate so that's really good and what
- 00:26:05that tells us is that we did really
- 00:26:07bypass that exit process function and
- 00:26:10what it
- 00:26:11did so as long as that works let's just
- 00:26:16restart our process and we want to make
- 00:26:19that those changes that we just made
- 00:26:22permanent so now that I know what to
- 00:26:25change and where to change it I can
- 00:26:27simply go to view executable models or
- 00:26:31hit alt e on your keyboard it'll open
- 00:26:34this dialogue for you this window and
- 00:26:37you're going to select instead of
- 00:26:39conquer. exe you're going to go to TQ
- 00:26:42and
- 00:26:43P.D you hit enter it'll take you inside
- 00:26:46this model click hitr a to analyze it
- 00:26:50retrace it back that's really
- 00:26:53easier to
- 00:26:57do so we're at the exit process function
- 00:26:59again we click right here it'll take us
- 00:27:02back back here I'm going to straight set
- 00:27:06the breakpoint on the return address
- 00:27:08right here so breakpoint Hardware
- 00:27:12breakpoint slot one okay
- 00:27:19restart and then I'm going to trace it
- 00:27:23back again okay this is the function
- 00:27:27that we need to edit now I'm going to
- 00:27:31double click on this again change it to
- 00:27:35GMP instead of g&z and I'm going to
- 00:27:38click
- 00:27:39assemble and with that done I'm going to
- 00:27:42click on that left click on that line
- 00:27:45that we just changed I'm going to right
- 00:27:47click edit and I'm going to copy to
- 00:27:51executable
- 00:28:04so that's just going to tell you to that
- 00:28:08you did some modifications and you need
- 00:28:10to save them I'm going to ignore this
- 00:28:12box and I'm not going to display it
- 00:28:14anymore I'm hit okay and right now what
- 00:28:17we're doing is we're saving our work
- 00:28:20we're saving our edits and modifications
- 00:28:23so to save that you're going to click
- 00:28:25the x button right here it'll ask you if
- 00:28:27you want to save save it hit yes it'll
- 00:28:29open the same directory where your
- 00:28:31conquer exe exists so all you need to do
- 00:28:35is hit save and as you can see it'll
- 00:28:37give it the same name too so excuse
- 00:28:41me we're just going to hit save It'll
- 00:28:45ask you if you if you want to replace
- 00:28:48the current dll file and you're going to
- 00:28:50H yes so with that done let's try and
- 00:28:54restart our process and see what's going
- 00:28:56to happen
- 00:28:59okay this is because I didn't delete my
- 00:29:03break point which is stupid so let's
- 00:29:05just delete it and continue running the
- 00:29:09process as you can see everything worked
- 00:29:12just fine and right now we're inside
- 00:29:15we're at the uh model entry point so if
- 00:29:18we hit play and continue running the
- 00:29:21process it'll finish analyzing those uh
- 00:29:23models inside this process and it should
- 00:29:27pop the
- 00:29:28dialogue that asks us to run play. exe
- 00:29:32that's only in case if everything worked
- 00:29:35as
- 00:29:37intended so we're waiting for that
- 00:29:40message
- 00:29:42box there it is which is cool now I'm
- 00:29:47going to
- 00:29:49terminate conqueror exe as you can see
- 00:29:52it'll
- 00:29:53still do that crap and then it'll save
- 00:29:56all the the ud files so if we go back
- 00:29:59into o UD files oh
- 00:30:03why did it save them
- 00:30:06here it was supposed to save them inside
- 00:30:09this
- 00:30:11folder so let's go back and check it
- 00:30:16out oh I'm
- 00:30:18sorry the reason
- 00:30:21is that I did
- 00:30:24not set the directories and we're going
- 00:30:28to set them
- 00:30:30now we're going to set the ud files
- 00:30:35directory we're going to click here
- 00:30:37select the the the udds file that we
- 00:30:40created earlier hit okay and then we're
- 00:30:43going to select the plugins folders that
- 00:30:45we created earlier hit okay then hit
- 00:30:48okay which what what that will do is
- 00:30:52though all these UD files were supposed
- 00:30:56to be inside uh
- 00:30:59theud files folder or the folder that we
- 00:31:02just created so I'll just move them
- 00:31:05inside that folder now we're
- 00:31:09done okay with that done there's uh a
- 00:31:14second uh problem that we're going to
- 00:31:17face which is if we run or play Conquer
- 00:31:23Online and then we try to attach to it
- 00:31:26and then log into the game
- 00:31:30uh what will happen is that it'll also
- 00:31:34terminate the process so if we play
- 00:31:37conquer. XE go to file attach and then
- 00:31:41you're going to to find conquer. exe
- 00:31:44head
- 00:31:46attach and then it'll probably load all
- 00:31:51the way and I'm going to pause the video
- 00:31:54until it's done
- 00:32:00okay now that o is done analyzing those
- 00:32:05models as you can see It'll uh break
- 00:32:09somewhere inside the process and now it
- 00:32:12chose to break inside the user 32 so
- 00:32:17what I'm going to do is I'm just going
- 00:32:19to hold the shift button and I'm going
- 00:32:22to hit F9 and it'll it'll it should
- 00:32:26continue running the process and as you
- 00:32:28can see It'll say running right here so
- 00:32:33ignore those access violations uh uh
- 00:32:38exceptions because as you can see if you
- 00:32:40open the log here it'll just keep on and
- 00:32:44on and on and on it'll never stop
- 00:32:47however I don't know why but it's just
- 00:32:50doing it I don't really care anyway if
- 00:32:53we switch to conquer. exe you can see
- 00:32:56that the process is running and
- 00:32:58everything works just fine so let's try
- 00:33:00and log
- 00:33:02in let me check I can I can remember an
- 00:33:08account okay
- 00:33:13live oh my God this annoying
- 00:33:17message it's just it pops up
- 00:33:20every single time I try to log
- 00:33:26in okay now it's trying to log
- 00:33:29in and
- 00:33:32again as you can see we uh our breako on
- 00:33:38exit process the exit process function
- 00:33:41was triggered meaning this process is
- 00:33:44trying to terminate
- 00:33:46itself so again we're going to go back
- 00:33:50to my favorite thing which is this
- 00:33:54tack as you can see another call into to
- 00:33:58Kernel 32 exit process and stried from
- 00:34:01or called from anti-rot client blah blah
- 00:34:05blah so the exit code is zero we don't
- 00:34:08care about that
- 00:34:11now what this tells us that somewhere
- 00:34:14inside this uh dll file here the anti
- 00:34:18robot
- 00:34:20client the exit process function is
- 00:34:23being called for some reason probably it
- 00:34:25detected that uh we're using in a
- 00:34:27debugger or something like that and it
- 00:34:29wants to terminate the process so what
- 00:34:31we're going to do is
- 00:34:32just uh basically go to this line here
- 00:34:37and as you can see it says return from
- 00:34:39anti-root client to anti-root client so
- 00:34:42what that tells us is that anti Rob
- 00:34:44client is calling function inside itself
- 00:34:47and let's go and check what that
- 00:34:48function is so select it and hit enter
- 00:34:52and it'll take you straight into enti
- 00:34:54blah blah blah so as you can see uh I
- 00:35:00mean like I said earlier this address
- 00:35:03here right here is the the address as to
- 00:35:07where this stack address here will
- 00:35:10return so as you can see it it says
- 00:35:13return to blah blah blah from blah blah
- 00:35:15blah so if you compare those addresses
- 00:35:18this address is equal to this address so
- 00:35:21we know that it'll return into this uh
- 00:35:25instruction here and then execute it in
- 00:35:27then continue ex executing these uh
- 00:35:31instructions and then return so now that
- 00:35:34now that we know it's return it's return
- 00:35:37it's supposed to return to this uh
- 00:35:41instruction uh we know that the function
- 00:35:44the call above it is what call this
- 00:35:47function so this is the return address
- 00:35:49for this call so we go one line up right
- 00:35:54click breakpoint hardware breakpoint
- 00:35:58slot one on execution
- 00:36:00okay now let's
- 00:36:04uh you can either restart the whole
- 00:36:08process restart Conquer Online and then
- 00:36:11reattach it and then uh let it run and
- 00:36:15log in until this breakpoint hits and
- 00:36:18then we can go inside this function and
- 00:36:20see what it's doing or we can simply
- 00:36:23just uh click on that function let's
- 00:36:27let's go back to it click on that this
- 00:36:29call and then hit to enter it'll take
- 00:36:32you inside this function right here
- 00:36:36so if you look
- 00:36:38closely this function is calling this
- 00:36:42address here ENT robot client blah blah
- 00:36:45blah we don't know what it does and then
- 00:36:47right after it calls that address and
- 00:36:50returns eight pops is ECX pushes the
- 00:36:54exit Cod which code which is the and
- 00:36:57then kills the process so basically this
- 00:37:00function is a a a certain kill for the
- 00:37:04process it this function will never
- 00:37:07return any other results uh other than
- 00:37:11killing the process so this is bad we
- 00:37:14don't want this function at all so again
- 00:37:17click on this line go back so we're here
- 00:37:21and I don't want to restart the whole
- 00:37:23thing so I'll just delete this break
- 00:37:25point here
- 00:37:28and what I'll do is check what called
- 00:37:32this whole function here right here from
- 00:37:35the the start of the function
- 00:37:39until the return so we need to know what
- 00:37:42called it to know that all we do is just
- 00:37:45go back to the stack and find the second
- 00:37:49return address un underneath this which
- 00:37:52will be this address as you can see
- 00:37:55return also from tqp to
- 00:38:00tq& so let's select this line left click
- 00:38:03on it and then hit enter it'll take you
- 00:38:06to the function where it's been called
- 00:38:09what I'm going to do I'm going to take a
- 00:38:10wild guess and and and I don't recommend
- 00:38:14that you do that every time but I'm just
- 00:38:17guessing that this function right here
- 00:38:20goes in checks for the processes checks
- 00:38:23maybe for this debugger present uh
- 00:38:26function and then if yes it kills the
- 00:38:28process no it returns and it continues
- 00:38:31so what I'm going to do is just right
- 00:38:33click on it edit fill with n Ops and
- 00:38:38then I'm going to save this permanently
- 00:38:41and then try and run the
- 00:38:43process so one thing that I've never
- 00:38:46mentioned back up your files back up
- 00:38:49your dlls now you know you're inside
- 00:38:52anti-robot do uh anti-robot
- 00:38:56client. all you got to do is go into
- 00:39:00your client folder copy anti-root DL
- 00:39:03somewhere else and then uh paste it so
- 00:39:08you can replace this file if you damage
- 00:39:11it
- 00:39:13so that's what I would do because if you
- 00:39:16don't know what you're doing you can't
- 00:39:18really restore this stuff and unless
- 00:39:21you're going to rep patch your client
- 00:39:22from I don't know which version anyway
- 00:39:28so now that I've set this NS I want to
- 00:39:31save it permanently so right click edit
- 00:39:35copy the
- 00:39:36executable and I'm going to hit the x
- 00:39:38button here and it'll ask me if I want
- 00:39:40to save it I'll hit yes and again into
- 00:39:44your it'll take you into your conquer CL
- 00:39:48directory and it'll give you the name of
- 00:39:50the model just hit save replace it yes
- 00:39:55and then I'm going to kill the process
- 00:39:58and all the book yes I know
- 00:40:01that now if we try and
- 00:40:04run conquer.
- 00:40:09exe and then we go
- 00:40:12back and run all the debug and then file
- 00:40:19attach um conquer exe
- 00:40:24attach hit shift F9 continue running the
- 00:40:31process wait until it's all the way in
- 00:40:34okay it's running as you can see now I
- 00:40:37can go back switch to conquer and try
- 00:40:39and log
- 00:40:48in okay let's hope it'll
- 00:40:52work boom everything works just as
- 00:40:56intended and we're inside the game so
- 00:41:00that's
- 00:41:02cool oh
- 00:41:05boy oh
- 00:41:09boy this game is it went it
- 00:41:14went it's just horrible nothing is
- 00:41:17playable in that game anymore
- 00:41:20anyway now that we've done that we have
- 00:41:24all the access we need to
- 00:41:27modify Conquer Online to uh find the
- 00:41:30functions that we want to find and to
- 00:41:33build our memory base spot so in the
- 00:41:36next tutorial we'll be uh dealing with
- 00:41:40finding the addresses maybe and finding
- 00:41:42the addresses of functions that you need
- 00:41:44to use in your uh memory based B so I
- 00:41:49think that's it for this tutoral and I
- 00:41:52hope I didn't uh make it very long I
- 00:41:55think it's very long by now so until the
- 00:41:58next tutorial be safe
- conquer online
- debugging
- ODbg
- anti-debugging
- memory editing
- gaming
- tutorial
- DLL
- hardware breakpoints
- assembly instructions