¹èÆ÷Çϱâ(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
; control. This control has been compiled with Visual C++ version 4.2.
; The FileVersion tags in the dependent DLLs section on this file
; reflect this requirement.

[version]
; version signature (same for both NT and Win95) do not remove
signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
test.ocx=test.ocx
; These are the necessary supporting DLLs for MFC 4.2 ActiveX Controls
mfc42.dll=mfc42.dll
msvcrt.dll=msvcrt.dll
olepro32.dll=olepro32.dll

; dependent DLLs
[msvcrt.dll]
; This is an example of conditional hook. The hook only gets processed
; if msvcrt.dll of the specified version is absent on client machine.
FileVersion=6,0,8168,0
hook=mfc42installer

[mfc42.dll]
FileVersion=6,0,8168,0
hook=mfc42installer

[olepro32.dll]
FileVersion=5,0,4261,0
hook=mfc42installer

[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>
; If dependent DLLs are packaged directly into the above cabinet file
; along with an .inf file, specify that .inf file to run as follows:
;InfFile=mfc42.inf
; The mfc42.cab file actually contains a self extracting executable.
; In this case we specify a run= command.
run=%EXTRACT_DIR%\mfc42.exe

; thiscab is a keyword which, in this case, means that test.ocx
; can be found in the same .cab file as this .inf file
; file-win32-x86 is an x86 platform specific identifier
; See the ActiveX SDK - ActiveX Controls - Internet Component Download -
; Packaging component code for automatic download

[test.ocx]
file-win32-x86=thiscab
; *** add your controls CLSID here ***
clsid={0D886696-C7CE-11D3-A175-08002BF17507}
; Add your ocx's file version here.
FileVersion=1,0,0,1
RegisterServer=yes

 

À§ÀÇ ³»¿ë Áß 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 ÆÄÀÏÀº µµ½ºÃ¢¿¡¼­ ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÏ¸é ¸¸µé¾î Áø´Ù.

Á¦°øÇÏ´Â ÆÄÀÏ(¾Æ·¡ ´Ù¿î·Îµå¿¡¼­ .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">
<html>
<head>
<base target="detail">
<title>TaskForce</title>
<meta name="generator" content="Namo WebEditor v3.0">
</head>

<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"
 width="300" height="330" id="test">
</object>
 </p>
</body>

</html>

À§¿¡¼­ CLSID:0D886696-C7CE-11D3-A175-08002BF17507, test.cab, version=1,0,0,1À» ÀÚ½ÅÀÌ ¸¸µç ActiveX ÄÁÆ®·Ñ¿¡ ¸ÂÃß¾î º¯°æÇÏ¸é µÈ´Ù. versionÀº ÀÛ¼ºÇÑ ActiveX ÄÁÆ®·ÑÀÇ resourceÀÇ versionÀ» È®ÀÎÇÏ¿© ÀÔ·ÂÇÑ´Ù.

 

º¸¾È ¼³Á¤

¿¹Àü¿¡´Â ÀÎÅÍ³Ý ÀͽºÇ÷ξ ÀÎÁõ ±â°üÀ¸·ÎºÎÅÍ ÀÎÁõÀ» ¹ÞÁö ¾ÊÀº ActiveX(¼­¸í ¾ÈµÈ ActiveX·Î Ç¥Çö)¸¦ È®Àο¡ ÀÇÇØ »ç¿ëÇϵµ·Ï ±âº» ¼¼ÆÃµÇ¾î ÀÖ¾ú´Âµ¥, ¿äÁòÀº ±× ¼¼ÆÃÀÌ »ç¿ë¾ÈÇÔÀ¸·Î µÇ¾î ÀÖ´Ù. µû¶ó¼­ ÀÎÅÍ³Ý ÀͽºÇ÷ξ¼­ ´ÙÀ½°ú °°ÀÌ ¼³Á¤À» ÇØÁÖ¾î¾ß¸¸ ActiveX¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

µµ±¸ ¸Þ´º -> ÀÎÅÍ³Ý ¿É¼Ç ->µÎ ¹øÂ° ÅÇ º¸¾È -> »ç¿ëÀÚ ÁöÁ¤ ¼öÁØ -> ¼­¸í ¾ÈµÈ ActiveX ÄÁÆ®·Ñ ´Ù¿î·Îµå(¸®½ºÆ®ÀÇ ¾Æ·¡ÂÊ¿¡ ÀÖÀ½)¸¦ »ç¿ë ¾ÈÇÔ¿¡¼­ È®ÀÎÀ¸·Î º¯°æ

 

´Ù¿î·Îµå

ÇÊ¿äÇÑ ½ÇÇàÆÄÀÏ ¹× ¿¹Á¦ ´Ù¿î·Îµå