Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


[C++] Blink godmode code cave question
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General programming
View previous topic :: View next topic  
Author Message
Wintermoot
Expert Cheater
Reputation: 0

Joined: 08 Nov 2007
Posts: 198

PostPosted: Wed Nov 26, 2008 6:28 am    Post subject: [C++] Blink godmode code cave question Reply with quote

Why are we doing it?

I am out of touch with the Maple hacking community but, shouldn't just changing the 'sub' to 'add' work?

Instead of:
Code:

//Blink Godmode Script by Pro-Surf
void __declspec(naked) __stdcall Blink ()
{
   _asm
   {
      mov edi,0x7FFFFFFF
      jmp original

      original:
      mov edi,0x7FFFFFFF
      push edi
      lea ecx,[ebx+0x00001720]
      jmp [BlinkRet]
   }
}

void GodMode (HWND hWnd)
{
   *(BYTE*)BlinkAddy = 0xE9;
   *(DWORD*)(BlinkAddy + 1) = JMP(BlinkAddy, Blink);
   *(DWORD*)(BlinkAddy + 5) = 0x90909090; //NOP Bytes
   *(BYTE*)(BlinkAddy + 9) = 0x90;
}


Can't we simply do:
Code:

DWORD BlinkAddy = 0x78F8291;

//Enable
*(DWORD*)(BlinkAddy + 1) = 0xC7

//Disable
*(DWORD*)(BlinkAddy + 1) = 0xEF


I posted it here since, it is more a programming question than a MapleStory question and, this section seems to be more intelligent than the MapleStory section...

No, I can't test this... Serious problems with Maple cause faggotry...

(Shit was just stolen from Kitterz Trainer since, the different methods are good for learning...)

I also ask since, I remember seeing a v.61 blink godmode script which was doing doing the same thing that I am suggesting...
Back to top
View user's profile Send private message
Slugsnack
Grandmaster Cheater Supreme
Reputation: 71

Joined: 24 Jan 2007
Posts: 1857

PostPosted: Wed Nov 26, 2008 9:44 am    Post subject: Reply with quote

i don't see a sub or an add..
Back to top
View user's profile Send private message
Ziztey
Grandmaster Cheater
Reputation: 0

Joined: 20 Dec 2007
Posts: 535
Location: 127.0.0.1

PostPosted: Wed Nov 26, 2008 9:57 am    Post subject: Reply with quote

I tried, did not work.
_________________
kenta7795 wrote:
Lol, how do I know its fake?

The source is a .cpp, and a .h

Private server much?
Back to top
View user's profile Send private message
ElectroFusion
Grandmaster Cheater
Reputation: 0

Joined: 17 Dec 2006
Posts: 786

PostPosted: Wed Nov 26, 2008 11:06 am    Post subject: Reply with quote

WTF, I thought they were jmping the function blink.
Think about it next time, they jmped the function blink, so there is more needed to be done than just a codecave.. Plus, whats wrong with the way they do it now?
Code:

JMP(BlinkAddy, Blink);


Code:

