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++]Help with Flags

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General programming
View previous topic :: View next topic  
Author Message
Zeroist
Grandmaster Cheater Supreme
Reputation: 0

Joined: 06 Oct 2007
Posts: 1624
Location: I /facepalm'ed when I saw that post about pacifist being a "fake"... Rofl.

PostPosted: Tue Oct 21, 2008 6:03 pm    Post subject: [C++]Help with Flags Reply with quote

I read the complete post that was posted with asm scripts being converted into the correct format for being read.

This is the one.
http://forum.cheatengine.org/viewtopic.php?t=220203

I saw the complicity of it and wondered if by doing registers that it would be a few less lines to declare, and a few less script changes (since there is no script). Wouldn't it?

Like doing a simple zero flag register:

Code:
006803EC ZF [*][ ]

This address I just randomly pulled out my ass.

I know for it to be recognized it has to be in hexidecimal other wise it would put it as a decimal so....

Code:
0x006803EC ZF [*][ ]

and would it not be under WORD and not DWORD?

Now, i completely have no idea of where to go... =X
(No idea what needs to be declared, etc)

Also, I searched and found a few threads over flags, but still it went over my head. Anyone care to explain it in laman's terms?

Anything is helpful ^_^

_________________
Bypassed a wordfilter with another url


Last edited by Zeroist on Tue Oct 21, 2008 7:08 pm; edited 1 time in total
Back to top
View user's profile Send private message
lurc
Grandmaster Cheater Supreme
Reputation: 2

Joined: 13 Nov 2006
Posts: 1900

PostPosted: Tue Oct 21, 2008 6:16 pm    Post subject: Reply with quote

Flags are completely different. They aren't really a data type, but more of something that is set or not set.

What your looking for is SetThreadContext.

_________________
Back to top
View user's profile Send private message
nog_lorp
Grandmaster Cheater
Reputation: 0

Joined: 26 Feb 2006
Posts: 743

PostPosted: Tue Oct 21, 2008 6:25 pm    Post subject: Reply with quote

