ÀÌ Àå¿¡¼´Â °¡Àå °£´ÜÇÑ Å©·¢¹Ì ÇÁ·Î±×·¥ÀÎ haque-abex1 ¸¦ Å©·¢Çϰí
µ¿½Ã¿¡ ¿Ã¸® µð¹ö°Å¿¡ »ç¿ë¹æ¹ýÀ» ÀÍÈ÷°Ú½À´Ï´Ù.
¿ì¼± Å©·¢¹Ì ÇÁ·Î±×·¥À» ´Ù¿î¹Þ½À´Ï´Ù.
ÆÄÀÏÀ» ´Ù¿î·Îµå ¹ÞÀ¸½Ã°í ¾ÐÃàÀ» Ǫ½Ã¸é ½ÇÇà ÆÄÀÏ µÎ°³°¡ ÀÖ½À´Ï´Ù.
Çϳª´Â abexcm1.exe ¶ó´Â ÆÄÀϰú abexcm1(cracked).exe ¶ó´Â ÆÄÀÏÀÌ Àִµ¥
abexcm1(cracked).exe ¶ó´Â ÆÄÀÏÀº Á¦°¡ Å©·¢ÇÑ ½ÇÇàÆÄÀÏÀ̹ǷΠ½ÇÇàÇϽÃÁö ¸¶½Ã°í
Å©·¢µÇÁö ¾ÊÀº abexcm1.exe ¸¦ ½ÇÇàÇϼ¼¿ä.
½ÇÇà ȸéÀº ´ÙÀ½°ú °°½À´Ï´Ù.


ù ¹øÂ° ¸Þ¼¼Áö ¹Ú½º´Â ÀÌ ÇÁ·Î±×·¥ÀÌ ¿©·¯ºÐÀÇ ÇÏµå µð½ºÅ©¸¦ CD-ROM À¸·Î »ý°¢ÇÏ°Ô ¸¸µé¶ó´Â ³»¿ëÀ̸ç
µÎ ¹øÂ° ³»¿ëÀº ¿¡·¯ ¸Þ¼¼Áö »óÀÚ°¡ ¶ß¸é¼ CD-ROM µå¶óÀ̺갡 ¾Æ´Ï¶ó´Â ³»¿ëÀÔ´Ï´Ù.
Áï, ÀÌ ÇÁ·Î±×·¥ÀÌ ¿øÇÏ´Â °ÍÀº ÀÚ½ÅÀÇ ÇÏµå µð½ºÅ©¸¦ CD-ROM À¸·Î »ý°¢ÇÏ°Ô ¸¸µé¾î¶ó ÀÔ´Ï´Ù.
ÀÌÁ¦ ¿Ã¸® µð¹ö°Å¸¦ ½ÇÇà½ÃÄѺ¾½Ã´Ù.
¿Ã¸® µð¹ö°Å ½ÇÇàȸéÀº ´ÙÀ½°ú °°½À´Ï´Ù.

±×¸®°í File - Open À» ´·¯¼ ¿ì¸®°¡ Å©·¢ÇÏ·Á´Â ½ÇÇàÆÄÀÏÀ» ºÒ·¯¿À½Ã¸é ´ÙÀ½°ú °°Àº âÀÌ ¶å´Ï´Ù.

