1581, 5/80 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   twinz
   - ¾î¼Àºí¸®¾î 2

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 : 8856     Date : 2007/08/27 08:45



    
1501   - [¸®´ª½ºÆÁ] ¸®´ª½º ÀÚµ¿½ÇÇà     twinz
08/28 8034
1500   - [º¸¾ÈÆÁ] ÇÁ·Î±×·¡¹Ö Äڵ庸ȣ (1)     twinz
08/28 10379
1499   - [º¸¾ÈÆÁ] ÇÁ·Î±×·¡¹Ö Äڵ庸ȣ (2)     twinz
08/28 7906
1498   - [º¸¾ÈÆÁ] ¸®´ª½º     twinz
08/28 7719
1497   - [º¸¾È³ëÆ®] ÄíÅ°[4]     twinz
08/28 9164
1496   - [º¸¾È³ëÆ®] Æ÷Æ®½ºÄ³´× (1)     twinz
08/28 7990
1495   - [º¸¾È³ëÆ®] Æ÷Æ®½ºÄ³´× (2)     twinz
08/28 9489
1494   - [º¸¾È³ëÆ®] º¿[1]     twinz
08/28 7635
1493   - ÄÄÇ»ÅÍ ¹ÙÀÌ·¯½ºÀÇ Á¾·ù[1]     twinz
08/27 8718
1492   - ´ÙÀÌÇϵå 4.0 ÆÄÀ̾ÀÏ Çö½Ç °¡´É[2]     twinz
08/25 8617
1491   - µµÃ» , ÇØÅ· ºÒ°¡´ÉÇÑ ¼¼»óÀ̿´٠    twinz
08/25 8034
1490   - ¹é¾÷¸í·É¾îÀÇ Á¾·ù     twinz
08/27 9312
1489   - ¹«½ÃµÇ´Â ¿ÀÇÁ ½ºÅÄ´õµåº¸¾È     twinz
08/27 7035
1488   - ¼­¹ö°ü¸®ÀÚ¸¦ À§ÇÑ 50°¡Áö ºñ¹ý     twinz
08/27 9480
1487   - ½Ã½ºÅÛ º¸¾È     twinz
08/27 6989
1486   - ¾î¼Àºí¸®¾î 1[1]     twinz
08/27 8978
  - ¾î¼Àºí¸®¾î 2     twinz
08/27 8855
1484   - ¾î¼Àºí¸®¾î 3[1]     twinz
08/27 7019
1483   0¹ø¼½ÅÍ º£µå¼½ÅÍÀÏ°æ¿ì..[2]     ROK.AF
03/02 8032
1482   1[1]     ¹é¹ÎÁØõÀç
08/31 4762
[1][2][3][4] 5 [6][7][8][9][10]..[80]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org