http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=814 [º¹»ç]
5. Assembly ¸í·É¾î
MOV <Destination>, <Source> - Move. °ªÀ» ´ëÀÔÇÏ·Á°í ÇÒ¶§ »ç¿ëÇÑ´Ù. »ç¿ë ¹æ¹ý¿¡´Â <Destination>¿¡´Â ·¹Áö½ºÅÍ, ¸Þ¸ð¸®µîÀÌ ¿Ã ¼ö ÀÖÀ¸¸ç <Source>¿¡´Â <Destination>¿Í °°Àº °Í ÀÌ¿Ü¿¡ Á÷Á¢ÀûÀÎ °ª µîÀÌ ¿Ã ¼ö ÀÖ´Ù.
Example:
MOV EAX, 14h
MOV EAX, DWORD PTR SS:[EBP-14]
MOV DWORD PTR SS:[EBP-14], EDX
MOVS, MOVSB, MOVSW, MOVSD(Move String Byte or Word or DWord) - ESI°¡ °¡¸£Å°´Â °÷ÀÇ °ªµéÀ» Byte(1byte), Word(2byte), DWord(4byte)Å©±â¸¸À½ EDI°¡ °¡¸£Å°´Â °÷À¸·Î À̵¿½ÃŲ´Ù.
MOVSX(Move with Sign-Extended) - Byte³ª WordÅ©±âÀÇ Operand¸¦ Word³ª DWord»çÀÌÁî·Î ´Ã·ÁÁØ´Ù. ºÎÈ£´Â À¯ÁöµÈ´Ù.
MOVZX(Move with Zero-Extended) - Byte³ª WordÅ©±âÀÇ Operand¸¦ Word³ª DWord»çÀÌÁî·Î ´Ã·ÁÁØ´Ù. ¿¬»ê ÈÄ Ã¤¿öÁöÁö ¾ÊÀº °ø°£¿¡´Â 0À¸·Î ¸Å²Û´Ù.
INT <Value> - Interrupt. ÇØ´ç Value¿¡ µû¸¥ Interrupt¸¦ ¹ß»ý½ÃŲ´Ù. <Value>¿¡ ÇØ´çÇÏ´Â °ÍµéÀÌ ³Ê¹« ¸¹À¸¹Ç·Î ´ÙÀ½¿¡ ´õ¿í ÀÚ¼¼ÇÏ°Ô ´Ù·ç±â·Î ÇÏÀÚ.
Example:
INT 21h
ADD <Destination>, <Source> - Addition. °£´ÜÇÏ´Ù. <Destination>+<Source>ÇÑ °ªÀ» <Destination>¿¡ ÀúÀåÇÑ´Ù. <Destination>¿¡´Â ·¹Áö½ºÅÍ, ¸Þ¸ð¸®µîÀÌ ¿Ã ¼ö ÀÖÀ¸¸ç <Source>¿¡´Â <Destination>¿Í °°Àº °Í ÀÌ¿Ü¿¡ Á÷Á¢ÀûÀÎ °ª µîÀÌ ¿Ã ¼ö ÀÖ´Ù.
Example:
MOV EAX, 5h
MOV EBX, 12h
ADD EAX, 5h ; EAX¿¡´Â 5h + 5h = Ah(10Áø¼ö·Î 10)°¡ ÀúÀåµÈ´Ù.
ADD EAX, EBX ; EAX¿¡´Â Ah + 12h = 1Ch(10Áø¼ö·Î 28)°¡ ÀúÀåµÈ´Ù.
SUB <Destination>, <Source> - Subtact. ADD¸í·É¾î¿Í »ç¿ë¹ýÀº µ¿ÀÏÇÏ´Ù. ´ÜÁö ±â´ÉÀº »©ÁÖ´Â ¿ªÇÒÀ̶ó´Â°Å!
Example:
MOV EAX, 4h
SUB EAX, 3h ; EAX¿¡´Â 4h - 3h = 1h°¡ ÀúÀåµÈ´Ù.
INC <Target> - Increments. Ÿ°ÙÀÇ °ª¿¡¼ 1À» Áõ°¡½ÃŲ´Ù. <Target>¿¡´Â ·¹Áö½ºÅÍ, ¸Þ¸ð¸®µîÀÌ ¿Ã ¼ö ÀÖÀ¸¸ç, Á÷Á¢ÀûÀÎ °ªÀº ºÒ°¡´ÉÇÏ´Ù.
Example:
MOV EAX, 4h
INC EAX ; EAX¿¡´Â 4h¿¡¼ 1Áõ°¡µÈ °ªÀÎ 5h°¡ ÀúÀåµÈ´Ù.
DEC <Target> - Decrements. Ÿ°ÙÀÇ °ª¿¡¼ 1À» °¨¼Ò½ÃŲ´Ù. <Target>¿¡´Â ·¹Áö½ºÅÍ, ¸Þ¸ð¸®µîÀÌ ¿Ã ¼ö ÀÖÀ¸¸ç, Á÷Á¢ÀûÀÎ °ªÀº ºÒ°¡´ÉÇÏ´Ù.
Example:
MOV EAX, 4h
DEC EAX ; EAX¿¡´Â 4h¿¡¼ 1°¨¼öÇÑ °ªÀÎ 3h°¡ ÀúÀåµÈ´Ù.
JMP <Location> - Jump. ¾î¶°ÇÑ Àå¼Ò·Î Á¡ÇÁÇÑ´Ù. ½±°Ô »ý°¢Çؼ GOTO¹®À» »ý°¢ÇÏ¸é µÉ°ÍÀÌ´Ù. <Location>¿¡´Â Á¡ÇÁÇÒ °÷ÀÇ ÄÚµåÁÖ¼Ò¸¦ ´ã°íÀÖ´Â ·¹Áö½ºÅͳª ¸Þ¸ð¸®µîÀÌ ¿Ã ¼ö ÀÖ´Ù.
Example:
JMP 0041D983
JMP DWORD PTR SS:[EBP-14]
** Conditional JUMP **
JMP¸í·É¾î¿Í °°´Ù. ´ÜÁö Á¶°Ç¿¡ µû¶ó¼ JumpÇÒÁö ¾ÈÇÒÁö°¡ °áÁ¤µÇ¹Ç·Î Conditional Jump¶ó°í ÇÏ°Ú´Ù. Conditional JUMP´Â CMP¸í·É¾î¿Í °°ÀÌ »ç¿ëµÈ´Ù.
CMP <Target1>, <Target2> - µÎ Ÿ°ÙÀ» ºñ±³Çؼ Flag Register¸¦ º¯°æ½ÃŲ´Ù. <Target1>ÀÌ <Target2>º¸´Ù ÀÛÀ¸¸é CF°¡ SetµÇ°í, °°À¸¸é ZF°¡ SetµÇ°í ÀÌ·±°Í µéÀÌ ÀÖ±äÇÏÁö¸¸, ´ÙÀ½¿¡ ¿Ø¸¸Çϸé Conditional Jump°¡ Àֱ⶧¹®¿¡ Jump¹® Àǹ̷ΠÀÌÇØÇϵµ·Ï ÇÏ°í CMP·Î ÀÎÇÑ Flag º¯È´Â ±×³É ³Ñ¾î°¡µµ·Ï ÇÏ°Ú´Ù.
Example:
CMP EAX, EBX
Unsigned
JA(JUMP if ABOVE) CF=0 and ZF=0
JAE(JUMP if ABOVE or EQUAL) CF=0
JB(JUMP if BELOW) CF=1
JBE(JUMP if BELOW or EQUAL) CF=1 and ZF=1
JNA(JUMP if NOT ABOVE) CF=1 or ZF=1
JNAE(JUMP if NOT ABOVE or EQUAL) CF=1
JNB(JUMP if NOT BELOW) CF=0
JNBE(JUMP if NOW BELOW or EQUAL) CF=0 and ZF=0
JE(JUMP if EQUAL) ZF=1
JNE(JUMP if NOT EQUAL) ZF=0
Signed
JG(JUMP if GREATER) ZF=0 and SF=OF
JGE(JUMP if GREATER or EQUAL) SF=OF
JL(JUMP if LOWER) SF!=OF
JLE(JUMP if LOWER or EQUAL) ZF=1 and SF!=OF
JNG(JUMP if NOT GREATER) ZF=1 or SF!=OF
JNGE(JUMP if NOT GREATER or EQUAL) SF!=OF
JNL(JUMP if NOT LOWER) SF=OF
JNLE(JUMP if NOT LOWER or EQUAL) ZF=0 and SF=OF
JE(JUMP if EQUAL) ZF=1
JNE(JUMP if NOT EQUAL) ZF=0
Flag
JC(JUMP if CARRY flag set) CF=1
JNC(JUMP if NOT CARRY flag set) CF=0
JO(JUMP if OVERFLOW flag set) OF=1
JNO(JUMP if NOT OVERFLOW flag set) OF=0
JP(JUMP if PARITY flag set) PF=1
JNP(JUMP if NOT PARITY flag set) PF=0
JPE(JUMP if PARITY is EVEN) PF=1
JPO(JUMP if PARITY is ODD) PF=0
JS(JUMP if SIGNAL flag set) SF=1
JNS(JUMP if NOT SIGNAL flag set) SF=0
JCXZ(JUMP if CX is ZERO) CX=0
AND <Destination>, <Source> - Logical AND. ³í¸®È¸·Î¿¡ ÀÖ¾î¼ÀÇ AND¿¬»êÀ» ¼öÇàÇÑ´Ù. ±×¸®°í AND¿¬»êÀ» ½ÃÇàÇÒ¶§, OF, CF´Â Ãʱâȵǰí, ZF´Â SetµÉ ¼ö ÀÖ´Ù.
Example:
AND EAX, EBX
CALL <Location> - Call. ¸»±×´ë·Î ÇÔ¼ö¸¦ ºÎ¸¦¶§ »ç¿ëÇÑ´Ù. Jump¿Í °°´Ù°í ´À²¸ÁúÁöµµ ¸ð¸£Áö¸¸ Call¹®À» ½ÃÇàÇÒ °æ¿ì ½ºÅÿ¡ Call¹®ÀÌ ½ÃÇàµÈ°ÍÀ» Push¸¦ Çϸç ReturnÀÌ °¡´ÉÇÏ´Ù.
Example:
CALL 0041D983
CALL DWORD PTR [EBX]
DIV <Target> - Division. EAX¸¦ <Target>À¸·Î ³ª´©´Â ¿¬»êÀÌ´Ù. °á°ú·Î ¸òÀºEAX¿¡ ³ª¸ÓÁö´Â ECX¿¡ µé¾î°£´Ù.
Example:
MOV EAX, 64h
MOV ECX, 9h
DIV ECX ; 64h(100) / 9h(9) = ¸ò : 0Bh(11) , ³ª¸ÓÁö 1hÀ̹ǷÎ
EAX = 0Bh, ECX = 1h°¡ ÀúÀåµÈ´Ù.
IDIV <Target> - Integer Division. DIV¿Í ¶È°°´Ù. ÇÏÁö¸¸ ´Ù¸¥Á¡Àº ºÎÈ£ÀÖ´Â Á¤¼ö¸¦ ´Ù·é´Ù´Â Á¡ÀÌ´Ù.
MUL <Target> - Multiplication. EAX¿Í <Target>À» °öÇÏ¿© EAX¿¡ ÀúÀåÇÑ´Ù.
Example:
MOV EAX, 2h
MUL 4h ; EAX¿¡´Â 2h * 4h = 8h°¡ ÀúÀåµÈ´Ù.
IMUL <Value> - Integer Multiplication. EAX¿Í <Value>¸¦ °öÇÏ¿© EAX¿¡ ÀúÀåÇÑ´Ù.
IMUL <Destination>, <Value> - <Destination>°ú <Value>¸¦ °öÇÏ¿© <Destination>¿¡ ÀúÀåÇÑ´Ù.
IMUL <Destination>, <Value>, <Value> - 2°³ÀÇ <Value>¸¦ °öÇÑ ÈÄ¿¡ <Destination>¿¡ ÀúÀåÇÑ´Ù.
LEA <Destination>, <Source> - Load Effective Address. <Source>ÀÇ ½ÇÁ¦ ÁÖ¼Ò¸¦ <Destination>¿¡ ÀúÀåÇÑ´Ù. ÇÏÁö¸¸ ÀÌ ¿ëµµº¸´Ù´Â ºü¸¥ °è»êÀ» À§ÇØ ÁÖ·Î »ç¿ëµÈ´Ù. ¿¹¸¦µé¾î LEA EAX, DWORD PTR [2*EAX+ECX]¸¦ Çϸé, EAX¿¡ 2*EAX+ECX°è»ê°ªÀÌ µé¾î°¡°Ô µÈ´Ù.
NOP - No Operation. ¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Â´Ù.
OR <Destination>, <Source> - Logical OR. ³í¸®È¸·Î¿¡ ÀÖ¾î¼ÀÇ OR¿¬»êÀ» ¼öÇàÇÑ´Ù. ±×¸®°í OR¿¬»êÀ» ½ÃÇàÇÒ¶§, OF, CF´Â Ãʱâȵǰí, ZF´Â SetµÉ ¼ö ÀÖ´Ù.
Example:
OR EAX, EBX
POP <Destination> - POP. ½ºÅÿ¡¼ ESP°¡ °¡¸£Å°´Â °÷¿¡¼ ÁÖ¼Ò°ªÀ» ºÒ·¯³»¾î <Destination>¿¡ ÀúÀåÇÑ´Ù. ±×¸®°í ESP´Â ´ÙÀ½°ªÀ» °¡¸£Å°°Ô µÈ´Ù.
Example:
POP EAX
PUSH <Source> - ½ºÅÿ¡ <Source>¸¦ Áý¾î³Ö´Â´Ù. ESP´Â ÃÖ±Ù¿¡ PUSHÇÑ °ªÀ» °¡¸£Å°°Ô µÈ´Ù.
Example:
PUSH EAX
RET - Return. ½ºÅÿ¡¼ ÁÖ¼Ò¸¦ POPÇØ¿Â ÈÄ ±× ÁÖ¼Ò·Î µ¹¾Æ°£´Ù. PUSH¿Í RETÀ» Á¶ÇÕÇؼ JMPó·³ »ç¿ë ÇÒ ¼ö ÀÖ´Ù.
TEST <Target1>, <Target2> - ÀÌ ¿¬»êÀº ´ëºÎºÐÀÌ <Target1>°ú <Target2>°¡ °°°Ô ¼³Á¤µÈ´Ù. ¿¹¸¦µé¸é TEST EAX, EAX. ÀÌ ¿¬»êÀº ³í¸®È¸·ÎÀÇ AND¿¬»êÀ» ¼öÇàÇÏÁö¸¸ °á°ú°ªÀ» ÀúÀåÇÏÁö ¾Ê´Â´Ù. ´ÜÁö EAX=0ÀÏ°æ¿ì ZF=1ÀÌ µÇ°í EAX!=0ÀÏ°æ¿ì ZF=0ÀÌ µÈ´Ù. ±×¸®°í OF, CF´Â 0À̵ȴÙ.
Example:
TEST EAX, EAX
XOR <Destination>, <Source> - Logical Exclusive OR. ³í¸®È¸·Î¿¡ ÀÖ¾î¼ XOR¿¬»êÀ» ¼öÇàÇÑ´Ù. XOR¿¬»êÀ» ½ÃÇàÇÒ¶§, OF, CF´Â Ãʱâȵǰí, ZF´Â SetµÉ ¼ö ÀÖ´Ù. ÀÌ ¿¬»êÀº XOR EAX, EAXó·³ ¸¹ÀÌ »ç¿ëµÇ´Âµ¥, ÀÌ·¸°Ô ÇÒ °æ¿ì XOR=0ÀÌ µÈ´Ù. ÀÌÀ¯´Â Á÷Á¢ Çغ¸¸é ¾Ë°ÍÀÌ´Ù.
Example:
XOR EAX, EBX
XOR EAX, EAX ; EAX=0ÀÌ µÊ.
LODS, LODSB, LODSW, LODSD(Load String Byte, Word, DWord) - ESI°¡ °¡¸£Å°´Â °÷¿¡¼ ÁöÁ¤ÇÑ Å©±â(Byte, Word, DWord) ¸¸Å Àоî¿Í EAX¿¡ º¹»çÇÑ´Ù. ESI´Â º¹»çÇѸ¸Å À̵¿ÇÑ´Ù.
STOS, STOSB, STOSW, STOSD(Store String Byte, Word, DWord) - EAX¿¡ µé¾îÀÌÀÖ´Â µ¥ÀÌÅ͸¦ ÁöÁ¤ÇÑ Å©±â¸¸Å EDI°¡ °¡¸£Å°´Â ÁÖ¼Ò¿¡ º¹»çÇÑ´Ù. EDI´Â º¹»çµÈ ¸¸Å À̵¿ÇÑ´Ù.
CLD(Clear Direction flag), STD(Set Direction flag) - Direction Flag¸¦ SetÇϰųª ClearÇÒ¶§ »ç¿ëÇÑ´Ù.
CMC(Complement Carry flag), CLC(Clear Carry flag), STC(Set Carry flag) - Carry flag¸¦ ¼ø¼´ë·Î ¹ÝÀü, Clear, Set½ÃŲ´Ù.
SHL <Destination>, <Value> - Shift Logical Left. <Destination>¿¡ <Value>¸¸Å Shift¿¬»êÀ» ¿ÞÂÊÀ¸·Î ¼öÇàÇÑ´Ù. ¸¸¾à <Destination>º¸´Ù Ä¿Áú°æ¿ì CF=1ÀÌ µÈ´Ù.
SHR <Destination>, <Value> - Shift Logical Right. SHL°ú ±â´ÉÀº µ¿ÀÏÇϸç Shift¿¬»êÀÌ ¿À¸¥ÂÊÀ¸·Î ÁøÇàµÈ´Ù.
ROL <Destination>, <Value> - Rotate Left. SHL°ú ±â´ÉÀº µ¿ÀÏÇÏ´Ù. ´ÜÁö ÀÚ¸®¼ö°¡ ´Ã¾î³¯°æ¿ì ÇØ´ç ºñÆ®°¡ ¿À¸¥ÂÊ ³¡À¸·Î À̵¿ÇÑ´Ù.
ROR <Destination>, <Value> - Rotate Reft. SHR°ú ±â´ÉÀº µ¿ÀÏÇÏ´Ù. ´ÜÁö ÀÚ¸®¼ö°¡ ¾ø¾îÁú°æ¿ì ÇØ´ç ºñÆ®°¡ ¿ÞÂÊ ³¡À¸·Î À̵¿ÇÑ´Ù.
** ÀÌ ±ÛÀÇ ÀúÀÛ±ÇÀº ¸ðµÎ ÀúÀÚ¿¡°Ô ÀÖ½À´Ï´Ù.
¼öÁ¤, ¹èÆ÷½Ã ÀúÀÛ±ÇÀ» Ç¥½ÃÇØÁֽñ⠹ٶø´Ï´Ù.
** ¿ÀŸ, À߸øµÈ ³»¿ëÀÌ ÀÖÀ¸¸é Àû±ØÀûÀ¸·Î ¾Ë·ÁÁֽñ⠹ٶø´Ï´Ù :)
** Áú¹®»çÇ× ¶ÇÇÑ Àû±ØÀûÀ¸·Î ¹Þ°Ú½À´Ï´Ù.
Copyright (c) NEWMS 2007 All right Reserved.
Posted by newms
Studying Area/Reverse Engineering l |
Hit : 9486 Date : 2007/08/27 08:45
|