¿ì¸®°¡ Å©·¢ÇÏ·Á´Â ÇÁ·Î±×·¥ÀÇ ¼Ò½º Äڵ尡 µð½º ¾î¼Àºí µÇ¾î¼ ³ª¿À´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ Å©·¢¹Ì ÀÚü°¡ ¸Å¿ì ½¬¿ì¹Ç·Î Å©·¢¿¡ ±×´ÙÁö ½Ç·ÂÀÌ ¾ø´Â »ç¶÷µµ µð½º ¾î¼Àºí¸® µÈ Äڵ常 ºÁµµ
1 ~ 2 Ãʳ»¿¡ ´äÀÌ ³ª¿À´Â ¹®Á¦ÀÔ´Ï´Ù.
¹°·Ð Àú´Â Å©·¢À» ÇÑ ¹øµµ ÇØº¸Áö ¾Ê¾Ò´Ù´Â °¡Á¤ÇÏ¿¡¼ ¼³¸íÇØµå¸®°Ú½À´Ï´Ù.
À§¿¡ ±×¸²¿¡¼ º¸½Ã´Ù½ÃÇÇ ÀÌ Äڵ忡¼ Å©·¢À» Çϱâ À§ÇØ °¡Àå Áß¿äÇÑ °÷Àº ¹Ù·Î ÀÌ ºÎºÐÀÇ ÄÚµåÀÔ´Ï´Ù.
00401024 3BC6 CMP EAX,ESI
00401026 74 15 JE SHORT abexcm1.0040103D
CMP ¸í·É¾î¸¦ ÅëÇØ¼ EAX ·¹Áö½ºÅÍ¿Í ESI ·¹Áö½ºÅÍ¿¡ °ªÀ» ¼·Î ºñ±³Çϴµ¥ ÀÌ °ªÀÌ ¼·Î °°´Ù¸é
40103D ÁÖ¼Ò·Î Á¡ÇÁÇÏ´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ÁÖ¼Ò¿¡ Á¡ÇÁÇÏ°Ô µÇ¸é ´ÙÀ½°ú °°Àº ¸í·É¾î¸¦ ½ÇÇàÇÏ°Ô µË´Ï´Ù.
0040103D |> 6A 00 PUSH 0 ; |/Style = MB_OK|MB_APPLMODAL
0040103F |. 68 5E204000 PUSH abexcm1.0040205E ; ||Title = "YEAH!"
00401044 |. 68 64204000 PUSH abexcm1.00402064 ; ||Text = "Ok, I really think that your HD is a CD-ROM! :p"
00401049 |. 6A 00 PUSH 0 ; ||hOwner = NULL
0040104B |. E8 11000000 CALL <JMP.&USER32.MessageBoxA> ; |\MessageBoxA
º¸½Ã´Ù½ÃÇÇ ÀÌ ÄÚµå´Â Ok, I really think that your HD is a CD-ROM! :p ¶ó´Â ³»¿ë¿¡ ¸Þ¼¼Áö ¹Ú½º¸¦ ¶ç¿ì´Â ÄÚµåÀÔ´Ï´Ù.
ÀÌ ¸Þ¼¼Áö ¹Ú½º¿¡ ³»¿ëÀº ¾Æ½Ã ´Ù½ÃÇÇ ´ç½ÅÀÇ ÇÏµå µð½ºÅ©¸¦ ½Ãµð·ÒÀ¸·Î »ý°¢ÇÏ°Ô ¸¸µé¾ú´Ù´Â ³»¿ëÀÔ´Ï´Ù.
Áï, À̰ÍÀº Å©·¢¹Ì°¡ ¿øÇÏ´Â Å©·¢ÀÇ °á°ú¶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù.
°á·ÐÀº Å©·¢À» Çϱâ À§Çؼ´Â ¹Ù·Î À§¿¡ Äڵ带 ½ÇÇà½ÃŰ¸é µÈ´Ù´Â °Í ÀÔ´Ï´Ù.
ÇÏÁö¸¸ ¸·»ó ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄѺ¸¸é ÀÌ Äڵ尡 ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù.
¿ì¼± Å©·¢¹Ì ÇÁ·Î±×·¥À» µð¹ö±ë ÇØº¸±â À§Çؼ F8 Ű (¸Þ´ºÀÇ Debue - Step Over) ¸¦ ´·¯º¸°Ú½À´Ï´Ù.
F8Ű´Â À§¿¡ ±×¸²¿¡¼ ³ª¿Â µð½º ¾î¼Àºí¸® µÈ ÇÁ·Î±×·¥À» ¾î¼Àºí¸® ÄÚµå ÇÑ ÁÙ ÇÑ ÁÙ¾¿ ½ÇÇàÇÏ´Â ±â´ÉÀÔ´Ï´Ù.
¿©±â¼ Step Into ¿Í Step Over °¡ Àִµ¥ Step Into ´Â ¾î¼Àºí¸® Äڵ峻¿¡¼ ÇÔ¼ö¸¦ È£ÃâÇÏ¸é ±× ÇÔ¼ö·Î µé¾î°¡¼ ÇÑÁÙ ÇÑÁÙ¾¿ ½ÇÇàÇÕ´Ï´Ù.
Step Over ´Â ÇÔ¼ö¸¦ È£ÃâÇØµµ ±× ÇÔ¼ö¾ÈÀ¸·Î µé¾î°¡Áö ¾Ê½À´Ï´Ù.
F8 ۸¦ ´©¸£½Ç ¶§ ¸¶´Ù Äڵ尡 ÇÑ ÁÙ ÇÑÁÙ¾¿ ½ÇÇàµÊÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù.
Äڵ尡 ÇÑÁÙ ÇÑÁÙ¾¿ ½ÇÇà½ÃŰ½Ã´Ù°¡ 40101D ¿¡¼ ¸ØÃß½Ã°Ô µÇ¸é ·¹Áö½ºÅÍ¿¡ »óŰªÀº ´ÙÀ½°ú °°½À´Ï´Ù.

