ãœãããŠã§ã¢ã®äžçã§ã¯ãéçºè
ã«ãã£ãŠå¿ããããèšå€§ãªæ°ã®ããã°ã©ã ããããŸãã ãã§ã«åªãã代æ¿æ段ãããå Žåã¯è¯ãããšã§ãã ãããŠåœŒå¥³ãããã§ãªãå Žåã¯ïŒ äžéšã®äºçŽ°ãªããšã¯ããã°ã©ã ã§ã²ã©ãèŠèœãšãããå¯èœæ§ããããããã€ãã®è¿·æãªãšã©ãŒã¯äœå¹Žãã®éãŠãŒã¶ãŒã«å€å€§ãªäžäŸ¿ãããããå¯èœæ§ããããããã°ã©ã ã¯OSã®æ°ããããŒãžã§ã³ã§åäœããããšããæåŠãããããããŸããã ãœãŒã¹ã³ãŒãã¯ãããã°ã©ã ãã¯ãªãŒã³ã¢ããããããã«åžžã«å©çšã§ãããã®ã§ã¯ãããŸããã ããã°ã©ã ãåçŽã§ããã°ãçæéã§ä»£æ¿ãäœæããããšã¯é£ãããããŸããã ããããããã°ã©ã ã倧ããè€éãªå Žåããã®å Žåã¯ã©ãããã°ããã§ããããïŒ åççãªãã¬ãŒã ã¯ãŒã¯å
ã§æ©èœãæ¡åŒµããå®æããå®è¡å¯èœãã¡ã€ã«ã«æ¢ã«ãããšã©ãŒã®ã»ãšãã©ãä¿®æ£ã§ãããããæéãšãéããããŠå®å
šãªã¢ããã°ãéçºããããšã¯å¿
ãããåççã§ã¯ãããŸããã
ãã®èšäºã§ã¯ãäŒèª¬çãªã²ãŒã
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ãŠãããã
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
ãã®é¢æ°ã¯ãã²ãŒã ãã€ã³ã¹ããŒã«ããããã£ã¹ã¯ã®æåãä¿åãããŠããã¬ãžã¹ããªã«CDPathã®å€ãèŠæ±ããããšã«æ³šæããŠãã ããã ã€ãŸããã²ãŒã ã¯ã€ã³ã¹ããŒã«å
ã®ãã©ã€ãã®æåã«ã®ã¿é¢é£ä»ããããŠãããå
ã®ãã©ã€ããä»ã®ãã©ã€ãã«ããå Žåãã²ãŒã ã¯ãŸã éå§ãããŸããã ãã®å Žåã®æãç°¡åãªè§£æ±ºçã¯ã2ãã€ãã®nopæäœã§2ãã€ããããjz cd_check_failã³ãã³ãã眮ãæããããšã§ããããã«ããããã£ã¹ã¯ããã§ãã¯ããåŸããŠãããã¯åžžã«eaxã«æ»ããŸãã ãã ããã¬ãžã¹ããªã«CDPathå€ãååšããªãå Žåãé¢æ°ã¯ããã«0ãè¿ãããã«èšèšãããŠãããããããã°ã©ã ã®ç§»æ€æ§ã劚ããããŸãã ãããã£ãŠãé¢æ°å
šäœã3ã€ã®åçŽãªã³ãã³ãã«çœ®ãæããŸãã
use32
xor eaxãeax
Inc eax
retn 4
ãããã®ã³ãã³ãã®ãã·ã³ã³ãŒããååŸããã«ã¯ãFASMã圹ç«ã¡ãŸãã
fasm src.asm dst.bin
ãã®ã¢ã»ã³ãã©ã®äž»ãªå©ç¹ã¯ãããããŒãªãã§ã¯ãªãŒã³ãªãã·ã³ã³ãŒããçæã§ããããšã§ãã ååŸããŸãïŒã³ãã³ãããšã®è¡ïŒïŒ
31 C0
40
C2 04 00
ã€ãŸãããããã®6ãã€ããCDã®ååšãå€æããããã®é¢æ°ã®å
é ã«çœ®ããæ®ãã®ã³ãã³ããnopïŒã³ãŒã90hïŒã«çœ®ãæããå¿
èŠããããŸãã
éåžžã®HEXãšãã£ã¿ãŒã§ã¯ããªãã»ãã485A0hã§å§ãŸãäžèšã®ãã·ã³ã³ãŒãã眮ãæããŸãããã®åŸãã¬ãžã¹ããªã«å¿
èŠãªããŒããªãå Žåã§ããã²ãŒã ã§CDãå®è¡ããå¿
èŠã¯ãããŸããã åæã«ãè¿œå ã®ãã·ã³ã³ãŒãçšã«288ãã€ãããªãªãŒã¹ããŸãããããã¯ãå°æ¥çã«åœ¹ç«ã€ã§ãããã
ãã°ä¿®æ£
IPãããã¯ãŒã¯ã²ãŒã ã«æ¥ç¶ãããšãã²ãŒã ã«ã¯ãIPã®ãªã¹ããšããã¬ãŒã€ãŒã以åã«æ¥ç¶ããã²ãŒã ã®ååã衚瀺ãããŸãã ãã ããäœããã®çç±ã§ãIPã¢ãã¬ã¹ãå®å
šã«ä¿åãããªãããšãå€ããæåŸã®æåã®ããã€ããåãæšãŠãããŸããã åé¡ãç解ãããšã©ãŒãä¿®æ£ããå¿
èŠããããŸãã
ææ°ã®ã²ãŒã ã®IPã¢ãã¬ã¹ãã¬ãžã¹ããªã«ä¿åããã³ãŒããæ€çŽ¢ããŸãã ãã®ã²ãŒã ã§ã¯ãRecentGameNameïŒ
dããã³RecentGameAddrïŒ
dãšãã圢åŒã®ååãæã€ããŒã«æè¿ã®IPã²ãŒã ã®ãªã¹ããä¿åãããããšãããã£ãŠããŸãã IDAã䜿çšãããšããããã®è¡ãžã®3ã€ã®ãªã³ã¯ãèŠã€ãããŸãã ç®çã®ã³ãŒããã©ãã«ããããå€æããã®ã¯éåžžã«ç°¡åã§ã-ãªãã»ãã0512116hã®ã³ãŒãã§ã¯ããããã®ããŒãèšé²ãããä»ã®å Žåã¯èªã¿åããŸãã çºèŠããããã·ã³ã³ãŒãã®éšåã¯ç€ºããŸãã-çŽ50ã®åœä»€ãããããã®äžè¬çãªæå³ã¯å°ããªCã³ãŒããšããŠè¡šãããšãã§ããŸãã
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]ïŒïŒ;
}
ã¬ãžã¹ããªã«å€ãèšå®ããããã«ãã²ãŒã ã¯ç¬èªã®ã©ãããŒé¢æ°RegSetValïŒintãchar * ValueNameãchar * Dataãint DataSizeïŒã䜿çšããŸã-é¢æ°ãšãã©ã¡ãŒã¿ãŒã®ååã¯ãã¡ããçºæããããã®ã§ããã·ã³ã³ãŒãã«ã¯ãããŸããã ã芧ã®ãšãããã²ãŒã ã¯ã¬ãžã¹ããªã«ãããã¯ãŒã¯ã²ãŒã ã®ååãšåãæ°ã®IPã¢ãã¬ã¹ã®æåãä¿åããŸãã ã©ããããããã°ã©ãã¯ã¢ãã¬ã¹ãä¿åããããã«ã²ãŒã ã®ååãä¿åããããã«2è¡ãã³ããŒããŸããããstrlenåŒã³åºãã§é
åã®ååãä¿®æ£ããã®ãå¿ããŠããŸããã
ãšã©ãŒãä¿®æ£ããã«ã¯ã2ã€ã®ãªãã·ã§ã³ããããŸããæ£ããæååãstrlenã«çœ®ãæããããstrlenã®ä»£ããã«å®æ°16ãé
眮ããŸãïŒã¢ãã¬ã¹è¡ã®æ倧é·ãããšãã°ã255.255.255.255ãïŒã
strlenïŒgamename [i]ïŒã®åŒã³åºãã¯ããã·ã³ã³ãŒãã§ã¯ã©ã®ããã«èŠããŸããïŒ
_sprintfãåŒã³åºããŸãã + 0x1022CF
mov ediãebp
ãŸãã¯ecxã0FFFFFFFFh
xor eaxãeax
ESPã0Chãè¿œå
Repne scasb
ecxã§ã¯ãªã
ããã·ã¥ecx
ã³ã³ãã€ã©ãŒã¯ã³ãŒããæé©åããstrlenïŒïŒé¢æ°åŒã³åºããæå®ã®é·ãã®èšç®ã«çœ®ãæããŸããã åã®strlenïŒïŒã®åŒã³åºãã§ã¯ãåãè¡ã䜿çšãããŸããããããã§ãæé©å-æåã®åŒã³åºãæã«ãã€ã³ã¿ãŒãebpã«é
眮ãããŸãã ã€ãŸããebpã«æ£ãããã€ã³ã¿ãŒã眮ãããã®è²Žéãªãã€ãã®ãã¢ããããŸããã ãã¡ãããjmpãé¢æ°ã®å¶éã®ç¯å²å€ã«ããŠããå
ã«æ»ãããšãã§ããŸãããããã¯æãçŸããæ¹æ³ã§ã¯ãããŸããã ãããã£ãŠãæãåçŽãªããŒãžã§ã³ã®ãšã©ãŒä¿®æ£ã«ã€ããŠèª¬æããŸããåžžã«16ãã€ãã®ã¢ãã¬ã¹ãä¿åããŸãã ãããè¡ãã«ã¯ãäžèšã®ãã·ã³ã³ãŒãã次ã®ã³ãŒãã«çœ®ãæããŸãã
æ§æãã¡ã€ã«ã®ãµããŒã
ã²ãŒã ã¯ãèµ·åãããã³ã«è»¢éããªãããã«ãã¡ã€ã«ã®ã©ããã«ä¿åããã®ã«äŸ¿å©ãªå€ãã®äŸ¿å©ãªã³ãã³ãã©ã€ã³ãªãã·ã§ã³ããµããŒãããŠããŸãã ãããå®è£
ããæè¯ã®æ¹æ³ã¯ãã²ãŒã ã«å€éšã©ã€ãã©ãªãããŒããããåèµ·åæã«åæåæ©èœãå®è¡ãããããšã§ãã ãã®ãããªçµç¹ã䜿çšãããšãå®è¡å¯èœãã¡ã€ã«ãå€æŽããã«è¿œå ã®ã©ã€ãã©ãªïŒã¢ãžã¥ãŒã«ïŒãããŒãããããã¬ãžã¹ããªã§é¢æ°ãã€ã³ã¿ãŒã»ããããŠãã¬ãžã¹ããªã§ã¯ãªãã²ãŒã ã®æ§æãã¡ã€ã«ã«ãã¹ãŠã®ã²ãŒã ããŒã¿ã®ã¹ãã¬ãŒãžãæŽçãããªã©ãå€ãã®äŸ¿å©ãªãã®ãæ§æãã¡ã€ã«ã«è¿œå ã§ããŸãã ããŸããŸãªèšå®ã»ããã§è€æ°ã®ãããã¡ã€ã«ããµããŒãããããããè¿
éã«åãæ¿ããæ©èœã¯äžèŠã§ãã ããã§ã¯å§ããŸãããã
å€éšã©ã€ãã©ãªãæ¥ç¶ããæã䟿å©ãªå Žæã¯ãebueulax.dllã©ã€ãã©ãªã®ããŠã³ããŒãæ©èœã§ãããã¯ã©ã€ã»ã³ã¹å¥çŽã®è¡šç€ºãæ
åœããŸãã WinMainãèµ·åããçŽåŸã«åŒã³åºãããŸãããebueulax.dllã©ã€ãã©ãªãèªã¿èŸŒãã§EBUEulaé¢æ°ãå®è¡ããããšã«å ããŠãå€ãã®äœåãªäœæ¥ãè¡ããããconfig.dllã©ã€ãã©ãªãèªã¿èŸŒãã§LoadConfigã©ã€ãã©ãªé¢æ°ãå Žæãžã®ãã€ã³ã¿ãŒã§å®è¡ããããã«å®å
šã«æžãçŽããŸããã©ã¡ãŒã¿ãšããŠã¡ã¢ãªå
ã®ã³ãã³ãã©ã€ã³ïŒå€æŽããããïŒã
äžèšã®ã³ãŒãã¯ãããã€ãã®ã©ã€ãã©ãªé¢æ°åŒã³åºããè¡ããŸãã ãããã®ã¢ãã¬ã¹ã¯ããã·ã³ã³ãŒãã«æåã§æ¿å
¥ãããŸããã 次ã®èšäºïŒæ°ã«ããªãå Žå:)ïŒã§ã¯ãFASMã䜿çšããŠãå®è¡å¯èœãã¡ã€ã«ã«æ¿å
¥ããæºåãå®å
šã«æŽã£ãã³ãŒããçæããæ¹æ³ã説æããŸãã
éåžžã®HEXãšãã£ã¿ãŒã䜿çšããŠãå
ã®é¢æ°ïŒãªãã»ãã187400hããéå§ïŒãæ°ããé¢æ°ã«çœ®ãæããŸãã æ°ããé¢æ°ã¯å
ã®é¢æ°ãããã¯ããã«çããããæ®ãã®ãã€ãããªãã¬ãŒã·ã§ã³ã³ãŒãnop-90hã«çœ®ãæããããšãå¿ããªãã§ãã ããã è¿œå ã®ãã·ã³ã³ãŒãçšã«ããã«192ãã€ãã®ç©ºããã€ããååŸããŸããã ãã®å Žæã¯å°æ¥äœ¿çšã§ããŸãã
config.dllã¢ãžã¥ãŒã«ãæ®ãã®äœæ¥ãåŠçããŸãã C / C ++ / Delphiã§èšè¿°ã§ããŸãã ãã®ã¿ã¹ã¯ã¯ç°¡åã§ã-å®è¡å¯èœãã¡ã€ã«ããã¢ããªã±ãŒã·ã§ã³ã³ãã³ãã©ã€ã³ãžã®ãã€ã³ã¿ãŒãååŸããæ§æãã¡ã€ã«ã®èšå®ã«å¿ããŠå€æŽããŸãã ããŒãã¹ãšããŠãæ§æãã¡ã€ã«ã§ãããèšå®ããããšã«ãããè¿œå ã¢ãžã¥ãŒã«ãããŒãããæ©èœã䜿çšã§ããŸãã ãããè¡ãã«ã¯ãã²ãŒã ã®ã¢ãã¬ã¹ç©ºéã«ããŒãããå¿
èŠãããã¢ãžã¥ãŒã«ãã¡ã€ã«ã®ååã§WinAPIé¢æ°LoadLibraryãåŒã³åºãã ãã§ãã
ãŠã£ã³ããŠã¢ãŒãã®ãµããŒã
ãŠã£ã³ããŠã¢ãŒãã®ãµããŒãã¯ã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ãµã€ãããããŠã³ããŒãã§ããŸãã
ãã¹ãŠãäžåºŠã«ããã«æžãããŠãããããŸã詳现ã«æžãããŠããªãã®ãæ®å¿µã§ãã äžè¬çãªã¹ããŒã ã説æããããšããŸããã 次ã®èšäºã§ã¯ãä¿®æ£ã®å段éãåå¥ã«æ€èšããããã¢ããã€ã¹ãäžãããã§ããŸãã