1581, 19/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 : 8886     Date : 2007/08/27 08:45



    
1221   chenkim4ÀÇ ¹é½ÅÀÇ À¯·¡ Æí     chenkim4
08/27 6672
1220   chenkim4ÀÇ ¹é½ÅÀÇÁ¾·ùÆí     chenkim4
08/27 8074
1219   chenkim4ÀÇ ¼­¹öº¸¾È Æí(1)     chenkim4
08/27 7669
1218   chenkim4ÀÇ ¼­¹öº¸¾È Æí(2)     chenkim4
08/27 6877
1217   chenkim4ÀÇ °³ÀÎÁ¤º¸ À¯Ãâ ¹æ¾ÈÆí     chenkim4
08/27 7453
1216   - ¾î¼Àºí¸®¾î 1[1]     twinz
08/27 9012
  - ¾î¼Àºí¸®¾î 2     twinz
08/27 8885
1214   - ¾î¼Àºí¸®¾î 3[1]     twinz
08/27 7048
1213   - ÇØÄ¿ÀÇ ¼öÁØ¹× ±â¹ý[322]     twinz
08/27 15111
1212   - ÇØÅ·»ó½Ä[1]     twinz
08/27 9957
1211   - ÀÚ¹Ù½ºÅ©¸³Æ®[1]     twinz
08/27 7694
1210   - netstat º¸¾ÈÀÇ Ã¹°ÉÀ½     twinz
08/27 8721
1209   - ÇÁ·Î±×·¡¹ÖÆÁ     twinz
08/27 7670
1208   chenkim4ÀÇ ActiveX À¯·á ¾Ç¼ºÄÚµå Ä¡·á ÇÁ·Î±×·¥Æí[2]     chenkim4
08/28 7197
1207   chenkim4ÀÇ µ¥ÀÌŸ º¸È£Æí(1)     chenkim4
08/28 6846
1206   chenkim4ÀÇ µ¥ÀÌŸ º¸È£Æí(2)     chenkim4
08/28 6832
1205   chenkim4ÀÇ µ¥ÀÌŸº¸È£Æí(3)     chenkim4
08/28 7204
1204   chenkim4ÀÇ µ¥ÀÌŸ º¸È£Æí(4)     chenkim4
08/28 7980
1203   chenkim4ÀÇ Áß±¹ÇØÅ· ±â¹ý 8°¡Áö Æí[1]     chenkim4
08/28 16781
1202   - [ÇØÅ·±â¹ý] ¹öÆÛ¿À¹öÇ÷ο젠   twinz
08/28 10350
[1]..[11][12][13][14][15][16][17][18] 19 [20]..[80]

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