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

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=813 [º¹»ç]


1. ¾î¼Àºí¸®¾î¶õ ¹«¾ùÀΰ¡?

¾î¼Àºí·¯´Â ÈçÈ÷µé Àú±Þ ¾ð¾î(low-level Language)¶ó°í ºÎ¸¥´Ù. ±âº»ÀûÀ¸·Î ¾î¼Àºí·¯´Â ±â°èÀû ¸í·É¾î°ú 1:1´ëÀÀÀ¸·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. À̶§¹®¿¡ ¾î¼Àºí¸®¾î´Â ´Ù¸¥ ¾ð¾î¿¡ ºñÇؼ­ ºü¸£´Ù. óÀ½ ÄÄÇ»ÅÍ°¡ °³¹ßµÇ¾úÀ»¶§ ÇÁ·Î±×·¡¹ÖÀº ±â°è¾î·Î Çؾ߸¸ ÇßÀ¸¸ç ±×°ÍÀº Àý´ë·Î ½¬¿îÀÏÀÌ ¾Æ´Ï¾ú´Ù. ±×·¡¼­ ÇÁ·Î±×·¡¹ÖÀ» ½±°Ô ÇÏ·Á´Â ÀÌÀ¯·Î ¾î¼Àºí¸®¾î°¡ ¸¸µé¾îÁö°Ô µÈ°ÍÀÌ´Ù.


2. ¿Ö ¾î¼Àºí¸®¾î¸¦ »ç¿ëÇØ¾ß Çϴ°¡?

ÀÌ ±ÛÀ» Àд »ç¶÷ ´ëºÎºÐÀÌ Reverse EngineeringÀ» ÇÏ·Á°í ÀÐÀ»°ÍÀÌ´Ù. ÇÏÁö¸¸ ¾î¼Àºí¸®¾î´Â ±â°è¾î¿Í 1:1´ëÀÀÀ» ÀÌ·ç°í Àֱ⶧¹®¿¡ °í±Þ¾ð¾î(High-level Language)º¸´Ù ¹è¿ì±â°¡ ¾î·Æ´Ù. ÇÏÁö¸¸, Àú±Þ¾ð¾î(low-level Language)ÀÎ ¾î¼Àºí¸®¾î¸¦ ¾Ë¸é °¡Áú ¼ö ÀÖ´Â ÀåÁ¡ÀÌ ÀÖ´Ù. ÇÁ·Î±×·¥ Å©±âµµ ÀÛ°í, ºü¸£´Ù´Â°Í°ú ¾öû³­ Á¦¾î±â´É°ú À¯¿¬¼ºÀ» Á¦°øÇÑ´Ù. Âü°í·Î, ¾î¼Àºí¸®¾î´Â Çϵå¿þ¾î¿¡ Á¾¼ÓÀûÀ̹ǷΠÇÁ·Î¼¼¼­¸¶´Ù ¹®¹ý°ú ¸í·É¾î°¡ Ʋ¸®´Ù(¿ì¸®´Â 80486ÀÌÈÄ ÇÁ·Î¼¼¼­¸¦ Áß½ÉÀ¸·Î º»´Ù).


3. ¾î¶»°Ô ÀÌ Æ©Å丮¾óÀ» ¸¸µé°Ô µÇ¾ú´Â°¡?

³ª´Â »ç½Ç Çлý¿¡°Ô °¡¸£Ä¡±â À§Çؼ­ ¸¸µé°Ô µÇ¾ú´Ù. ¾î¼Àºí¸®¾î Æ©Å丮¾ó ÀÚü°¡ ´ëºÎºÐ ¿µ¾î·Î µÇ¾îÀÖ°í, ÇлýÀÌ ¿µ¾î°¡ Á¶±Ý ºÎÁ·Çϱ⿡.. ¾î¶µç Çѱ۷ΠµÈ ¸Å´º¾óÀÌ ÀÖÀ¸¸é Á¶±ÝÀÌ¶óµµ ´Ù¸¥ ÇлýµéÀÌ ÀÌ·± ºÐ¾ß¿¡ °ü½ÉÀ» °®°ÔµÇÁö ¾ÊÀ»±î ½Í¾î¼­ ¾²°Ô µÇ¾ú´Ù.



4. Registers


4-1. Data Registers


Register¶õ CPU³»ºÎ¿¡ ÀÖ´Â ±â¾ïÀåÄ¡·Î CPU°¡ ºü¸¥ ¿¬»êÀ» Çϱâ À§ÇØ Áß°£°ªÀ» ÀúÀåÇÏ·Á°í °í¾ÈµÈ ÀåÄ¡ÀÌ´Ù. º¸Åë »ç¿ëÇÏ´Â °ÍµéÀº ÀÌ·¸´Ù:



   EAX(Extended AX) - ´©»ê±â(Accumlator). AX°¡ È®ÀåµÈ °ÍÀÌ EAXÀÌ°í, AX´Â        ´Ù½Ã AH¿Í AL·Î ³ª´µ¾îÁø´Ù. ÁÖ·Î »ê¼ú°è»ê°ú ÀÔÃâ·Â ¿¬»êÀ» À§ÇØ »ç¿ëµÈ´Ù.

   EBX(Extended BX) - the Base. BX°¡ È®ÀåµÈ °ÍÀÌ EBXÀÌ°í, BX´Â ´Ù½Ã BH¿Í BL·Î ³ª´µ¾îÁø´Ù. ÁÖ·Î ÁÖ¼ÒÁöÁ¤½Ã º£À̽º·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ·¹Áö½ºÅÍÀÌ´Ù.

   ECX(Extended CX) - the Counter. CX°¡ È®ÀåµÈ °ÍÀÌ ECX°í, CX´Â ´Ù½Ã CH¿Í CL·Î ³ª´µ¾îÁø´Ù. ÁÖ·Î ½ºÆ®¸µ(String)À̳ª ·çÇÁ(Loop)¿¡¼­ ¹Ýº¹µÇ´Â ¼ýÀÚ¸¦ Ä«¿îÆ®ÇϱâÀ§ÇØ »ç¿ëµÈ´Ù.

   EDX(Extended DX) - Data RegisterÀÌ´Ù. DX°¡ È®ÀåµÈ °ÍÀÌ EDX°í, DX´Â ´Ù½Ã DH¿Í DL·Î ³ª´µ¾îÁø´Ù.

ÀÌ RegisterµéÀº Ưº°ÇÑ ¸ñÀûÀ» À§ÇØ °í¾ÈµÈ°ÍÀÌ´Ù. ±×¸®°í ÀÌ ·¹Áö½ºÅ͵éÀº 32bit·Î ÀÌ·ç¾îÁ®ÀÖ´Ù. 32ºñÆ®·Î ÀÌ·ç¾îÁ®ÀÖ´Ù´Â °ÍÀº 2ÀÇ 32½ÂºñÆ®¸¦ ÀúÀåÇÒ ¼ö ÀÖ´Ù´Â ¶æÀε¥ À̸»Àº ºÎÈ£¾ø´Â Á¤¼ö·Î 0ºÎÅÍ 4294967296±îÁö ÀúÀåÇÒ ¼ö ÀÖ´Ù´Â ¸»ÀÌ´Ù. ¶ÇÇÑ ºÎÈ£ÀÖ´Â Á¤¼ö -65536 ºÎÅÍ 65536±îÁö ÀúÀåÇÒ ¼ö ÀÖ´Ù. 16Áø¼ö·Î º¸¸é, ·¹Áö½ºÅ͵éÀÇ °ªÀÇ ¹üÀ§´Â EAX´Â 0h-FFFFFFFFh±îÁöÀ̸ç, AX´Â 0h-FFFFh, AH¿Í ALÀº 0h-FFhÀÌ´Ù(Âü°í·Î h´Â Hex¸¦ ÀǹÌÇϸç 16Áø¼ö¸¦ ¸»ÇÑ´Ù).
ºÎ°¡ÀûÀ¸·Î EAX AX AH ALÀ» ¼³¸íÇÏÀÚ¸é ¾Æ·¡ ±×¸²°ú °°´Ù(EBX,ECX µîµî µµ ¸¶Âù°¡ÁöÀÌ´Ù).



EAX(32bit)
|-----------------------------------------------------------------|
                                                  AX(16bit)
                                                |---------------------------------|
                                                 AH(8bit)           AL(8bit)
                                                |----------------|----------------|

  À§ ±×¸²À» ¼³¸íÇÏÁö¸é, EAX´Â 32bit RegisterÀÌ´Ù. ±×Áß ÇÏÀ§ 16bit´Â AX¶ó ºÒ¸®¿ì¸ç AXÁß »óÀ§ 8bit´Â AH, ÇÏÀ§ 8bit´Â ALÀÌ µÇ´Â°ÍÀÌ´Ù. ¿¹¸¦ µé¾î¼­, EAX=1234ABCDh¶ó´Â °ªÀ» °¡Áö°í ÀÖ´Ù¸é, AX=ABCDh, AH=ABh, AL=CDhÀÌ´Ù. ÀÌ ¹æ½ÄÀº ´ÙÀ½¿¡ ³ª¿Ã Segment Register¿¡µµ Àû¿ëÀÌ µÈ´Ù.

4-2. Segment Registers

ÀÌ ·¹Áö½ºÅ͵éÀ» Á¤È®ÇÏ°Ô ¼³¸íÇÏ·Á¸é ÀÌ·± °£´ÜÇÑ °ÍÀ¸·Î´Â ÇØ°áµÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº µû·Î ´Ù·ç±â·Î ÇÏ°í, ÀÏ´ÜÀº °ÑÇÓ±â½ÄÀ¸·Î °£´ÜÇÑ ³»¿ë¸¸ »ìÆ캸ÀÚ.

    ECS(Extended Code Segment) - ÇÁ·Î±×·¥ÀÇ ½ÇÁ¦ Äڵ带 ±â·ÏÇÏ°íÀÖ´Â ¸Þ¸ð¸®ÀÇ ½ÃÀÛ ÁÖ¼Ò¸¦ °¡¸£Å²´Ù. ECS¸¦ ±âÁØÀ¸·Î º¯À§(Offset)°ªÀº EIP(Extended Instruction Pointer)¸¦ »ç¿ëÇÑ´Ù(ÀÌ°Í¿¡ ´ëÇÑ ¼³¸íÀº µÚ·Î ¹Ì·ç°Ú´Ù).

    EDS(Extended Data Segment) - ÇÁ·Î±×·¥ÀÇ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ°íÀÖ´Â Àå¼ÒÀÇ ½ÃÀÛ¹øÁö¸¦ °¡¸£Å²´Ù.

    EES(Extended Extra Segment) - ¿©ºÐÀÇ ¼¼±×¸ÕÆ®ÀÌ´Ù. ÁÖ·Î ¹®ÀÚ¿­À» ´Ù·ç°Å³ª ºñµð¿À µîÀ» ó¸®ÇÒ¶§ ÁÖ·Î »ç¿ëµÈ´Ù.

    ESS(Extended Stack Segment) - ÇÔ¼ö°¡ È£ÃâµÉ°æ¿ì ¿ø·¡ È£ÃâµÈ °÷À¸·Î µ¹¾Æ°¡±â À§ÇÑ ¹ÝȯÁ¡À» ÁöÁ¤ÇÏ°íÀÖ´Ù. ÁÖÀDZí°Ô »ìÆìºÁµÎÀÚ.


4-3. Pointer and Index Registers

Pointer Register´Â SP(Stack Pointer)¿Í BP(Base Pointer)·Î ±¸¼ºµÇ´Âµ¥, ½ºÅÃÀ» ¿î¿ëÇϱâ À§Çؼ­ »ç¿ëµÈ´Ù. ±×¸®°í Index Register´Â SI(Source Index)¿Í DI(Destination Index)·Î ±¸¼ºµÇ´Âµ¥, ÁÖ·Î Å« µ¥ÀÌÅͳª ¹®ÀÚ¿­µîÀ» ó¸®ÇÒ¶§ ¾²ÀδÙ.

   ESP(Extended SP) - StackÀÇ °¡Àå À­ºÎºÐÀ» °¡¸£Å²´Ù.

   EBP(Extended BP) - StackÀÇ °¡Àå ¾Æ·§ºÎºÐ, Áï Base¸¦ °¡¸£Å²´Ù.

   ESI(Extended SI) - ¸Þ¸ð¸® µîÀ» À̵¿ÇÏ·Á ÇÒ¶§ ¿øº» ÁÖ¼Ò¸¦ °¡¸£Å²´Ù.

   EDI(Extended DI) - ESI¿Í ¸¶Âù°¡Áö·Î ¸ñÀûÁö ÁÖ¼Ò¸¦ °¡¸£Å²´Ù.

  EIP(Extended Instruction Pointer) - ´ÙÀ½ ½ÇÇàÇÒ ¸í·ÉÀÇ ÁÖ¼Ò¸¦ ±â¾ïÇÏ°í ÀÖ´Ù.


4-4. Flag Register

ÇÁ·Î±×·¥ÀÇ »óŸ¦ ³ªÅ¸³»±âÀ§ÇØ »ç¿ëµÇ´Â ºñÆ®µé·Î´Â ÃÑ 5°³°¡ ÀÖ´Ù.

O(Overflow) ºÎÈ£ÀÖ´Â »ê¼ú¿¬»ê½Ã¿¡ ÃÖ´ë Å©±â¸¦ ³Ñ¾úÀ» °æ¿ì SetµÈ´Ù.
S(Sign) °ªÀÌ À½¼öÀ̸é SetÀÌ´Ù.
Z(Zero) ¿¬»ê °á°ú°¡ 0ÀÏ°æ¿ì SetÀÌ´Ù.
C(Carry) ºÎÈ£¾ø´Â »ê¼ú¿¬»ê½Ã¿¡ ÇÏÀ§ºñÆ®¿¡¼­ »óÀ§ºñÆ®·Î ÀÚ¸®¿Ã¸²ÀÌ ¹ß»ýÇßÀ»°æ¿ì SetµÈ´Ù.
A(Auxiliary Carry) ºÎÈ£¾ø´Â »ê¼ú¿¬»ê½Ã¿¡ »óÀ§ºñÆ®¿¡¼­ ÇÏÀ§ºñÆ®·Î ÀÚ¸®³»¸²ÀÌ ¹ß»ýÇßÀ»°æ¿ì SetµÈ´Ù.
P(Parity) ¿¬»ê°á°ú¿¡¼­ 1ÀÌ Â¦¼ö°³¸é Set, µ¥ÀÌÅÍ Àü¼Û½Ã ÁÖ·Î »ç¿ëµÈ´Ù.

ÀÌ ¿Ü¿¡µµ ¸¹Àº Flag RegisterµéÀÌ ÀÖÁö¸¸ ReverseEngineering¿¡¼­ ´Ù·ç´Â°ÍÀº ¸Å¿ì ÇÑÁ¤ÀûÀ̹ǷΠÀ̸¸Å­¸¸ ´Ù·çµµ·Ï ÇÏ°Ú´Ù..


** ÀÌ ±ÛÀÇ ÀúÀÛ±ÇÀº ¸ðµÎ ÀúÀÚ¿¡°Ô ÀÖ½À´Ï´Ù.
   ¼öÁ¤, ¹èÆ÷½Ã ÀúÀÛ±ÇÀ» Ç¥½ÃÇØÁֽñ⠹ٶø´Ï´Ù.
** ¿ÀŸ, À߸øµÈ ³»¿ëÀÌ ÀÖÀ¸¸é Àû±ØÀûÀ¸·Î ¾Ë·ÁÁֽñ⠹ٶø´Ï´Ù :)
** Áú¹®»çÇ× ¶ÇÇÑ Àû±ØÀûÀ¸·Î ¹Þ°Ú½À´Ï´Ù.

Copyright (c) NEWMS 2007 All right Reserved.

Posted by newms
Studying Area/Reverse Engineering l

  Hit : 8925     Date : 2007/08/27 08:45



    
¿À¸® ¿ì¿Í..¤§¤§ ¾î¼À´ëÃæ¾µÁÙÀº¾Æ´Âµ¥ ÀÌ·¸°Ôº¹ÀâÇÒÁÙÀº,./.¤» 2007/08/31
1501   - [¸®´ª½ºÆÁ] ¸®´ª½º ÀÚµ¿½ÇÇà     twinz
08/28 7987
1500   - [º¸¾ÈÆÁ] ÇÁ·Î±×·¡¹Ö Äڵ庸ȣ (1)     twinz
08/28 10324
1499   - [º¸¾ÈÆÁ] ÇÁ·Î±×·¡¹Ö Äڵ庸ȣ (2)     twinz
08/28 7852
1498   - [º¸¾ÈÆÁ] ¸®´ª½º     twinz
08/28 7683
1497   - [º¸¾È³ëÆ®] ÄíÅ°[4]     twinz
08/28 9119
1496   - [º¸¾È³ëÆ®] Æ÷Æ®½ºÄ³´× (1)     twinz
08/28 7950
1495   - [º¸¾È³ëÆ®] Æ÷Æ®½ºÄ³´× (2)     twinz
08/28 9433
1494   - [º¸¾È³ëÆ®] º¿[1]     twinz
08/28 7593
1493   - ÄÄÇ»ÅÍ ¹ÙÀÌ·¯½ºÀÇ Á¾·ù[1]     twinz
08/27 8674
1492   - ´ÙÀÌÇϵå 4.0 ÆÄÀ̾ÀÏ Çö½Ç °¡´É[2]     twinz
08/25 8576
1491   - µµÃ» , ÇØÅ· ºÒ°¡´ÉÇÑ ¼¼»óÀ̿´٠    twinz
08/25 7985
1490   - ¹é¾÷¸í·É¾îÀÇ Á¾·ù     twinz
08/27 9256
1489   - ¹«½ÃµÇ´Â ¿ÀÇÁ ½ºÅÄ´õµåº¸¾È     twinz
08/27 6991
1488   - ¼­¹ö°ü¸®ÀÚ¸¦ À§ÇÑ 50°¡Áö ºñ¹ý     twinz
08/27 9419
1487   - ½Ã½ºÅÛ º¸¾È     twinz
08/27 6942
  - ¾î¼Àºí¸®¾î 1[1]     twinz
08/27 8924
1485   - ¾î¼Àºí¸®¾î 2     twinz
08/27 8806
1484   - ¾î¼Àºí¸®¾î 3[1]     twinz
08/27 6980
1483   0¹ø¼½ÅÍ º£µå¼½ÅÍÀÏ°æ¿ì..[2]     ROK.AF
03/02 7976
1482   1[1]     ¹é¹ÎÁØõÀç
08/31 4710
[1][2][3][4] 5 [6][7][8][9][10]..[80]

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