ãã®èšäºã§ã¯ãäŒèª¬çãªã²ãŒã Age of Empires II ïŒãªã¢ã«ã¿ã€ã æŠç¥ïŒã®æ©èœãæ¡åŒµããäŸãšããŠãå®è¡å¯èœãã¡ã€ã«ãå€æŽããæ¹æ³ã瀺ããŸãã
ã ããç§ãã¡ã¯äœãæã£ãŠããŸãïŒ
- ã²ãŒã ã¯1999幎ã«ãªãªãŒã¹ãããæŸæ£ãŠã§ã¢ã®ç¶æ ã«ãªã£ãŠããŸããã€ãŸãã補é æ¥è ã«ãã£ãŠè²©å£²ãããããšã¯ãªããå©çãåŸãããŸããã
- 2000幎ã«ãªãªãŒã¹ãããæåŸã®æŽæ°ãæ¹èšäžå¯
- ã²ãŒã ã¯è€éãªãœãããŠã§ã¢ã®å¥œäŸã§ããããã®å®å šãªé¡äŒŒç©ã¯ã»ãšãã©åçŸã§ããŸãã
- éçºè ã«ãã£ãŠä¿®æ£ãããŠããªãè¿·æãªãšã©ãŒããããŸã
ãããããã©ã€ã»ã³ã¹å¥çŽã®çŠæ¢ãèŠãããšãªããäœããå€æŽããããšããããšãã§ããŸãã ããæããŸãããïŒ :)
å 責äºé
ãã®äœæ¥ã¯æè²ç®çã®ã¿ã§è¡ããããã®ã§ãããé©çšæ³ã®éåãæ±ãããã®ã§ã¯ãããŸããã èè ã¯ãæåºãããè³æã®éæ³äœ¿çšã«ã€ããŠäžåã®è²¬ä»»ãè² ããŸããã
ãæ£è ãã«é¢ããæ å ±
調æ»äžã®ã²ãŒã ã¯ã1997幎ãã2000幎ã«Ensemble Studiosã«ãã£ãŠéçºãããGenieãšã³ãžã³ã§äœæãããŸããã ãã®æéäžãAge of Empiresã·ãªãŒãºã®4ã€ã®ã²ãŒã ããã®ãšã³ãžã³ã§ãªãªãŒã¹ãããŸããã ããã«ãGenieã¯LucasArtsã«ãã£ãŠã©ã€ã»ã³ã¹ãããŠããã2001-2002幎ã«ãã®ãšã³ãžã³ã§2ã€ã®ã²ãŒã ããªãªãŒã¹ããŸããããã¹ã¿ãŒãŠã©ãŒãºã·ãªãŒãºã®ãã®ã§ãã ãã®æç¹ã§ããšã³ãžã³ã¯256è²ã¢ãŒãã§åäœããŠããããããã§ã«éåžžã«å€ããªã£ãŠããŸãããããã¯2000幎ã®ã²ãŒã ãšæ¯ã¹ãŠãéåžžã«æ§ããã§ãã ãã®ããããšã³ãžã³ã®æ¹è¯ãåæ¢ãããããã«åºã¥ããæ°ããã²ãŒã ã¯ãªãªãŒã¹ãããŸããã§ããã
Genieã²ãŒã ãšã³ãžã³ã¯ããã¹ãŠã®ã²ãŒã ã°ã©ãã£ãã¯ã¹ãé³æ¥œããããŠæãéèŠãªãã®-ãŠãããã®ãªã¹ããšãã®ç¹æ§-ãå€éšãã¡ã€ã«ããããŠã³ããŒãããŸãã ã€ãŸããã»ãšãã©ã®éšåã§ãã®ãšã³ãžã³ã«åºã¥ããã¹ãŠã®ã²ãŒã ã«ã¯éåžžã«é¡äŒŒããå®è¡å¯èœãã¡ã€ã«ãããã1ã€ã®ã²ãŒã ã®ã»ãšãã©ãã¹ãŠã®å€æŽã¯åé¡ãªãä»ã®ã²ãŒã ã«ç°¡åã«ç§»æ€ã§ããŸãã
äœãéæãããã§ããïŒ
1. CDãã§ãã¯ãç¡å¹ã«ããŸã
æè¿ã®ã©ãããããïŒãããããã¯ãªã©ïŒã§ã¯ãçµã¿èŸŒã¿ã®CDãã©ã€ãããªããŠãçãããããŸããã ããã«ãã²ãŒã ã¯éåžžã«å€ããããå ã®CDã®èªã¿åããåæ¢ãã誰ãã倱ãããšãããããŸãã ãã®çµæãå®å šã«åæ³çãªã²ãŒã ã®ã³ããŒã®ææè ã¯ãã²ãŒã ãå®è¡ããèœåã倱ããŸãã ãããã£ãŠãããããããã£ã¹ã¯ãªãã§ã²ãŒã ãå®è¡ããŠãã ããã2.ãŠã£ã³ããŠã¢ãŒããµããŒããè¿œå ãã
Age of Empiresã¯ã800Ã600ã1024Ã768ãããã³1280Ã1024ã®3ã€ã®åºå®è§£å床ããµããŒãããŠããŸãã ãã®ãããªè§£å床ã§ã¯ãã¯ã€ãã¹ã¯ãªãŒã³ã¢ãã¿ãŒã®ç»åãåŒã䌞ã°ãããŠèŠãããããäžå¿«æãçããŸãã ã²ãŒã ã«æ°ããæš©éã®ãµããŒããè¿œå ã§ããŸãããã²ãŒã ã¯è§£å床ããšã«ç¬èªã®ã€ã³ã¿ãŒãã§ã€ã¹ã°ã©ãã£ãã¯ã䜿çšãããããããããã®ãŸãŸã«ããŠãä»ã®ãšããã²ãŒã ã«ãŠã£ã³ããŠã¢ãŒããè¿œå ããããšã«å¶éããŠã¿ãŸãããã3.æ§æãã¡ã€ã«ã®ãµããŒããè¿œå ããŸã
ããçš®ã®ã·ã¹ãã ã²ãŒã ãªãã·ã§ã³ãæå¹ã«ããã«ã¯ãããã°ã©ã ãèµ·åãããã³ã«ã³ãã³ãã©ã€ã³ããéä¿¡ããå¿ èŠããããŸãã ãã¹ãŠã®ãã©ã¡ãŒã¿ãŒãã·ã§ãŒãã«ããã«å ¥ããããšãã§ããŸãããã²ãŒã ãå¥ã®ãã£ã¬ã¯ããªã«ç§»åãããšãã·ã§ãŒãã«ããã¯æ©èœããªããªããŸãã 解決çã¯ãæ§æãã¡ã€ã«ã®ãµããŒããè¿œå ããããšã§ãã4.ã²ãŒã ãããŒã¿ãã«ã«ãã
ã²ãŒã ã¯ããŒã¿ãã«ã§ã¯ãããŸããã å¥ã®ã³ã³ãã¥ãŒã¿ãŒã§å®è¡ããã«ã¯ãã²ãŒã ãã¡ã€ã«ãã³ããŒããã ãã§ã¯äžååã§ããã²ãŒã ã®ã€ã³ã¹ããŒã«ããã»ã¹å šäœãå®è¡ããå¿ èŠããããŸãã å€ä»ããã©ã€ãã®åºç¯ãªé åžã«é¢é£ããŠããã®ããããã£ãã²ãŒã ã«ä»äžããããšæããŸãã5.æ¢ç¥ã®ãšã©ãŒãä¿®æ£
ã²ãŒã ã®ã€ã³ã¿ãŒãã§ãŒã¹ã«äžå¿«ãªãšã©ãŒããããŸãã ããšãã°ãIPã²ãŒã ã«æ¥ç¶ããããã®ãã€ã¢ãã°ã§ã¯ã以åã«å ¥åããã¢ãã¬ã¹ã¯æè¿ã®ã²ãŒã ã®ãªã¹ãã§åãæšãŠãããŸããããã«ãããã¯ã€ãã¯æ¥ç¶æ©èœå šäœã®å©äŸ¿æ§ããŒãã«ãªããæ¯åãµãŒããŒã¢ãã¬ã¹ãæåã§å ¥åããå¿ èŠããããŸããããã«ã¯äœãå¿ èŠã§ããïŒ
IDA Proã¯ããªããŒã¹ãšã³ãžãã¢ãªã³ã°ã«åºã䜿çšãããŠããã€ã³ã¿ã©ã¯ãã£ããªéã¢ã»ã³ãã©ãŒããã³ãããã¬ãŒã§ãã åå¿è ã§ãç解ã§ãããããŒãã£ãŒããäœæã§ããŸãã ãã¹ãŠã®åœŒã®åŒ·ã¿ã¯ããŠãŒã¶ãŒãšã®ã€ã³ã¿ã©ã¯ãã£ããªçžäºäœçšã«è¡šããŠããŸãã èªååæåŸããŠãŒã¶ãŒã¯é¢æ°ãå€æ°ã«æå³ã®ããååãä»ããããã³ãŒãã«ã³ã¡ã³ããä»ãããã§ããŸãã x86ã¢ã»ã³ããªèšèªãå°ãç解ããã°ãããã«ããã°ã©ã ã®èª¿æ»ãéå§ã§ããŸãã
Flat Assemblerã¯ãããªãŒãŠã§ã¢ã®ãã«ããã¹ã¢ã»ã³ãã©ã§ãã FASMã¯ãµã€ãºãå°ãããã³ã³ãã€ã«é床ãéåžžã«éããå€ãã®ã«ãŒãã³ã¿ã¹ã¯ãèªååã§ããè±å¯ã§å€§å®¹éã®ãã¯ãæ§æãåããŠããŸãã 䟿å©ãªæ©èœã®1ã€ã¯ãããããŒãªã©ã®ãªãçŽç²ãªãã·ã³ã³ãŒãã®çæã§ãã ãããã¯ãã¹ãŠãã¢ã»ã³ãã©ãŒã€ã³ãµãŒãã®çæã«åœ¹ç«ã¡ãŸãã
Hexplorerã¯ç¡æã®HEXãšãã£ã¿ãŒã§ãã ã·ã³ãã«ãªx86éã¢ã»ã³ãã©ãŒãåããŠãããããå®è¡å¯èœãã¡ã€ã«å ãç°¡åã«ããã²ãŒãã§ããŸãã ãµã€ãºãå€æŽããã«ãã€ããªãã¡ã€ã«ãæåã§å€æŽããããã«çŽæ¥äœ¿çšãããŸãã
ããã§ã¯å§ããŸãããã
CDãã§ãã¯ãç¡å¹ã«ãã
CDãå©çšå¯èœãã©ããã確èªããã³ãŒããèŠã€ããŠãã ãããIDAããæäŒãããŸãã ããã¯éåžžã«ã·ã³ãã«ã§ããããšãå€æããŸããã 4485A0hïŒããŒã¹ã¢ãã¬ã¹400000hãã€ãŸãç©ççã«ãã¡ã€ã«å ã«ããããã·ã³ã³ãŒãã¯485A0hã«ããïŒã§CDååšãã§ãã¯æ©èœãèŠã€ãããšããã©ã€ãã«é¢ããæ å ±ãååŸããããã«äœ¿çšãããGetDriveTypeAããã³GetVolumeInformationAé¢æ°ã®åŒã³åºãããã¬ãŒã¹ããã ãã§ååã§ãã eaxãŠãããã
ãã®é¢æ°ã¯ãã²ãŒã ãã€ã³ã¹ããŒã«ããããã£ã¹ã¯ã®æåãä¿åãããŠããã¬ãžã¹ããªã«CDPathã®å€ãèŠæ±ããããšã«æ³šæããŠãã ããã ã€ãŸããã²ãŒã ã¯ã€ã³ã¹ããŒã«å ã®ãã©ã€ãã®æåã«ã®ã¿é¢é£ä»ããããŠãããå ã®ãã©ã€ããä»ã®ãã©ã€ãã«ããå Žåãã²ãŒã ã¯ãŸã éå§ãããŸããã ãã®å Žåã®æãç°¡åãªè§£æ±ºçã¯ã2ãã€ãã®nopæäœã§2ãã€ããããjz cd_check_failã³ãã³ãã眮ãæããããšã§ããããã«ããããã£ã¹ã¯ããã§ãã¯ããåŸããŠãããã¯åžžã«eaxã«æ»ããŸãã ãã ããã¬ãžã¹ããªã«CDPathå€ãååšããªãå Žåãé¢æ°ã¯ããã«0ãè¿ãããã«èšèšãããŠãããããããã°ã©ã ã®ç§»æ€æ§ã劚ããããŸãã ãããã£ãŠãé¢æ°å šäœã3ã€ã®åçŽãªã³ãã³ãã«çœ®ãæããŸããcheckcd proc near sub espã214h ebxãããã·ã¥ ããã·ã¥ESI ; ... ; å€ãã®ãã§ã㯠; ... ãã¹ãeaxãeax jz cd_check_fail cd_check_okïŒ ããããšã¹ mov alã1 ãããEBX ESPã214hãè¿œå retn 4 cd_check_failïŒ ããããšã¹ ãããEBX ESPã214hãè¿œå retn 4 checkcd endp
ãããã®ã³ãã³ãã®ãã·ã³ã³ãŒããååŸããã«ã¯ãFASMã圹ç«ã¡ãŸããuse32 xor eaxãeax Inc eax retn 4
ãã®ã¢ã»ã³ãã©ã®äž»ãªå©ç¹ã¯ãããããŒãªãã§ã¯ãªãŒã³ãªãã·ã³ã³ãŒããçæã§ããããšã§ãã ååŸããŸãïŒã³ãã³ãããšã®è¡ïŒïŒfasm src.asm dst.bin
ã€ãŸãããããã®6ãã€ããCDã®ååšãå€æããããã®é¢æ°ã®å é ã«çœ®ããæ®ãã®ã³ãã³ããnopïŒã³ãŒã90hïŒã«çœ®ãæããå¿ èŠããããŸãã31 C0 40 C2 04 00
ãœãŒã¹ãã·ã³ã³ãŒã | åä¿¡ãããã·ã³ã³ãŒã |
---|---|
8B 44 24 04 81 EC 14 02 00 00 85 C0 53 56 8B D9 ... | 33 C0 40 C2 04 00 90 90 90 90 90 90 90 90 90 90 90 ... |
ãã°ä¿®æ£
IPãããã¯ãŒã¯ã²ãŒã ã«æ¥ç¶ãããšãã²ãŒã ã«ã¯ãIPã®ãªã¹ããšããã¬ãŒã€ãŒã以åã«æ¥ç¶ããã²ãŒã ã®ååã衚瀺ãããŸãã ãã ããäœããã®çç±ã§ãIPã¢ãã¬ã¹ãå®å šã«ä¿åãããªãããšãå€ããæåŸã®æåã®ããã€ããåãæšãŠãããŸããã åé¡ãç解ãããšã©ãŒãä¿®æ£ããå¿ èŠããããŸãã
ææ°ã®ã²ãŒã ã®IPã¢ãã¬ã¹ãã¬ãžã¹ããªã«ä¿åããã³ãŒããæ€çŽ¢ããŸãã ãã®ã²ãŒã ã§ã¯ãRecentGameNameïŒ dããã³RecentGameAddrïŒ dãšãã圢åŒã®ååãæã€ããŒã«æè¿ã®IPã²ãŒã ã®ãªã¹ããä¿åãããããšãããã£ãŠããŸãã IDAã䜿çšãããšããããã®è¡ãžã®3ã€ã®ãªã³ã¯ãèŠã€ãããŸãã ç®çã®ã³ãŒããã©ãã«ããããå€æããã®ã¯éåžžã«ç°¡åã§ã-ãªãã»ãã0512116hã®ã³ãŒãã§ã¯ããããã®ããŒãèšé²ãããä»ã®å Žåã¯èªã¿åããŸãã çºèŠããããã·ã³ã³ãŒãã®éšåã¯ç€ºããŸãã-çŽ50ã®åœä»€ãããããã®äžè¬çãªæå³ã¯å°ããªCã³ãŒããšããŠè¡šãããšãã§ããŸãã
ã¬ãžã¹ããªã«å€ãèšå®ããããã«ãã²ãŒã ã¯ç¬èªã®ã©ãããŒé¢æ°RegSetValïŒintãchar * ValueNameãchar * Dataãint DataSizeïŒã䜿çšããŸã-é¢æ°ãšãã©ã¡ãŒã¿ãŒã®ååã¯ãã¡ããçºæããããã®ã§ããã·ã³ã³ãŒãã«ã¯ãããŸããã ã芧ã®ãšãããã²ãŒã ã¯ã¬ãžã¹ããªã«ãããã¯ãŒã¯ã²ãŒã ã®ååãšåãæ°ã®IPã¢ãã¬ã¹ã®æåãä¿åããŸãã ã©ããããããã°ã©ãã¯ã¢ãã¬ã¹ãä¿åããããã«ã²ãŒã ã®ååãä¿åããããã«2è¡ãã³ããŒããŸããããstrlenåŒã³åºãã§é åã®ååãä¿®æ£ããã®ãå¿ããŠããŸãããforïŒint i = 0; i <count; i ++ïŒ { char *ããŒå; sprintfïŒããŒåããRecentGameNameïŒ dããiïŒ; RegSetValïŒ1ãããŒåãã²ãŒã å[i]ãstrlenïŒã²ãŒã å[i]ïŒïŒ; sprintfïŒããŒåããRecentGameAddrïŒ dããiïŒ; RegSetValïŒ1ãããŒåãgameaddr [i]ãstrlenïŒgamename [i]ïŒïŒ; }
ãšã©ãŒãä¿®æ£ããã«ã¯ã2ã€ã®ãªãã·ã§ã³ããããŸããæ£ããæååãstrlenã«çœ®ãæããããstrlenã®ä»£ããã«å®æ°16ãé 眮ããŸãïŒã¢ãã¬ã¹è¡ã®æ倧é·ãããšãã°ã255.255.255.255ãïŒã
strlenïŒgamename [i]ïŒã®åŒã³åºãã¯ããã·ã³ã³ãŒãã§ã¯ã©ã®ããã«èŠããŸããïŒ
ã³ã³ãã€ã©ãŒã¯ã³ãŒããæé©åããstrlenïŒïŒé¢æ°åŒã³åºããæå®ã®é·ãã®èšç®ã«çœ®ãæããŸããã åã®strlenïŒïŒã®åŒã³åºãã§ã¯ãåãè¡ã䜿çšãããŸããããããã§ãæé©å-æåã®åŒã³åºãæã«ãã€ã³ã¿ãŒãebpã«é 眮ãããŸãã ã€ãŸããebpã«æ£ãããã€ã³ã¿ãŒã眮ãããã®è²Žéãªãã€ãã®ãã¢ããããŸããã ãã¡ãããjmpãé¢æ°ã®å¶éã®ç¯å²å€ã«ããŠããå ã«æ»ãããšãã§ããŸãããããã¯æãçŸããæ¹æ³ã§ã¯ãããŸããã ãããã£ãŠãæãåçŽãªããŒãžã§ã³ã®ãšã©ãŒä¿®æ£ã«ã€ããŠèª¬æããŸããåžžã«16ãã€ãã®ã¢ãã¬ã¹ãä¿åããŸãã ãããè¡ãã«ã¯ãäžèšã®ãã·ã³ã³ãŒãã次ã®ã³ãŒãã«çœ®ãæããŸãã_sprintfãåŒã³åºããŸãã + 0x1022CF mov ediãebp ãŸãã¯ecxã0FFFFFFFFh xor eaxãeax ESPã0Chãè¿œå Repne scasb ecxã§ã¯ãªã ããã·ã¥ecx
ã¢ã»ã³ããªã³ãŒã | æ©æ¢°ã³ãŒã |
---|---|
_sprintfãåŒã³åºããŸãã + 0x1022CF ESPã0Chãè¿œå mov ecxã0Fh | E8 CF 22 10 00 83 C4 0C B9 0F 00 00 00 |
æ§æãã¡ã€ã«ã®ãµããŒã
ã²ãŒã ã¯ãèµ·åãããã³ã«è»¢éããªãããã«ãã¡ã€ã«ã®ã©ããã«ä¿åããã®ã«äŸ¿å©ãªå€ãã®äŸ¿å©ãªã³ãã³ãã©ã€ã³ãªãã·ã§ã³ããµããŒãããŠããŸãã ãããå®è£ ããæè¯ã®æ¹æ³ã¯ãã²ãŒã ã«å€éšã©ã€ãã©ãªãããŒããããåèµ·åæã«åæåæ©èœãå®è¡ãããããšã§ãã ãã®ãããªçµç¹ã䜿çšãããšãå®è¡å¯èœãã¡ã€ã«ãå€æŽããã«è¿œå ã®ã©ã€ãã©ãªïŒã¢ãžã¥ãŒã«ïŒãããŒãããããã¬ãžã¹ããªã§é¢æ°ãã€ã³ã¿ãŒã»ããããŠãã¬ãžã¹ããªã§ã¯ãªãã²ãŒã ã®æ§æãã¡ã€ã«ã«ãã¹ãŠã®ã²ãŒã ããŒã¿ã®ã¹ãã¬ãŒãžãæŽçãããªã©ãå€ãã®äŸ¿å©ãªãã®ãæ§æãã¡ã€ã«ã«è¿œå ã§ããŸãã ããŸããŸãªèšå®ã»ããã§è€æ°ã®ãããã¡ã€ã«ããµããŒãããããããè¿ éã«åãæ¿ããæ©èœã¯äžèŠã§ãã ããã§ã¯å§ããŸãããã
å€éšã©ã€ãã©ãªãæ¥ç¶ããæã䟿å©ãªå Žæã¯ãebueulax.dllã©ã€ãã©ãªã®ããŠã³ããŒãæ©èœã§ãããã¯ã©ã€ã»ã³ã¹å¥çŽã®è¡šç€ºãæ åœããŸãã WinMainãèµ·åããçŽåŸã«åŒã³åºãããŸãããebueulax.dllã©ã€ãã©ãªãèªã¿èŸŒãã§EBUEulaé¢æ°ãå®è¡ããããšã«å ããŠãå€ãã®äœåãªäœæ¥ãè¡ããããconfig.dllã©ã€ãã©ãªãèªã¿èŸŒãã§LoadConfigã©ã€ãã©ãªé¢æ°ãå Žæãžã®ãã€ã³ã¿ãŒã§å®è¡ããããã«å®å šã«æžãçŽããŸããã©ã¡ãŒã¿ãšããŠã¡ã¢ãªå ã®ã³ãã³ãã©ã€ã³ïŒå€æŽããããïŒã
ã¢ã»ã³ããªã³ãŒã | æ©æ¢°ã³ãŒã |
---|---|
LoadConfigLib proc near sub espã208h ããã·ã¥ESI ããã·ã¥ãšã㣠ebxãããã·ã¥ ããã·ã¥ecx edxãããã·ã¥ mov esiãdsïŒLoadLibraryA 67B8C4hãæŒããŸãã lpLibFileName esiãåŒã³åºããŸãã ããŒãã©ã€ãã©ãª mov ebxãeax ãã¹ãebxãebx jz short loc_587443 ããã·ã¥ãªãã»ããaLoadconfig ebxãããã·ã¥ããŸãã hModule åŒã³åºãdsïŒGetProcAddress mov ediãeax ãã¹ããšãã£ãšã㣠jz short loc_58743C mov eaxã[esp + 220h]; **åŒæ° ããã·ã¥eax ãšãã£ã«é»è©± jmp short loc_587443 loc_58743CïŒ ebxãããã·ã¥ããŸãã hLibModule åŒã³åºãdsïŒFreeLibrary loc_587443ïŒ ãããEDX ãããECX ãããEBX ããããšã㣠ããããšã¹ ESPã208hãè¿œå retn Loadconfiglib endp | 81 EC 08 02 00 00 56 57 53 51 52 8B 35 E0 51 63 00 68 C4 B8 67 00 Ff d6 8B D8 85 DB 74 25 68 B8 B8 67 00 53 FF 15 C8 50 63 00 8B F8 85 FF 74 0C 8B 84 24 20 02 00 00 50 Ff d7 EB 07 53 FF 15 20 51 63 00 5A 59 5B 5F 5E 81 C4 08 02 00 00 C3 |
éåžžã®HEXãšãã£ã¿ãŒã䜿çšããŠãå ã®é¢æ°ïŒãªãã»ãã187400hããéå§ïŒãæ°ããé¢æ°ã«çœ®ãæããŸãã æ°ããé¢æ°ã¯å ã®é¢æ°ãããã¯ããã«çããããæ®ãã®ãã€ãããªãã¬ãŒã·ã§ã³ã³ãŒãnop-90hã«çœ®ãæããããšãå¿ããªãã§ãã ããã è¿œå ã®ãã·ã³ã³ãŒãçšã«ããã«192ãã€ãã®ç©ºããã€ããååŸããŸããã ãã®å Žæã¯å°æ¥äœ¿çšã§ããŸãã
ãœãŒã¹ãã·ã³ã³ãŒã | åä¿¡ãããã·ã³ã³ãŒã |
---|---|
81 EC 08 02 00 00 53 56 8B 35 E0 51 63 00 57 68 CC B8 67 00 FF D6 8B D8 85 DB 75 0A 5F 5E 5B 81 C4 08 02 00 00 C3 68 C4 B8 67 00 53 FF 15 C8 50 63 00 8B F8 85 FF 75 13 53 FF 15 20 51 63 00 5F 5E 33 C0 5B 81 C4 08 02 00 00 C3 8B 84 24 18 02 00 00 50 FF D6 8B F0 85 ... | 81 EC 08 02 00 00 56 57 53 51 52 8B 35 E0 51 63 00 68 C4 B8 67 00 FF D6 8B D8 85 DB 74 25 68 B8 B8 67 00 53 FF 15 C8 50 63 00 8B F8 85 FF 74 0C 8B 84 24 20 02 00 00 50 FF D7 EB 07 53 FF 15 20 51 63 00 5A 59 5B 5F 5E 81 C4 08 02 00 00 C3 90 90 90 90 90 90 90 90 90 90 ... |
ãŠã£ã³ããŠã¢ãŒãã®ãµããŒã
ãŠã£ã³ããŠã¢ãŒãã®ãµããŒãã¯ãconfig.dllã«ãã£ãŠããŒããããç¬ç«ããã¢ãžã¥ãŒã«wndmode.dllãšããŠç·šæãããŸãã ãã®ã¢ãžã¥ãŒã«ã¯ããã¹ãŠã®DirectDrawåŒã³åºããã€ã³ã¿ãŒã»ããããããã°ã©ã ããŠã£ã³ããŠå ã§å®è¡ããããã«ãã©ã¡ãŒã¿ãŒãå€æŽããŸãããã®åŸãå ã®DirectDrawé¢æ°ã«å¶åŸ¡ã移ããŸãã
ããã¯ãã€ã³ã¿ãŒã»ãããããé¢æ°ãå€æŽããããšã§å®è£ ãããŸãã ã€ã³ã¿ãŒã»ãããããé¢æ°ã®æåã®æ°ãã€ãã¯ãã€ã³ã¿ãŒã»ããé¢æ°ã³ãã³ããžã®ç¡æ¡ä»¶ãžã£ã³ãã«çœ®ãæããããŸãã ãã®ããªãã¯ã¯WinNTã«å®è£ ããã®ã¯éåžžã«ç°¡åã§ãïŒWinNTã¯åããã»ã¹ã®ã·ã¹ãã ã©ã€ãã©ãªã€ã¡ãŒãžã®ç¬èªã®ã³ããŒãäœæããããïŒ ïŒ
wndmode.dllã¢ãžã¥ãŒã«èªäœã¯ãd3dhook.dllã©ã€ãã©ãªã®é«åºŠã«ä¿®æ£ãããããŒãžã§ã³ã§ãããå®è£ ãããŠããŸãã
- D3D Windowerããã°ã©ã ããå®å šã«ç¬ç«
- èšå®ã¯wndmode.iniãã¡ã€ã«ã®[WINDOWMODE]ã»ã¯ã·ã§ã³ããããŒããããŸã
- Genieäºææ§ã®ããã«çœ®ãæããããããã©ã«ãèšå®
- ãŠã£ã³ããŠã®åšå²ã®ãã¬ãŒã ããªã³/ãªãããå¢çç·ãã©ã¡ãŒã¿ãŒãè¿œå ããŸãã
- ã²ãŒã ã®è§£å床ãã·ã¹ãã ã®è§£å床ãšçããå Žåããã¬ãŒã ã¯èªåçã«åé€ãããŸã
ããã§ããã®ã©ã€ãã©ãªã¯ãã»ãŒãã¹ãŠã®DirectDrawã²ãŒã ã«çµ±åããŠãŠã£ã³ããŠã²ãŒã ã«ããæºåãã§ããŸããã ã ãã誰ããä»ã®ã²ãŒã ãä¿®æ£ãããªããããã¯éå®ããŸãã
ã©ãããã®ïŒ
å€æŽã«ã€ããŠã¯å€ãã®äœæ¥ãè¡ãããŸããããããã§ã¯ã»ãã®ããããªå€æŽã«ã€ããŠãèæ ®ãããããããããªå€æŽã®èª¬æã«ãå€ãã®åŽåãå¿ èŠã§ãã å¿ èŠã«å¿ããŠãå®æããå€æŽæžã¿ãã¡ã€ã«ãããŠã³ããŒãããŠãIDAã®æ®ãã®å€æŽã確èªã§ããŸãã
äžè¬çã«ã次ã®çµæãéæããããšãã§ããŸããã
- ebueulax.dllïŒã©ã€ã»ã³ã¹ãããã³ã°ïŒã®ä»£ããã«ãconfig.dllãèªã¿èŸŒãŸããŸãïŒæ§æãã¡ã€ã«ã®ãµããŒãïŒ
- æäœã®ãŠã£ã³ããŠã¢ãŒãïŒã¢ãžã¥ãŒã«wndmode.dll-å€æŽãããd3dhook.dllïŒ
- ã«ãŒãœã«é¢æ°ã³ãŒãã¯ããŠã£ã³ããŠã¢ãŒãã§ã®åäœã«é©åããŠããŸãïŒã²ãŒã ããŠã£ã³ããŠã§åäœããããã«èšèšãããŠããªããšããäºå®ã«èµ·å ããå€ãã®äžå¿«ãªåé¡ã解決ããŸãïŒ
- ã²ãŒã ã¯æåã«ã€ã³ã¹ããŒã«ããããšãªãæ£åžžã«åäœããŸãïŒã²ãŒã ãã¡ã€ã«ãã³ããŒããã ãã§ãïŒãã²ãŒã ã«ã¯CDã¯å¿ èŠãããŸããã
- å ã®ã²ãŒã ã®ãã°ã¯ãIPã§ãã¬ã€ãããšãã«æè¿ã®ã²ãŒã ã®ãªã¹ãã§IPã¢ãã¬ã¹ãåæããããšãã«ä¿®æ£ãããŸããã
- ãOne Playerãããã³ãEditorãã¡ãã¥ãŒã®ãã¿ã³ã®é åºãšé 眮ãå€æŽããããOne Playerãã¡ãã¥ãŒã®ãã¿ã³ã®éžæã«é¢ãããã°ãä¿®æ£ãããŸããïŒã³ãŒãã®å°è±¡çãªã»ã¯ã·ã§ã³ãæžãçŽãããŸããïŒ
- å®è¡å¯èœãã¡ã€ã«ã¯ãage2_x1ãŸãã¯ã«ãŒãããã ãã§ãªããä»»æã®ãµããã£ã¬ã¯ããªããèµ·åã§ããŸãïŒWinMainããã·ãŒãžã£ã®å§ãŸãã¯ã»ãŒå®å šã«æžãæããããŸãïŒ
- empires2.exeãã¡ã€ã«ã®ååšã®ç¢ºèªã¯ãããŸããïŒåé€ã§ããŸãïŒ
- MIDIMUSICãã©ã¡ãŒã¿ãŒããªã³ã®å Žåãæãç³ãã åŸãã¡ããã£ãŒãåã³éå§ãããŸãïŒæ¥œåšã¯ãªã»ãããããŸããïŒ
ãã¹ãŠã®å€æŽã¯å®å®ããŠæ©èœããé害ã¯èŠã€ãããŸããã§ããã ãŠã£ã³ããŠã¢ãŒãã§ã¯ãã²ãŒã ã«ãŒãœã«ãã²ãŒã ãŠã£ã³ããŠã®é åãé¢ããŠæ»ã£ãåŸã«ã²ãŒã ã«ãŒãœã«ãšåæã«ã·ã¹ãã ã«ãŒãœã«ã衚瀺ããåé¡ã¯æªè§£æ±ºã®ãŸãŸã§ãã ãã ããããã¯ãã²ãŒã ãšã³ãžã³ããŠã£ã³ããŠå ã§å®è¡ãããããã«èšèšãããŠããããã«ãŒãœã«ãã²ãŒã ãŠã£ã³ããŠãé¢ãããšãã«ãªãã·ã§ã³ãæäŸããªããšããäºå®ã®ã¿ã«èµ·å ããŸãã å€æŽã®æ¬¡ã®ããŒãžã§ã³ã§ã¯ãããã¯ä¿®æ£ãããŸãã
ãã®å€æŽã®éçºã«å¯Ÿããè«ççãªçµè«ã¯ãé©åãªã²ãŒã ãµãŒããŒãäœæããŠã²ãŒã ã«ã²ãŒã ã«ãŒã ãµããŒããå°å ¥ããããšã§ããããã¯ããŸãŒã³ã®å ¬åŒã®Age of Empiresã²ãŒã ã«ãŒã ãæ°å¹Žåã«ééãããããã§ãã ããã¯ãã¹ãŠããœãŒã¹ã³ãŒããæå ã«æããã«å®è£ ããããšãå¯èœã§ãã
ãããã«
ç§ãããããšãå®éã«è©ŠããŠã¿ããå Žåã¯ã Age of Empires IIïŒThe ConquerorsïŒLite EditionïŒ ïŒåèš94MBïŒãç§ã®Webãµã€ãããããŠã³ããŒãã§ããŸãã
ãã¹ãŠãäžåºŠã«ããã«æžãããŠãããããŸã詳现ã«æžãããŠããªãã®ãæ®å¿µã§ãã äžè¬çãªã¹ããŒã ã説æããããšããŸããã 次ã®èšäºã§ã¯ãä¿®æ£ã®å段éãåå¥ã«æ€èšããããã¢ããã€ã¹ãäžãããã§ããŸãã