¹èÆ÷Çϱâ(Cab ÆÄÀÏ ÀÛ¼º¹ý)
ActiveX ÄÁÆ®·Ñ(.OCX)À» À¥ÆäÀÌÁö¿¡ Æ÷ÇÔÇÏ¿© ´Ù¸¥ PC¿¡¼ ±× ÆäÀÌÁö¸¦ ¿¸é Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â´Ù. Á¦´ë·Î µ¿ÀÛÇÏ°Ô Çϱâ À§Çؼ´Â ActiveX ÄÁÆ®·ÑÀ» °¢ PC¿¡ º¹»çÇÏ°í ±× ÄÁÆ®·ÑÀ» ·¹Áö½ºÆ®¸®¿¡ µî·ÏÇØÁÖ¾î¾ß¸¸ ÇÑ´Ù. ¶ÇÇÑ ÇÊ¿äÇÑ DLLÀÌ ÀÖ´Ù¸é ±× DLL ¶ÇÇÑ º¹»çÇØ ÁÖ¾î¾ßÇÑ´Ù. ÀÌ ÀÏ·ÃÀÇ ÀÛ¾÷µéÀ» ÀÚµ¿À¸·Î ÇØÁÖ´Â °ÍÀÌ Cab ÆÄÀÏÀÌ´Ù.
Visual Basic¿¡¼´Â ¹èÆ÷ ¸¶¹ý»ç¶ó´Â ÇÁ·Î±×·¥ÀÌ ÀÖ¾î ÀÌ Cab ÆÄÀÏÀ» ½±°Ô ¸¸µé ¼ö ÀÖ´Ù. ±×·¯³ª Visual C++Àº .... ÇÊÀÚ°¡ ±Ù 1³âÀ» Çì¸Å´Ù°¡ °Ü¿ì ã¾Ò´Ù.
ActiveX ÄÁÆ®·ÑÀÌ ¸¸µé¾îÁø »óȲ¿¡¼ Cab ÆÄÀÏÀ» ¸¸µå´Â ÀÛ¾÷ ¼ø¼¸¦ º¸¸é ´ÙÀ½°ú °°´Ù.
1. .inf ÆÄÀÏÀ» ÀÛ¼ºÇÑ´Ù.
2. .ocx ÆÄÀϰú .inf ÆÄÀÏÀ» .cab ÆÄÀÏ·Î ¾ÐÃàÇÑ´Ù.
3. .cab ÆÄÀÏÀ» ¼¸íÇÑ´Ù.
4. .cab ÆÄÀÏÀ» À¥ÆäÀÌÁö¿¡ µî·ÏÇÑ´Ù.
.inf ÆÄÀÏ ÀÛ¼º¹ý
.inf ÆÄÀÏÀº Visual Basic¿¡¼´Â ¹èÆ÷¸¶¹ý»ç¿¡¼ VB project¸¦ ¼³Á¤ÇÏ¿© .inf ÆÄÀÏÀÌ ÀÚµ¿À¸·Î »ý¼ºµÇ¾î .cab ÆÄÀÏ¿¡ Æ÷ÇԵȴÙ. ±×·¯³ª Visual C++·Î ÇÁ·Î±×·¥Çß´Ù¸é ºÒÇàÈ÷µµ ¼öµ¿À¸·Î ÀÛ¼ºÇؾ߸¸ ÇÑ´Ù. ÀÛ¼º ¿¹¸¦ º¸¸é ´ÙÀ½°ú °°´Ù.
; ========================= test.inf ======================== ; This .inf file will control the installation
of the MFC test [version] [Add.Code] ; dependent DLLs [mfc42.dll] [olepro32.dll] [mfc42installer] ; thiscab
is a keyword which, in this case, means that test.ocx [test.ocx] |
À§ÀÇ ³»¿ë Áß test¸¦ ÀÚ½ÅÀÌ ÀÛ¼ºÇÑ ActiveX ÄÁÆ®·ÑÀÇ À̸§À¸·Î º¯°æÇϰí Áß°£¿¡¼ ¾à°£ À§ÀÇ clsid={0D886696-C7CE-11D3-A175-08002BF17507}¸¦ ÀÚ½ÅÀÌ ÀÛ¼ºÇÑ ÄÁÆ®·ÑÀÇ clsid·Î ¼öÁ¤Çϸé(clsid´Â ActiveX ÄÁÆ®·ÑÀ» ¸¸µç µð·ºÅ丮ÀÇ .odl ÆÄÀÏÀ» ¿¾î °¡Àå ¸¶Áö¸·¿¡ ³ª¿Í ÀÖ´Â id¸¦ ÀÔ·ÂÇÏ¸é µÈ´Ù)º¸¸é .inf ÆÄÀÏ ÀÛ¼ºÀº ¿Ï·áµÈ´Ù.
Âü°í·Î inf ÆÄÀÏÀÇ ³»¿ëÀ» ´ë° Á¤¸®ÇÏ¸é ´ÙÀ½°ú °°´Ù.
¼¼¹ÌÄÝ·Ð(;) : ÁÖ¼®¹®À» Ç¥½ÃÇÑ´Ù.
[Add.Code] : ¼³Ä¡ÇÒ ÆÄÀϵéÀ» ³ª¿ÇÑ´Ù.
test.ocx=test.ocx
mfc42.dll=mfc42.dll
msvcrt.dll=msvcrt.dll
olepro32.dll=olepro32.dll
Áï test.ocx, mfc42.dll, msvcrt.dll, olepro32.dllÀ» ¼³Ä¡ÇÑ´Ù´Â ÀǹÌÀÌ´Ù. ±×´ÙÀ½ ºÎÅÍ´Â [Add.Code]¿¡¼ ¼³Á¤ÇÑ ÆÄÀϵéÀÇ ¼Ó¼ºÀ» ¼³Á¤ÇÑ´Ù.
[test.ocx]
file-win32-x86=thiscab
clsid={0D886696-C7CE-11D3-A175-08002BF17507}
FileVersion=1,0,0,1
RegisterServer=yes
clsid´Â ÀÛ¼ºÇÑ OCX ÆÄÀÏÀÇ CLSID¸¦ ÀÔ·ÂÇÑ´Ù.
FileVersionÀº ÀÛ¼ºÇÏ] OCX ÆÄÀÏÀÇ ¹öÀüÀ» ÀÔ·Â(Resource¿¡¼ ¼³Á¤ÇÑ °ª°ú °°ÀÌ ÀÔ·Â)ÇÑ´Ù. ¼³¸í»ó FileVersionÀº ActiveX ÆÄÀÏÀ» ÀÛ¼ºÇÏ¿© ¹èÆ÷ÇÏ´ø Áß ¹ö±×¸¦ ¹ß°ßÇÏ¿© ¼öÁ¤ÇÏ¿© Àç ¹èÆ÷¸¦ ÇÒ ¶§ ÀÌ ÆÄÀÏ ¹öÀüÀ» ³ô¿© ÁÖ¸é Client¿¡¼ ¾Ë¾Æ¼ ´Ù½Ã ´Ù¿î·Îµå¸¦ ¹Þ´Â´Ù ¶ó°í µÇ¾î ÀÖ¾ú´Âµ¥ ÇÊÀÚ°¡ Å×½ºÆ® ÇØº¸´Ï Àß µÇÁö ¾Ê¾Ò´Ù. Å×½ºÆ® ÇØº¸±â ¹Ù¶õ´Ù.
³ª¸ÓÁö ÆÄÀϵéÀº Visual C++·Î ActiveX ÇÁ·Î±×·¥À» ÀÛ¼ºÇßÀ» ¶§ ÀϹÝÀûÀ¸·Î ÇÊ¿äÇÑ dll ÆÄÀϵéÀÌ´Ù. ¸¸¾à °°Àº ¹öÀüÀÇ Visual C++ÀÌ ¼³Ä¡µÇ¾î ÀÖÀ¸¸é ¼³Ä¡ µÇÁö ¾Ê°í ±×·¸Áö ¾ÊÀ¸¸é ¼³Ä¡µÈ´Ù.
[msvcrt.dll]
FileVersion=6,0,8168,0
hook=mfc42installer
FileVersionÀº ¼³Ä¡µÉ dllÀÇ ¹öÀüÀÌ´Ù. ÇöÀç inf ¼³¸í¿¡ Àû¾î ³õÀº ¹öÀüÀº Visual C++ 6.0À¸·Î ÇÁ·Î±×·¥ ÇßÀ» °æ¿ì ¹öÀüµéÀÌ´Ù.
hookÀº ¼³Ä¡ÇÒ ¹æ¹ýÀ» ¼³Á¤ÇÏ´Â ºÎºÐÀÇ TitleÀ» ÀÔ·ÂÇÑ´Ù.
[mfc42installer]
file-win32-x86=<LINK TYPE="GENERIC" VALUE="http://activex.microsoft.com
/controls/vc/mfc42.cab">http://activex.microsoft.com/controls/vc
/mfc42.cab</LINK>
run=%EXTRACT_DIR%\mfc42.exe
http://activex.microsoft.com/controls/vc/mfc42.cabÀ¸·ÎºÎÅÍ ´Ù¿î·ÎµåÇÏ¿© ºÎ°¡Àû dllÀ» ¼³Ä¡Çϵµ·Ï ¼³Á¤ÇÑ °ÍÀÌ´Ù.
.cab ÆÄÀÏ »ý¼º
.cab ÆÄÀÏÀ» »ý¼ºÇϱâ À§Çؼ´Â cabarc.exe¶ó´Â ÇÁ·Î±×·¥ÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ ÇÁ·Î±×·¥Àº ¾Æ·¡ ´Ù¿î·Îµå¿¡¼ ´Ù¿î·Îµå°¡ °¡´ÉÇÏ´Ù.
.cab ÆÄÀÏ »ý¼º ¿¹¸¦ µé¸é, test.ocx¶ó´Â ActiveX ÄÁÆ®·ÑÀ» Á¦ÀÛÇÏ¿´°í test.inf¸¦ ÀÛ¼ºÇÏ¿´´Ù¸é test.cab ÆÄÀÏÀº µµ½ºÃ¢¿¡¼ ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÏ¸é ¸¸µé¾î Áø´Ù.
cabarc.exe N test.cab test.ocx test.inf
Á¦°øÇÏ´Â ÆÄÀÏ(¾Æ·¡ ´Ù¿î·Îµå¿¡¼ .zip ÆÄÀÏÀ» ¹Þ¾Æ ¾ÐÃàÀ» Ǭ ÆÄÀÏ)¿¡¼ step1.bat¸¦ ½ÇÇàÇϸé À§ °úÁ¤ÀÌ ½ÇÇàµÈ´Ù. ¹°·Ð step1.bat¸¦ ¿¾î test¸¦ Á¦ÀÛÇÑ ActiveX ÄÁÆ®·Ñ À̸§À¸·Î º¯°æÇÏ°í ±× .ocxÆÄÀϰú .inf ÆÄÀÏÀ» Á¦°øÇÏ´Â ÆÄÀϰú °°Àº À§Ä¡¿¡ º¹»çÇÑ ÈÄ step1.bat¸¦ ½ÇÇàÇØ¾ß ÇÑ´Ù.
.cab ÆÄÀÏ ¼¸í
¸í·É ÇÁ·ÒÇÁÆ®¿¡¼ ´ÙÀ½ ¸í·ÉÁÙÀ» ÀÔ·ÂÇÏ¸é ´ÙÀ½°ú °°Àº ´ëÈ »óÀÚ°¡ »ý¼ºµÇ¾î ¾ÏÈ£¸¦ ÀÔ·ÂÇÏ¸é °³ÀΠŰ ÆÄÀÏ mycert.pvk ¹× mycert.cerÀÌ »ý¼ºµÈ´Ù.

makecert -sv "mycert.pvk" -n "CN=JYS ActiveX" mycert.cer
¸í·É ÇÁ·ÒÇÁÆ®¿¡¼ ´ÙÀ½ ¸í·ÉÁÙÀ» ÀÔ·ÂÇϸé mycert.cer·ÎºÎÅÍ mycert.spc ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.
cert2spc mycert.cer mycert.spc
¿©±â ±îÁö °úÁ¤Àº Çѹø¸¸ ¼öÇàÇÏ¸é µÈ´Ù. Á¦°øÇÏ´Â ÆÄÀÏ¿¡¼ makespc.bat¸¦ ½ÇÇàÇϸé À§ °úÁ¤ÀÌ ½ÇÇàµÈ´Ù.
¸í·É ÇÁ·ÒÇÁÆ®¿¡¼ ´ÙÀ½ ¸í·ÉÁÙÀ» ÀÔ·ÂÇϸé À§ÀÇ °³ÀΠŰ ¾ÏÈ£ ÀÔ·Â ´ëÈ »óÀÚ°¡ »ý¼ºµÇ°í À§ °úÁ¤¿¡¼ ÀÔ·ÂÇÑ ¾ÏÈ£¿Í °°Àº ¾ÏÈ£¸¦ ÀÔ·ÂÇϸé .cab ÆÄÀÏ¿¡ ¼¸íÇÑ´Ù.
signcode -v mycert.pvk -spc mycert.spc test.cab
À§¿Í °°ÀÌ ÀÔ·ÂÇϸé Å×½ºÆ®¿ëÀ¸·Î .cab ÆÄÀÏÀ» ÀÎÁõÇÑ´Ù. ¸¸¾à ÀÎÁõ ±â°ü¿¡¼ Á¦´ë·ÎµÈ ÀÎÁõÀ» ¹ÞÀ¸·Á¸é À§ ¸í·ÉÁÙ¿¡ -t ÀÎÁõ±â°ü urlÀ» Ãß°¡ÇØ¾ß ÇÑ´Ù. ±×·¯³ª ÀÎÁõ ±â°ü¿¡¼ ÀÎÁõÀ» ¹ÞÀ¸·Á¸é µ·À» ³»¾ßÇϰí Å×½ºÆ®¿ë ÀÎÁõÀº ´ÜÁö À¥ ÆäÀÌÁö¸¦ óÀ½ ¿¾úÀ» ¶§ ´ëÈ »óÀÚ Çϳª ´õ ¶á´Ù´Â °Í¸¸ ´Ù¸£¹Ç·Î Á¦´ë·ÎµÈ ÀÎÁõÀ» ¹ÞÀ»Áö´Â ¿©·¯ºÐÀÌ ÆÇ´ÜÇϱ⠹ٶõ´Ù.
¸í·É ÇÁ·ÒÇÁÆ®¿¡¼ ´ÙÀ½ ¸í·ÉÁÙÀ» ÀÔ·ÂÇϸé Çϸé Å×½ºÆ® ÀÎÁõ¼°¡ Àνĵǵµ·Ï Ŭ¶óÀÌ¾ðÆ® ½Ã½ºÅÛ¿¡¼ TRUE °ªÀ¸·Î Setreg.exe°¡ ½ÇÇàµÈ´Ù.
setreg -q 1 TRUE
Checktrust.exe¸¦ ½ÇÇàÇÏ¿© CAB ÆÄÀÏÀÌ ¿Ã¹Ù¸£°Ô ¼¸íµÇ¾ú´ÂÁö È®ÀÎÇÑ´Ù.
chktrust test.cab
Á¦°øÇÏ´Â ÆÄÀÏ¿¡¼ step2.bat¸¦ ¿¾î test¸¦ Á¦ÀÛÇÑ ActiveX ÄÁÆ®·Ñ À̸§À¸·Î º¯°æÇÑ ÈÄ step2.bat¸¦ ½ÇÇàÇϸé À§ °úÁ¤ÀÌ ½ÇÇàµÈ´Ù.
À¥ ÆäÀÌÁö µî·Ï
.cabÆÄÀÏÀ» À¥ ÆäÀÌÁö¿¡ µî·ÏÇϱâ À§Çؼ´Â OBJECT ű×ÀÇ CODEBASE¸¦ »ç¿ëÇÑ´Ù. ´ÙÀ½Àº test.ocx¸¦ »ðÀÔÇÑ html ÆÄÀÏÀÇ ¿¹ÀÌ´Ù.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD
HTML 4.0//EN"> <body bgcolor="white" text="black" link="blue" vlink="purple" alink="red"> <p><object classid="CLSID:0D886696-C7CE-11D3-A175-08002BF17507"
codebase="test.CAB#version=1,0,0,1" </html> |
À§¿¡¼ CLSID:0D886696-C7CE-11D3-A175-08002BF17507, test.cab, version=1,0,0,1À» ÀÚ½ÅÀÌ ¸¸µç ActiveX ÄÁÆ®·Ñ¿¡ ¸ÂÃß¾î º¯°æÇÏ¸é µÈ´Ù. versionÀº ÀÛ¼ºÇÑ ActiveX ÄÁÆ®·ÑÀÇ resourceÀÇ versionÀ» È®ÀÎÇÏ¿© ÀÔ·ÂÇÑ´Ù.
º¸¾È ¼³Á¤
¿¹Àü¿¡´Â ÀÎÅÍ³Ý ÀͽºÇ÷ξ ÀÎÁõ ±â°üÀ¸·ÎºÎÅÍ ÀÎÁõÀ» ¹ÞÁö ¾ÊÀº ActiveX(¼¸í ¾ÈµÈ ActiveX·Î Ç¥Çö)¸¦ È®Àο¡ ÀÇÇØ »ç¿ëÇϵµ·Ï ±âº» ¼¼ÆÃµÇ¾î ÀÖ¾ú´Âµ¥, ¿äÁòÀº ±× ¼¼ÆÃÀÌ »ç¿ë¾ÈÇÔÀ¸·Î µÇ¾î ÀÖ´Ù. µû¶ó¼ ÀÎÅÍ³Ý ÀͽºÇ÷ξ¼ ´ÙÀ½°ú °°ÀÌ ¼³Á¤À» ÇØÁÖ¾î¾ß¸¸ ActiveX¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
µµ±¸ ¸Þ´º -> ÀÎÅÍ³Ý ¿É¼Ç ->µÎ ¹øÂ° ÅÇ º¸¾È -> »ç¿ëÀÚ ÁöÁ¤ ¼öÁØ -> ¼¸í ¾ÈµÈ ActiveX ÄÁÆ®·Ñ ´Ù¿î·Îµå(¸®½ºÆ®ÀÇ ¾Æ·¡ÂÊ¿¡ ÀÖÀ½)¸¦ »ç¿ë ¾ÈÇÔ¿¡¼ È®ÀÎÀ¸·Î º¯°æ
´Ù¿î·Îµå
ÇÊ¿äÇÑ ½ÇÇàÆÄÀÏ ¹× ¿¹Á¦ ´Ù¿î·Îµå