Your question doesn't really make sense. If you think that
Code:
006803EC ZF [*][ ]
changes the value at 006803EC, you are mistaken. What it does is wait until the instruction at 006803EC, and before that instruction is run it sets ZF to [0 apparently, it doesn't matter for the example. sponge].

Just for conceptual understanding, let me give some background: There actually aren't really flag registers, there is THE flag register: one register that holds each flag bit - it is protected, you can't access it with mov etc, but there are some commands that let you fux with it: SAHF, LAHF, PUSHF, POPF.

_________________
Mutilated lips give a kiss on the wrist of the worm-like tips of tentacles expanding in my mind
I'm fine accepting only fresh brine you can get another drop of this yeah you wish


Last edited by nog_lorp on Tue Oct 21, 2008 6:38 pm; edited 1 time in total
Back to top
View user's profile Send private message
sponge
I'm a spammer
Reputation: 1

Joined: 07 Nov 2006
Posts: 6009

PostPosted: Tue Oct 21, 2008 6:28 pm    Post subject: Reply with quote

I always thought one "tick" sets it to 0 and another "tick" sets the flag to 1.
Suddenly your claim towards creating a vac seems shabby. I don't think it was a confusion of what FLAG is but he probably just mixed up flags and debug registers to come up with flag registers.

FYI there is no E in decimal, so obviously its not decimal. Size of the instruction has nothing to do with the setting of flags.

_________________
Back to top
View user's profile Send private message
Zeroist
Grandmaster Cheater Supreme
Reputation: 0

Joined: 06 Oct 2007
Posts: 1624
Location: I /facepalm'ed when I saw that post about pacifist being a "fake"... Rofl.

PostPosted: Tue Oct 21, 2008 6:37 pm    Post subject: Reply with quote

lurc wrote:
Flags are completely different. They aren't really a data type, but more of something that is set or not set.

What your looking for is SetThreadContext.


Can you explain roughly what the format of it would be like you did the other post? =X
I understood what you said unlike alot of other tutorials people posted over anything else... =O

I realize that before I use the function, I would mostlikely need to use the SuspendThread function befure (I guess you could say) "Ticking" the flag.

and that declaring use from kernel32.dll would be needed.

AND

One more question.
I saw and used the Lbot you made lurc which makes me come to think that you had had some experience with overcoming Gameguard's protection. Would by using DBs (Just like CE/UCEs) not require a CRC bypass nor a GGCRC?

nog_lorp wrote:
Your question doesn't really make sense. If you think that
Code:
006803EC ZF [*][ ]
changes the value at 006803EC, you are mistaken. What it does is wait until the instruction at 006803EC, and before that instruction is run it sets ZF to [0 apparently, it doesn't matter for the example. sponge].

Just for conceptual understanding, let me give some background: There actually aren't really flag registers, there is THE flag register: one register that holds each flag bit - it is protected, you can't access it with mov etc, but there are some commands that let you fux with it: SAHF, LAHF, PUSHF, POPF.


Alright. So what would be needed for the zero flag or an effect LIKE the zero flag? =O

_________________
Bypassed a wordfilter with another url


Last edited by Zeroist on Tue Oct 21, 2008 6:49 pm; edited 4 times in total
Back to top
View user's profile Send private message
nog_lorp
Grandmaster Cheater
Reputation: 0

Joined: 26 Feb 2006
Posts: 743

PostPosted: Tue Oct 21, 2008 6:38 pm    Post subject: Reply with quote

sponge wrote:
I always thought one "tick" sets it to 0 and another "tick" sets the flag to 1.
Suddenly your claim towards creating a vac seems shabby. I don't think it was a confusion of what FLAG is but he probably just mixed up flags and debug registers to come up with flag registers.


Talking to me? I haven't used CE in over a year other than the occasional memory search, so I don't remember the exact GUI implementation. 'My' vac didn't involve any branching operations anyways.

He appears to think that "tick ZF' has something to do with the data at the address... Either that or he thinks there is some need for a reference to an instruction needs some size information with it.

_________________
Mutilated lips give a kiss on the wrist of the worm-like tips of tentacles expanding in my mind
I'm fine accepting only fresh brine you can get another drop of this yeah you wish
Back to top
View user's profile Send private message
Zeroist
Grandmaster Cheater Supreme
Reputation: 0

Joined: 06 Oct 2007
Posts: 1624
Location: I /facepalm'ed when I saw that post about pacifist being a "fake"... Rofl.

PostPosted: Tue Oct 21, 2008 6:43 pm    Post subject: Reply with quote

nog_lorp wrote:
sponge wrote:
I always thought one "tick" sets it to 0 and another "tick" sets the flag to 1.
Suddenly your claim towards creating a vac seems shabby. I don't think it was a confusion of what FLAG is but he probably just mixed up flags and debug registers to come up with flag registers.


Talking to me? I haven't used CE in over a year other than the occasional memory search, so I don't remember the exact GUI implementation. 'My' vac didn't involve any branching operations anyways.

He appears to think that "tick ZF' has something to do with the data at the address... Either that or he thinks there is some need for a reference to an instruction needs some size information with it.


It WAS the 2nd one. Now I don't know what to think =X

_________________
Bypassed a wordfilter with another url
Back to top
View user's profile Send private message
lurc
Grandmaster Cheater Supreme
Reputation: 2

Joined: 13 Nov 2006
Posts: 1900

PostPosted: Tue Oct 21, 2008 6:54 pm    Post subject: Reply with quote

The only bypass lBot needed was an inline trampoline on PostMessageA to bypass the hook on it.

DB's engine is far detected and would not only require insane amounts of adjustments, but also bypasses for API hooks. CRC and GGCRC depend on the game, and for MapleStory, DB's engine will also need both.

_________________
Back to top
View user's profile Send private message
Zeroist
Grandmaster Cheater Supreme
Reputation: 0

Joined: 06 Oct 2007
Posts: 1624
Location: I /facepalm'ed when I saw that post about pacifist being a "fake"... Rofl.

PostPosted: Tue Oct 21, 2008 7:03 pm    Post subject: Reply with quote

lurc wrote:
The only bypass lBot needed was an inline trampoline on PostMessageA to bypass the hook on it.

DB's engine is far detected and would not only require insane amounts of adjustments, but also bypasses for API hooks. CRC and GGCRC depend on the game, and for MapleStory, DB's engine will also need both.


@lurc:

Alright. So from what I've obsorbed, there is no bypass needed for what I'm attempting. Thanks for clarification. ^_^

@nog_lorp:
Code:
LAHF (Load AH from Flags) copies SF, ZF, AF, PF, and CF to AH bits 7, 6, 4, 2, and 0, respectively (see Figure 3-22). The contents of the remaining bits (5, 3, and 1) are undefined. The flags remain unaffected.

SAHF (Store AH into Flags) transfers bits 7, 6, 4, 2, and 0 from AH into SF, ZF, AF, PF, and CF, respectively (see Figure 3-22).


So im guessing I'mma be using LAHF and SAHF for my "project". Thanks for the push toward the right direction.

One thing that I'm still left in the hole about is how I'm going to put this into C++ form. =X

_________________
Bypassed a wordfilter with another url


Last edited by Zeroist on Tue Oct 21, 2008 7:04 pm; edited 1 time in total
Back to top
View user's profile Send private message
nog_lorp
Grandmaster Cheater
Reputation: 0

Joined: 26 Feb 2006
Posts: 743

PostPosted: Tue Oct 21, 2008 7:03 pm    Post subject: Reply with quote

Zeroist: When you are talking about the address of one instruction, you just need the address. The CPU looks at the first bytes to figure out what type of instruction it is, including which particular set of operands it takes (the same mnemonic can refer to several different instructions - for example MOV ECX,EAX is different from MOV [ECX],EAX, and is a different length), and can tell the size of the total instruction. If you want to overwrite an instruction at an address, you are writing data so you need to tell the memory operations what size of data you want to overwrite.
_________________
Mutilated lips give a kiss on the wrist of the worm-like tips of tentacles expanding in my mind
I'm fine accepting only fresh brine you can get another drop of this yeah you wish
Back to top
View user's profile Send private message
Zeroist
Grandmaster Cheater Supreme
Reputation: 0

Joined: 06 Oct 2007
Posts: 1624
Location: I /facepalm'ed when I saw that post about pacifist being a "fake"... Rofl.

PostPosted: Tue Oct 21, 2008 7:07 pm    Post subject: Reply with quote

nog_lorp wrote:
Zeroist: When you are talking about the address of one instruction, you just need the address. The CPU looks at the first bytes to figure out what type of instruction it is, including which particular set of operands it takes (the same mnemonic can refer to several different instructions - for example MOV ECX,EAX is different from MOV [ECX],EAX, and is a different length), and can tell the size of the total instruction. If you want to overwrite an instruction at an address, you are writing data so you need to tell the memory operations what size of data you want to overwrite.


So attaching to "Maplestory" with any cheat engine, going to Memory View, and then finding my address will do for finding out what I need?

_________________
Bypassed a wordfilter with another url
Back to top
View user's profile Send private message
lurc
Grandmaster Cheater Supreme
Reputation: 2

Joined: 13 Nov 2006
Posts: 1900

PostPosted: Tue Oct 21, 2008 7:15 pm    Post subject: Reply with quote

You won't even get to attach to MapleStory with a detected CE.
_________________
Back to top
View user's profile Send private message
Zeroist
Grandmaster Cheater Supreme
Reputation: 0

Joined: 06 Oct 2007
Posts: 1624
Location: I /facepalm'ed when I saw that post about pacifist being a "fake"... Rofl.

PostPosted: Tue Oct 21, 2008 7:16 pm    Post subject: Reply with quote

lurc wrote:
You won't even get to attach to MapleStory with a detected CE.


Gameguard doesn't start 'til you click 'START' on the start-up add.
This allowed for alot to people to update addresses for their needs.

BUT ANYWAY,

Whats left would be the format of using SetThreadContext. I have no clue of whats needed to use this function. =X

_________________
Bypassed a wordfilter with another url


Last edited by Zeroist on Tue Oct 21, 2008 7:21 pm; edited 1 time in total
Back to top
View user's profile Send private message
lurc
Grandmaster Cheater Supreme
Reputation: 2

Joined: 13 Nov 2006
Posts: 1900

PostPosted: Tue Oct 21, 2008 7:18 pm    Post subject: Reply with quote

Zeroist wrote:
lurc wrote:
You won't even get to attach to MapleStory with a detected CE.


Gameguard doesn't start 'til you click 'START' on the start-up add.
This allowed for alot to people to update addresses for their needs.


Oh well then yes.
Although, I prefer to use a unpacked client and just disassemble it using OLLYDBG or IDA and update addresses.

_________________
Back to top
View user's profile Send private message
Zeroist
Grandmaster Cheater Supreme
Reputation: 0

Joined: 06 Oct 2007
Posts: 1624
Location: I /facepalm'ed when I saw that post about pacifist being a "fake"... Rofl.

PostPosted: Tue Oct 21, 2008 7:44 pm    Post subject: Reply with quote

lurc wrote:
Zeroist wrote:
lurc wrote:
You won't even get to attach to MapleStory with a detected CE.


Gameguard doesn't start 'til you click 'START' on the start-up add.
This allowed for alot to people to update addresses for their needs.


Oh well then yes.
Although, I prefer to use a unpacked client and just disassemble it using OLLYDBG or IDA and update addresses.


OLLYDBG would be preferable, but its gets annoying have to unpack it every patch. I just stick to cheat engines.

BUT MOVING ON....

I don't know where to go now. =X

What would you guys suggest:
-Sticking to scripts (somewhat more understood)
-Flags (Since I already used alot of y'alls time)
or
-Registers

Overall, my purpose is to just make a dll you explained to iRiot and a few others. I just thought by using flags it would be alot less of a hassle. =X

_________________
Bypassed a wordfilter with another url
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
Page 1 of 1

 
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