void __declspec(naked) __stdcall Blink ()
{
   _asm
   {
      mov edi,0x7FFFFFFF
      jmp original

      original:
      mov edi,0x7FFFFFFF
      push edi
      lea ecx,[ebx+0x00001720]
      jmp [BlinkRet]
.
.
.

_________________
qwerty147 wrote:

ghostonline wrote:

what world are you in?

bera

but i live in NZ
Back to top
View user's profile Send private message
DeletedUser14087
I post too much
Reputation: 2

Joined: 21 Jun 2006
Posts: 3069

PostPosted: Wed Nov 26, 2008 11:12 am    Post subject: Reply with quote

why the hell there is __stdcall ? i have a feeling you people just copy and paste all these codes lol.
Back to top
View user's profile Send private message
&Vage
Grandmaster Cheater Supreme
Reputation: 0

Joined: 25 Jul 2008
Posts: 1053

PostPosted: Wed Nov 26, 2008 11:19 am    Post subject: Reply with quote

Rot1 wrote:
why the hell there is __stdcall ? i have a feeling you people just copy and paste all these codes lol.


__stdcall can be used for other stuff, not just APIs.
Back to top
View user's profile Send private message
Symbol
I'm a spammer
Reputation: 0

Joined: 18 Apr 2007
Posts: 5094
Location: Israel.

PostPosted: Wed Nov 26, 2008 11:24 am    Post subject: Reply with quote

What's the point? not only it's a naked function, it's also a hook which takes no parameters... so it won't clean the stack or push the parameters to the stack. (instead of using registers, like in fast-call)
Back to top
View user's profile Send private message
ElectroFusion
Grandmaster Cheater
Reputation: 0

Joined: 17 Dec 2006
Posts: 786

PostPosted: Wed Nov 26, 2008 12:46 pm    Post subject: Reply with quote

The __stdcall calling convention is used to call Win32 API functions. The callee cleans the stack, so the compiler makes vararg functions __cdecl. Functions that use this calling convention require a function prototype.
^^ = http://msdn.microsoft.com/en-us/library/zxk0tw93(VS.71).aspx

If it cleans the stack, and your using it on a naked function, it can't clean the stack.

_________________
qwerty147 wrote:

ghostonline wrote:

what world are you in?

bera

but i live in NZ
Back to top
View user's profile Send private message
DeletedUser14087
I post too much
Reputation: 2

Joined: 21 Jun 2006
Posts: 3069

PostPosted: Wed Nov 26, 2008 12:48 pm    Post subject: Reply with quote

i generally use __stdcall on exporting/importing shit, that's about it.
Back to top
View user's profile Send private message
Wintermoot
Expert Cheater
Reputation: 0

Joined: 08 Nov 2007
Posts: 198

PostPosted: Wed Nov 26, 2008 9:32 pm    Post subject: Reply with quote

Anyone complaining about the code is a fucking retard. Did anyone actually read my entire post? I cut parts of the code out that were either useless or standard and anyone with a brain would assume what was being done.

Rot1 wrote:
why the hell there is __stdcall ? i have a feeling you people just copy and paste all these codes lol.

No. Fucking. Shit. I said that I took the codecave from Kitterz trainer. I was asking why would someone do it like that.

I am disappointed in you people. CEF programming usually gives such intelligent responses. This time, you all seem to go off and bitch about something completely unrelated to what I wanted to know.

Slugsnack wrote:
i don't see a sub or an add..

Sorry, forgot to include this bit in there.
Code:

//83 ef 1e - sub edi,1e //Disable
//83 c7 1e - add edi,1e //Enable
//Middle byte = instruction.
Back to top
View user's profile Send private message
kitterz
Grandmaster Cheater Supreme
Reputation: 0

Joined: 24 Dec 2007
Posts: 1268

PostPosted: Wed Nov 26, 2008 9:50 pm    Post subject: Reply with quote

*ahem*
This is how blink works...evey x amount of time, it go through ad subs 1e off of the master blink counter in edi.

When edi = 0, it stop blinking.

if you change it to "add edi, 1e", it will add 1e instead of taking away 1e. Thus, the counter becomes bigger, not smaller.

However, when noblink is turned off to prevent d/c (cause of the ggcrc), it resumes "sub edi, 1e", and eventually the counter in edi will reach zero. (it will last longer, but only the same length you kept it at "add edi, 1e")

What Pro-Surf and I did, was add soooo much to the blink counter, that you can turn it off immediately, and the "sub edi,1e" will never cause the blink counter to reach 0, because it is so large.

Understand?

_________________
Back to top
View user's profile Send private message Send e-mail
ZacTheSin
I post too much
Reputation: 6

Joined: 09 May 2006
Posts: 2657

PostPosted: Thu Nov 27, 2008 6:44 am    Post subject: Reply with quote

Well, to make it not d/c, why not make it so it refreshs by turning on and off every now and then?


Like..

So at the moment, it's
sub edi,1e
We change it to
add edi,1e
(Or something massive as, so that it doesn't go down till a change channel/map is done.

How about, we monitor what it's done?

Or maybe

it goes like,

Code:
while ~userenable
  [Original]sub edi,1e
  [Enable1]add edi,1e
  (Wait 100 Miliseconds) (This is me guessing it adds 1e every 1 ms)
  [disable after enable1] sub edi,5dc (1500 ~ 3000/2 ~ 1e per ms [1e hex = 30 dec] )
  (Wait 100 MS)
  [Enable2] add edi, 1e
  (Wait 100 MS)
else if
subaddaddress == "add edi,**"
change subaddaddress to "sub edi,1e"
goto while ~userenable


* = any variable

As you can tell, I have no idea how to explain the ideas jammed in my mind with coding >_>


But trying to get it so, it refreshes fast enough so that the ggcrc doesn't realize it (I think that's how it works -.- this hack d/cing if it's left on) or so that it turns off when you want it to >_>
Back to top
View user's profile Send private message
kitterz
Grandmaster Cheater Supreme
Reputation: 0

Joined: 24 Dec 2007
Posts: 1268

PostPosted: Thu Nov 27, 2008 7:23 am    Post subject: Reply with quote

Cellux wrote:
Well, to make it not d/c, why not make it so it refreshs by turning on and off every now and then?


Like..

So at the moment, it's
sub edi,1e
We change it to
add edi,1e
(Or something massive as, so that it doesn't go down till a change channel/map is done.

How about, we monitor what it's done?

Or maybe

it goes like,

Code:
while ~userenable
  [Original]sub edi,1e
  [Enable1]add edi,1e
  (Wait 100 Miliseconds) (This is me guessing it adds 1e every 1 ms)
  [disable after enable1] sub edi,5dc (1500 ~ 3000/2 ~ 1e per ms [1e hex = 30 dec] )
  (Wait 100 MS)
  [Enable2] add edi, 1e
  (Wait 100 MS)
else if
subaddaddress == "add edi,**"
change subaddaddress to "sub edi,1e"
goto while ~userenable


* = any variable

As you can tell, I have no idea how to explain the ideas jammed in my mind with coding >_>


But trying to get it so, it refreshes fast enough so that the ggcrc doesn't realize it (I think that's how it works -.- this hack d/cing if it's left on) or so that it turns off when you want it to >_>


the problem is, the variable can have a max of like "add edi,7F", if i remember correctly. Then it will d/c for some reason. Any thing bigger than the 3 bytes will also screw up the bytes. Therefore, you use a codecave.

_________________
Back to top
View user's profile Send private message Send e-mail
ZacTheSin
I post too much
Reputation: 6

Joined: 09 May 2006
Posts: 2657

PostPosted: Thu Nov 27, 2008 8:15 am    Post subject: Reply with quote

I see.

I'm sure you could use a codecave to do the same thing, depending on how it's made.

As long as it doesn't do something stupid like find an empty address every time it is re enabled during the delay, it should be fine.
Back to top
View user's profile Send private message
ElJEffro
Grandmaster Cheater Supreme
Reputation: 0

Joined: 15 Apr 2007
Posts: 1881
Location: La Tierra

PostPosted: Fri Nov 28, 2008 1:18 am    Post subject: Reply with quote

kitterz wrote:
the problem is, the variable can have a max of like "add edi,7F", if i remember correctly. Then it will d/c for some reason. Any thing bigger than the 3 bytes will also screw up the bytes. Therefore, you use a codecave.


0x7F is the maximum value of a signed byte.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> General programming All times are GMT - 6 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites