Jump to content
Tuts 4 You

get 3'th byte of eax?


FastLife

Recommended Posts

Posted

hello tuts4you, i tried to solve a keygenme and faced a problem.


 


the return value of a function is in example: eax == 00001234.


now i want the 3'th byte of it, which is 12.


 


so does anybody know a way to do this?


 


have a nice day!


Posted (edited)

The lowest 16 bits of EAX is AX


 


So...


AX = 1234


AL = 34


AH = 12


 


So just use AH


Edited by NOP
  • Like 2
Posted

C



void Main()
{
int IntToParse = 4660; 0x00001234 = EAX = 32 bit integer // adjust this according to which bits you want. remember byte ordering
int ParsePlace = 1; // bit shift, multiply, and
int Parsed = ((IntToParse >> (8*ParsePlace)) & 0xFF); printf("Parsed = %i\n");
}
----- Output - Parsed = 18 (12h)

x86 asm



IntToParse = 0x1234 ; mov eax, IntToParse ; int IntToParse = 0x1234 sar eax, 8 ; IntToParse >> 8 and eax, FF ; Result & FF. sometimes this step isnt necessary eax == 12
  • Like 1
Posted
x86 asm
IntToParse = 0x1234 ;mov eax, IntToParse ;  int IntToParse = 0x1234sar eax, 8 ; IntToParse >> 8and eax, FF ; Result & FF. sometimes this step isnt necessaryeax == 12 

Hi

 

easiest method for this problem (if we can call it problem !) is :

MOVZX EAX,AH

 

 

Best Regards,

h4sh3m

  • Like 1
Posted

i understand u (even though in this case a simple "sar eax, 8" works exactly same as "mov eax, ah") but way i showed is standard way to do this in high level language.

  • Like 1
Posted

So many replys, all are helpfull, thank you very much guys, problem solved!


Posted

also, its 3rd.. not 3th

  • Like 1
Posted

@evlncrn8: I smell some grammarnazism here :P


Posted

sorta, but im just trying to help too

  • Like 1
Posted

well thanks for the tip :)


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...