EAX ·¹Áö½ºÅÍ¿¡ ÁÖ¸ñÇϽñ⠹ٶø´Ï´Ù.
EAX ·¹Áö½ºÅÍ¿¡´Â 3 ÀÌ µé¾î°¡ Àִµ¥ C µå¶óÀ̺ê ÇÏµå µð½ºÅ©ÀÌ¸é ¹Ýµå½Ã 3 ÀÌ µé¾î°¡°Ô µË´Ï´Ù.
¿Ö³Ä¸é ¹Ù·Î À§¿¡ Äڵ带 ÅëÇØ¼
00401013 |. 68 94204000 PUSH abexcm1.00402094 ; /RootPathName = "c:\"
00401018 |. E8 38000000 CALL <JMP.&KERNEL32.GetDriveTypeA> ; \GetDriveTypeA
´ÙÀ½°ú °°ÀÌ GetDriveTypeA('c:\'); ½ÄÀ¸·Î C µå¶óÀ̺꿡 µå¶óÀ̺ê ŸÀÔÀ» Àоî¿À°Ô µÇ´Âµ¥
ÀÌ ¶§ ¸®ÅϰªÀÌ EAX ·¹Áö½ºÅÍ¿¡ ÀúÀåµÇ°Ô µË´Ï´Ù.
¿ì¼± GetDriveType ¶ó´Â API ¿¡ ¸®Åϰª¿¡ ´ëÇØ¼ ¾Ë°í ÀÖ¾î¾ß µÇ´Âµ¥ À̰ÍÀº MSDN À» ÅëÇØ¼ º¸¸é ´ÙÀ½°ú °°ÀÌ ³ª¿É´Ï´Ù.
(¹°·Ð ÇÔ¼ö À̸§¸¸ ºÁµµ ¸ÓÇÏ´Â ÇÔ¼öÀÎÁö ¾ËÁö¸¸..)
| Value | Meaning |
|---|---|
| DRIVE_UNKNOWN | The drive type cannot be determined. |
| DRIVE_NO_ROOT_DIR | The root path is invalid, for example, no volume is mounted at the path. |
| DRIVE_REMOVABLE | The drive is a type that has removable media, for example, a floppy drive or removable hard disk. |
| DRIVE_FIXED | The drive is a type that cannot be removed, for example, a fixed hard drive. |
| DRIVE_REMOTE | The drive is a remote (network) drive. |
| DRIVE_CDROM | The drive is a CD-ROM drive. |
| DRIVE_RAMDISK | The drive is a RAM disk. |
ÀÌ »ó¼ö°ªÀÌ ½ÇÁ¦·Î ¾î¶°ÇÑ Á¤¼ö°ªÀ» °¡Áö°í ÀÖ´Â È®ÀÎÇϱâ À§Çؼ´Â ÄÄÆÄÀÏ·¯¿¡¼ »ç¿ëÇÏ´Â À©µµ¿ìÁî API ÇÔ¼öµéÀÌ ÀÖ´Â ¼Ò½º ÆÄÀÏÀ» º¸½Ã¸é ³ª¿É´Ï´Ù.
Àú °°Àº °æ¿ì¿¡´Â µ¨ÆÄÀ̸¦ »ç¿ëÇϹǷΠµ¨ÆÄÀ̼ »ç¿ëÇÏ´Â windows.pas ¿¡ º¸½Ã¸é ´ÙÀ½°ú °°ÀÌ »ó¼ö°¡ Á¤ÀǵǾî ÀÖ½À´Ï´Ù.
const
DRIVE_UNKNOWN = 0;
{$EXTERNALSYM DRIVE_UNKNOWN}
DRIVE_NO_ROOT_DIR = 1;
{$EXTERNALSYM DRIVE_NO_ROOT_DIR}
DRIVE_REMOVABLE = 2;
{$EXTERNALSYM DRIVE_REMOVABLE}
DRIVE_FIXED = 3;
{$EXTERNALSYM DRIVE_FIXED}
DRIVE_REMOTE = 4;
{$EXTERNALSYM DRIVE_REMOTE}
DRIVE_CDROM = 5;
{$EXTERNALSYM DRIVE_CDROM}
DRIVE_RAMDISK = 6;
{$EXTERNALSYM DRIVE_RAMDISK}
ÀÌÀü¿¡ EAX ·¹Áö½ºÅÍ¿¡¼ ¸®ÅÏÇß´ø 3 À̶ó´Â °ªÀº DRIVE_FIXED À̸ç À̰ÍÀº MSDN À» ÅëÇØ¼ º¸¼Ì´Ù ½ÃÇÇ °íÁ¤ µÈ ÇÏµå µð½ºÅ© µå¶óÀ̺긦 ÀǹÌÇÏ°Ô µË´Ï´Ù.
´Ù½Ã F8 ۸¦ ´©¸£¼Å¼ ½ÇÇàÇϽôٰ¡ 401024 ÁÖ¼Ò¿¡¼ ¸ØÃß½Ã°í ·¹Áö½ºÅÍ¿¡ »óŸ¦ º¸½Ã±â ¹Ù¶ø´Ï´Ù.
00401024 |. 3BC6 CMP EAX,ESI
ÀÌ ºÎºÐ¿¡ ÄÚµå´Â ´ÙÀ½°ú °°À¸¸ç ´ç¿¬È÷ EAX ·¹Áö½ºÅÍ¿Í ESI ·¹Áö½ºÅÍ¿¡ ÀÖ´Â ³»¿ëÀ» ¼·Î ºñ±³ÇϹǷÎ
EAX ·¹Áö½ºÅÍ¿Í ESI ·¹Áö½ºÅÍ¿¡ °ªÀ» ÁÖ¸ñÇØ¾ß ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÀÌ ºÎºÐ¿¡ Äڵ尡 ¹Ù·Î ½ÇÇàµÇ±âÀü¿¡ EAX ·¹Áö½ºÅÍ¿¡´Â 1 ÀÌ µé¾î°¡°Ô µË´Ï´Ù.
¿Ö³Ä¸é ÀÌ ¸í·É¾î°¡ ½ÇÇàµÇ±â Àü¿¡ DEC ¸í·É¾î¸¦ µÎ¹ø »ç¿ëÇ߱⠶§¹®ÀÔ´Ï´Ù.
±×¸®°í ESI ·¹Áö½ºÅÍ¿¡´Â ¾²·¹±â °ªÀÌ µé¾î°¡°Ô µË´Ï´Ù.¿Ö³Ä¸é ÀÌ Äڵ忡¼ ESI ·¹Áö½ºÅ͸¦ »ç¿ëÇÏ´Â ºÎºÐÀÌ ¾ø½À´Ï´Ù.
ESI ·¹Áö½ºÅÍ¿¡ °ªÀº ÇÁ·Î±×·¥ ½ÇÇà ½Ã ´Þ¶óÁö°Ô µË´Ï´Ù. ( ¹°·Ð °£È¤°¡´Ù°¡ 3 À̳ª 0x400~~~ À¸·Î ½ÃÀÛÇÏ´Â °ªÀÌ µé¾î°¡±âµµ ÇÕ´Ï´Ù. )
F8 ۸¦ ´·¯ºÁ¼ ¾Ë°Ô µÈ °ÍÀº CMP ¸í·É¾î¸¦ »ç¿ëÇÏ´Â ÀÌ ºÎºÐ¿¡ Äڵ忡¼ EAX ·¹Áö½ºÅÍ¿Í ESI ·¹Áö½ºÅÍ´Â ´Ù¸£´Ù´Â °Í ÀÔ´Ï´Ù.
°á±¹¿£ ¹Ù·Î ¹Ø¿¡ JE ¸í·É¾î¸¦ ÅëÇØ¼ 401028 ÁÖ¼Ò·Î Á¡ÇÁÇØ ¿¡·¯°ü·Ã ¸Þ¼¼Áö¸¦ Ãâ·ÂÇÏ°Ô µÉ²®´Ï´Ù.
µû¶ó¼ ÀÌ ºÎºÐ¿¡ Äڵ带 401028 ÁÖ¼Ò·Î Á¡ÇÁÇÏÁö ¾Ê°í ¹«Á¶°Ç 40103D ·Î Á¡ÇÁÇÏ°Ô ¸¸µé¸é µË´Ï´Ù.
´ÙÀ½ ±×¸²°ú °°ÀÌ µû¶óÇÏ½Ã¸é µË´Ï´Ù.


Ŭ¸¯ ÈÄ ¹Ù²ï ÄÚµå·Î Àû¿ëÀÌ µÇ¸ç Cancel À» ´·¯¼ âÀ» ´Ý¾ÆÁÖ½Ã¸é µË´Ï´Ù.
¹Ù²ï ȸéÀº ´ÙÀ½°ú °°½À´Ï´Ù.

ÀÌ·¸°Ô Äڵ带 ¹Ù²ã¹ö¸®¸é CMP ¸í·ÉÀº ¹«½ÃµÇ°í ¹«Á¶°Ç JMP ¸í·ÉÀ» ÅëÇØ¼ 0x40103D ÁÖ¼Ò·Î Á¡ÇÁµÇ°Ô Å©·¢ÀÌ ¿Ï·áµÇ°Ô µÇ´Â °Í ÀÔ´Ï´Ù.
±×·¸´Ù°í ÇØ¼ ¹Ù·Î ½ÇÇàÇϽÃÁö ¸¶½Ã°í ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» ´·¯ ´ÙÀ½°í °°ÀÌ µû¶óÇϼ¼¿ä.


¾Æ¹« ÆÄÀÏÀ̸§À¸·Î ÀúÀåÇϽøé JE ¸í·ÉÀ» JMP ¸í·É¾î·Î ¹Ù²ã¼ Å©·¢ÇÑ ½ÇÇàÆÄÀÏÀÌ »ý¼ºµÇ°í µÇ°í À̰ÍÀ» Á÷Á¢ ½ÇÇàÇϽøé..

Å©·¢ÀÌ ¿Ï·áµÇ¾ú½À´Ï´Ù.
³Ê¹«³ªµµ ¼³¸íÀ» ÀÚ¼¼ÇÏ°Ô Çߴµ¥ ´ÙÀ½ºÎÅÍ´Â ¼³¸íÀ» ÀÚ¼¼ÇÏ°Ô ÇÏÁö ¾Ê°Ú½À´Ï´Ù.