ãŸããã

ç§ã¯é·ãéäœãç 究ããŠããªããããã°åŒéããã ãããããã®åŸãç¹å®ã®ãµãŒã¯ã«ã§ããç¥ãããŠããå€ãã®PE_Kill'aã®æ¬¡ã®ã¯ã©ããã«æéãåããŸããã ãªããªã CRACKL @ B Contest 2010ã®ãã¬ãŒã ã¯ãŒã¯ã§åœŒã®ä»¥åã®ä»äºãããŸããŸè§£æ±ºããŸããããããã¯éåžžã«èå³æ·±ããã®ã§ããã
ã«ããã®äžã§ããªããåŸ ã£ãŠããã®ã¯ïŒCRC32åœç©ãRC4ã®ãã«ãŒãããŒãRSAã®å æ°å解ãMD4ã®ã³ãªãžã§ã³ã®äœ¿çšãåãããã·ã¥ãæã€2ã€ã®ç°ãªãã¡ãã»ãŒãžã®çæã§ãã ããããã¹ãŠãšãããã«å€ããåæžãããŠããŸãã
ãã®èšäºã¯åå¿è åãã§ã¯ãããŸããããã¹ãŠã®ã¢ã¯ã·ã§ã³ãåãã€ããã¯ãããŸããã ãã®ç®çã¯ãkeygenãäœæããããšã§ãã
ã¯ããã«
äžèšã®ããã«ãç§ã¯é·ãéã«ãããããŸããã§ããã ãããã£ãŠããã¹ã€ã³ã°ãã«æéãè²»ããå¿ èŠããããŸããã ãŸããããŒã«ããããéšåçã«åŸ©å ããŸãã OllyDbgãšIDAã®ã¿ãæ®ã£ãŠããŸãã åŸè ã¯äœ¿çšãããŸããã ã³ã³ãã¹ãã®åœŒã®ä»äºãæãåºããŠãç§ã¯ãã€ããããè³ã掻æ§åãããé¢çœããã®ãæåŸ ããŠããŸããã ãããŠãç§ã¯ééã£ãŠããŸããã§ããã
æŠãã«
ç¥èœ
ãŸãã ãŸã第äžã«ãcrackmeèªäœãå¿ èŠã§ã ã Ollydbgã§éããšãUPXã§å§çž®ãããŠããããšãããããŸãã æå°ã®æµæã®ãã¹ãåãã QUnpackã§ããã解åããŸãã ã ããã«ãé·å¹Žã«ããã£ãŠéçºããç§ã®ææ³ã«åŸã£ãŠãããŸããŸãªæå·åã¢ã«ãŽãªãºã ãããã·ã¥ã¢ã«ãŽãªãºã ãããã³16é²æ°ã¢ã«ãŽãªãºã ã®äœ¿çšã«ã€ããŠåæããããšã«ããŸããã ãããè¡ãããã«ã SnD Reverser Toolã䜿çšããŸãããããã¯CRC32 ã RC4 ã MD4ãèŠã€ããããšãç¥ãããŠãããŸããã ããããã¹ãŠç¥ã£ãã®ã§ãããã«ã¢ã¯ãã£ããªã¢ã¯ã·ã§ã³ãéå§ã§ããŸãã
æµã®å¢çç·ã®åŸã
ãããã£ãŠãéçåæãçµäºããããåçåæã«é²ã¿ãŸãã åæ¹èšå ¥ããŠãã ããã ç¹°ãè¿ããŸãããOllyDbgïŒä»¥é-olkaïŒã§crackmeïŒä»¥é-ã¯ã©ãã¯ïŒãéããŸãããå ã®ããã±ãŒãžã§ã¯ãªããé梱ããŸãã Ctrl + GãæŒããŠGetDlgItemTextAãå ¥åããŸãããããã£ãŠããã®é¢æ°ã®å é ã«ç§»åãããã¬ãŒã¯ãã€ã³ããèšå®ããŠéå§ããŸãã ãã¹ãã®ååãšç¹å®ã®ã©ã€ã»ã³ã¹ãå ¥åãã[確èª]ãã¯ãªãã¯ããŸãã ããã§ããã¬ãŒã¯ãã€ã³ãã§éå§ããAlt + F9ãæŒããŠãé¢æ°ãåŒã³åºããŠååãååŸããçŽåŸã«ã¯ã©ãã¯ã®ã³ãŒãã«å ¥ããŸãã

ãã®åŸãååã®é·ãã®2ã€ã®ãã§ãã¯ããããŸããæåã¯ååãå ¥åãããããšã§ããã2çªç®ã¯ç¡æå³ã§ãã 2çªç®ã®ãã§ãã¯ã§ã¯ãååã®é·ãã50ã®å Žåãååãé·ãããšãéç¥ãããŠçµäºããŸãã ãªãç¡æå³ãªã®ããååã次ã®ããã«ååŸããããã
GetDlgItemTextA(hDlg, IDC_NAME, szName, 50);
ãããŠãããã¯ãæ倧é·ã50æå以äžã®æååã§ããããšãæå³ããŸãã50çªç®ã®æåã¯è¡æ«ã®æåã§ãããè¡ã49æåãè¶ ããããšã¯ãããŸããã åæ§ã«ãã©ã€ã»ã³ã¹ããããŸãããããã¯éèŠã§ã¯ãããŸããã çµå±ã®ãšããããã¹ãŠã®æãèå³æ·±ãããšãèµ·ãã倧äºãªæ©èœãæ¥ãã®ã§ãç§ã¯ãããCheckLicenseãšåŒã³ãŸããã
æµã®trenchã§
ãããŠãç§ãã¡ã¯å¿ã®äžã«ããŸãã æåã®2ã€ã®æ©èœã¯ã倧æåã®ã©ã€ã»ã³ã¹æåã®ç¿»èš³ããããŠã©ã€ã»ã³ã¹ã®ãã€ãé åãžã®ç¿»èš³ã§ããã©ã€ã»ã³ã¹ã®é·ãã¯ãã§ã«ãã§ãã¯ãããŠããŸãã

æ¹è¡æ©èœã§ã¯ãã¢ã«ãã¡ãããïŒ0ã9ãAFïŒã«å¯ŸããŠã©ã€ã»ã³ã¹ããã§ãã¯ããããšãããããŸãã ã©ã€ã»ã³ã¹ã¯ã16é²æååã«å€æãããããçš®ã®ããŒã¿é åã§ãããæåŸã«ãåä¿¡ããé åã®é·ãã0Ã90ãã€ãã§ãããã©ããããã§ãã¯ãããŸãã ãããã£ãŠãã©ã€ã»ã³ã¹ã®é·ãã¯0Ã90 * 2 = 0Ã120ïŒ288ïŒæåã§ãªããã°ãªããŸããã
ãã®ãã¹ãŠã®åŸãã¡ã€ã³é¢æ°ã«æ»ããŸãã 次ã¯ããã®é åã®æåã®0Ã8Cãã€ãïŒä»¥éããã®é åãã©ã€ã»ã³ã¹ãšåŒã³ãŸãïŒã®å¶åŸ¡åèšããã©ã€ã»ã³ã¹ã®æåŸã«ãã4ãã€ãæ°ã§èšç®ããŸãã

ãããŠãååã®ä»ããæäœã®åã10åãããååã®çµæã¯4ãã€ãã®æ°å€ã®é åã®åå¥ã®èŠçŽ ã«é 眮ãããŸãã ä»åŸã¯ããã®é åãRC4ã®ããŒã«ãªããšèšãã®ã§ãããŒãšåŒã³ãŸãã
ã©ãŠã³ã0â2ïŒ

Round1ãé€ããã¹ãŠã®åã¯1å䜿çšããããããã³ã³ãã€ã©ãŒã«ãã£ãŠã€ã³ã©ã€ã³é¢æ°ãšããŠèªèãããŸãããããŒã¿ã®å¶åŸ¡åèšãååŸããé¢æ°ãšããŠãround1èªäœãæåŸã«2å䜿çšãããŸãã
ã©ãŠã³ã3-4ïŒ

ã©ãŠã³ã5â7ïŒ

ã©ãŠã³ã8â9ïŒ

ã芧ã®ãšãããround9ã¯ã©ã€ã»ã³ã¹ã®ã³ã³ãããŒã«ãµã ã®èšç®ãšãŸã£ããåãã§ãã
ãã®ãã¹ãŠã®åŸãç°¡åãªæäœã§ãããŒããåãããŒã®åŸç¶ã®xsorã®å€ãèŠã€ããŸãã ãŸãããã®å€ã¯ãRC4ã䜿çšããŠãååããåãåã£ãããŒã䜿çšããŠãã©ã€ã»ã³ã¹ã®æåã®0Ã8Cãã€ãã埩å·åããåŸã®å¥ã®ãã¹ãã§äœ¿çšãããŸãã ãããŠå¥ã®æäœã§ã¯ããã®çµæãããã«å¿ èŠã«ãªããŸãã

次ã«ã次ã«å¿ èŠãª2ã€ã®å€ãååŸããŸãã XorKeyã䜿çšããŠãã·ããã®ãããæ°ãååŸããããŒããç®çã®ãã€ããååŸããŸããç¹å®ã®å€ãäžèšã§åä¿¡ãããããæ°ã ãã·ãããããšãã«ååŸããå¿ èŠããããŸãã ããŠãå®éã«ã¯RC4埩å·åèªäœã§ãã ç§ã¯ãããããã ãšå€æããã®ã§ããŸããããã§äœ¿çšãããå¯èœæ§ã®ããã¢ã«ãŽãªãºã ã®ãªã¹ããç¥ã£ãŠããŸãã次ã«ããã®ã¢ã«ãŽãªãºã ã«ç¹°ãè¿ãäŒã£ãããŒåæåã¢ã«ãŽãªãºã ã«ãã£ãŠãç§ã¯ããã«ãããèªèããã ãããšæããŸãã

ãããŠããã®å€ãå¿ èŠãªå Žæã®ãã§ãã¯ã§ãã 埩å·ååŸãLicense [34]ãååŸããå¿ èŠããããŸãïŒã©ã€ã»ã³ã¹ã4ãã€ãå€ã®é åãšèŠãªãå Žåããããç¶ç¶ããŸãïŒãå€ã¯XorKeyãšåäžã§ãã ããã§ããã®ã¯ã©ãã¯ã®æãç°¡åãªéšåãçµäºããŸãã ããã«ãæéãšåŽåãããããŸããã
次ã«ã8ãã€ãã®ã©ã€ã»ã³ã¹ã®CRC32ã«ãŠã³ãããããŸããããã¯0xFFB97FE0ã§ãªããã°ãªããŸããã ãã¹ãŠãããŸãããã°ããããã®8ãã€ãã¯ããã«RC4ã¢ã«ãŽãªãºã ã䜿çšããŠ2ã€ã®ããŒãã³ãŒãã£ã³ã°ãããå€ã埩å·åããããŒãšããŠæ©èœããåºåã§2ã€ã®é¢ãåãåãã¯ãã§ãã ããã§ããããæåã®èå³æ·±ãå Žæã§ãã ã°ãŒã°ã«ãããŒãèŠã€ããã®ã«åœ¹ç«ã€RC4ã®è¡çªã¯èŠã€ãããŸããã§ããã ããããé¡ã«8ãã€ãã貌ãä»ããã®ã¯å°ãã°ãããŠé·ããªããŸãã åœã®CRC32ããã§ã«åŠçããŠããŠãã©ã¡ãã«é²ãã¹ãããããã£ãã®ã¯è¯ãããšã§ãã ç¥ããªã人ã«ãšã£ãŠã¯ãäžèšã§èšããšããå¿ èŠãªCRC32ãååŸã§ããããŒã¿ãããå¿ èŠãª4ãã€ããè¿œå /眮æããã ãã§ãããšããããšã§ãã 詳现ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã ããããã8ãã€ãã§ã¯ãªã4ãã€ãããã«ãŒãããå¿ èŠããããŸãã ç§ã¯ãããŸããŸãªãã¯ãããžãŒããã«ãã¹ã¬ããã䞊åã³ã³ãã¥ãŒãã£ã³ã°ã䜿çšããŠã¢ãã¹ãã©ã¯ããã©ãã¿ãŒãäœæããªãããšã«ããŸããã AMD II X2 250ã®ããŒã15åã§èŠã€ããã·ã³ãã«ãªã·ã³ã°ã«ã¹ã¬ãããã«ãŒã¿ãŒãäœæããŸããã
ããã¯ç§ã®ãã«ãŒã¿ãŒãã©ã®ããã«èŠãããã§ãïŒ
int main() { uint32_t key[2] = {0, 0}; uint8_t *pkey = (uint8_t *)&key; rc4_key skey; uint32_t rc4_data[2]; do { fix_crc_end(pkey, 8, 0xFFB97FE0); prepare_key(pkey, 8, &skey); rc4_data[0] = 0xE6C5D5E1; rc4_data[1] = 0x41C98EAB; rc4((uint8_t *)rc4_data, 8, &skey); if (rc4_data[0] == 0xFACE0001 && rc4_data[1] == 0xFACE0002) { printf("Key: "); for (int i = 0; i < 8; i++) { printf("%02X", *pkey++); } printf("\n"); break; } } while (key[0]++ <= 0xFFFFFFFF); printf("\n\n\t\tFin!\n"); return 0; }

æ£ããããŒãèŠã€ããã®ã§ãäžèšã®ãã¹ãŠã®ãã§ãã¯ã«åæ ŒããããŒãçæã§ããŸãã ããããã¹ãŠç¥ã£ãŠããã°ãã©ã€ã»ã³ã¹ã®äžè¬çãªåœ¢åŒãæ³åã§ããŸãã
typedef struct _LICENSE { unsigned char M1[0x40]; unsigned char M2[0x40]; unsigned int FaceKey1; unsigned int FaceKey2; unsigned int AfterXorKey; unsigned int LicenseCheckSum; } LICENSE, *LPLICENSE;
æåŸã®4ã€ã®å€ã¯æ¢ã«è§£æãããŠãããã©ã€ã»ã³ã¹ã®æåã®0Ã80ãã€ãã®ã¿ãæ®ããŸãããããã¯0Ã40ãã€ãã®2ã€ã®ã¡ãã»ãŒãžã ãšæããŸãã
é¡ã®åŸãé¢æ°ãããã«åŒã³åºãããããã«ã©ã€ã»ã³ã¹ãžã®ãã€ã³ã¿ãŒã転éãããŸãããã§ã«RSAãšããŠçœ²åãããŠããŸãã ç§ã¯ãããã©ã®ããã«ç解ããããå°ã説æããããšããŸãã ãã®é¢æ°ãå ¥åãããšã3ã€ã®åäžã®é¢æ°ãé£ç¶ããŠç§»åããããã«ããŒã¿é åãžã®ãã€ã³ã¿ãŒããã®ãµã€ãºãããã³çµæãå«ããããã¡ãŒãžã®ãã€ã³ã¿ãŒãæž¡ãããŸãã ãã®é¢æ°ã¯ããã€ãåäœã§éé ã§é åããèªã¿åããŸãã é åã®æåŸã®èŠçŽ ããæåã®èŠçŽ ãŸã§ã ããã¯ã倧ããªæ°å€ãåæåããããšã«éåžžã«äŒŒãŠããŸãã ããã¯ç§ã«æåã«èµ·ãã£ãããšã§ãã

ãã®é¢æ°ãžã®2çªç®ã®åŒã³åºãã¯ãåæåãè¡ãããé åã®ãã³ãã調ã¹ããšãã«ç§ã®æšæž¬ã確èªããã ãã§ããããã®è²Žéãª3ãã€ã01 00 01ãèŠãŸããããã®å€ã¯ãRSA埩å·åã®å®è£ ã§ææ°ãšããŠé »ç¹ã«äœ¿çšãããŸãã æåã®é¢æ°ã¯å ¬éããŒNãåæåãããšããããšã«ãªããŸãããã®åŸããã³ããããããåãåºããŠå解ããå解ã®ããã«GPUã§msieveã䜿çšããŸãã ã ããŒã¯å°ããã256ãããã®ã¿ã4å匷ã§å æ°å解ãããŸããã

keygenã§ã¯ã被害è ãšåãã©ã€ãã©ãªãšã¯ã©ã¹ã䜿çšããå¿ èŠããããšããã«ãŒã«ãåžžã«å®ãããšããŸããã ããã§ãã©ã®ãããªçš®é¡ã®å€æ°ã®ã©ã€ãã©ãªã䜿çšãããŠãããã«ã€ããŠã®æããããæ¢ãããšã«ããŸããã å°ãçœåŒåããããšããã®ãããªã¡ãã»ãŒãžã«åºäŒããã¡ãã»ãŒãžã®ããã¹ããGoogleã«éã蟌ãã ãšããã䜿çšãããŠããã©ã€ãã©ãªãããã«èŠã€ããã BigDigitsã§ããããšãããããŸãã ã

ãã®åŸãæåã®ã¡ãã»ãŒãžã®6çªç®ã®èŠçŽ ã2çªç®ã®ã¡ãã»ãŒãžã®åãèŠçŽ ãšçããããšã確èªããŸãã ãŸããShiftCountãããã§å³ã«ã·ãããããšãã®ãã®å€ã®äžäœãã€ããNeedByteãšåãã«ãªãããã«ããŸãã äžèšã®2ã€ã®å€ãã¹ãŠã

ãã®åŸãæåãš2çªç®ã®ã¡ãã»ãŒãžã®CRC32ãçãããªãã£ãããšã確èªãããround1é¢æ°ã§ã®ã¿åãæ¯èŒãè¡ãããŸãã ãã®åŸããã¹ãŠãå解ãããŸãããã®éšåã§ã¯ãäºè£ã¯æ¬¡ã®éšåãšåæ§ã«ç¹å¥ãªãã®ã§ã¯ãªãããã§ãã

ãããŠæåŸã«ãæåãš2çªç®ã®ã¡ãã»ãŒãžã®MD4ããã·ã¥ããããããããçããå Žåããã¹ãã«åæ ŒããŸããã ãã ãããããã®ã¡ãã»ãŒãžã®2ã€ã®é¢æ°ã®ãã§ãã¯ãµã ãç°ãªãå Žåãã¡ãã»ãŒãžã¯ç°ãªãã¯ãã§ãããåæã«åãããã·ã¥ãæã€å¿ èŠããããããã¯ããã«ã¯é©åããŸããã
ããã§ãGoogleã¯ãmd4 collisionsããšããã¯ãšãªã§åã³ç»å ŽããŸããMD4ã®è¡çªã«ã€ããŠã¯æ¬åœã«æ å ±ããããŸããããã¯ç°ãªããŸããèšå€§ãªèšäºããããŸãããè¡šé¢çãªèšäºããããŸãã ãããŠããããã®èšäºã®1ã€ã§ãäžåœäººãåãããã·ã¥ã§0Ã40ãã€ãã®2ã€ã®ç°ãªãã¡ãã»ãŒãžãäœæã§ããããšãããããŸããã 次ã®ãªã¯ãšã¹ããmd4 collisions sourcesãã§ã°ãŒã°ã«ãæ€çŽ¢ããŸããçå®ã¯ããã®ãããªã¡ãã»ãŒãžã2ã€èŠã€ããããã®ãœãŒã¹ã³ãŒãããããŸããããããã¯Linuxã§æžãããŠãããã©ã³ãã é¢æ°ã¯4ãã€ãã®æ°å€ãè¿ãããŠã£ã³ããŠã§ã¯0ãšRAND_MAXãè¿ããŸãïŒ 32767ïŒã ç§ãé·ãéåé¡ãæ±ããŠããããããªããããééã£ãã¡ãã»ãŒãžãçæããã®ãã ããã³ããã®åŸãç§ã¯Delphiã§ã©ã³ãã é¢æ°ãæžãçŽããŸããã
keygenãæžã
keygenãæžãéã®ãã¹ãŠã®ã¹ãããã説æããã®ã§ã¯ãªããããã€ãã®éèŠãªç¹ã«ã®ã¿æ³šæãæããŸãã ãŸããRC4ã®ããŒã«ååãä»ããŠäœæããŸããããã¯çç¥ããŸããè€éãªããšã¯ãããŸãããæ ãè ã¯ãã®éšåå šäœããªããã³ã°ã§ããŸãã 次ã«ãããŒxorã®å€ãèŠã€ããŠããŒèªäœãçªãå¿ èŠããããŸãããã®åŸããã®å€ããShiftCountãšNeedByteãèŠã€ããŸãã ãã®éšåã¯ãªããã³ã°ããããšãã§ããŸã;ç®çã®ãã€ããèŠã€ããã«ã¯ã256ãã€ãã®ããŒãã«ããªããã³ã°ããå¿ èŠããããŸãã äžèšã®æ§é ã«åŸã£ãŠãXorKeyå€ãã©ã€ã»ã³ã¹ã«æžã蟌ã¿ãŸãã é¡ãèŠã€ããéµãšãªã2ã€ã®å€ãæžãçããããšãã§ããŸãããããã¯äžå®ã§ããããã¹ãŠã®äººã«ãšã£ãŠåãã§ãã ãã®åŸã2ã€ã®ã¡ãã»ãŒãžãçæããå¿ èŠããããŸãããå®éã«ã¯ãèŠããŠããå Žåã6çªç®ã®èŠçŽ ã«ã¯ç¹å®ã®åœ¢åŒãå¿ èŠã§ãã ã¡ãã»ãŒãžçæé¢æ°èªäœã«ã¯ãã©ã¡ãŒã¿ãŒã¯ãããŸãããã2ã€ã®å€ãæž¡ãå¿ èŠãããããããããã¯ShiftCountãšNeedByteã§ãã ãããã¿ã€ããå€æŽãããã®é¢æ°èªäœã®ã³ãŒãã«ããã«æ°è¡è¿œå ããŸãã ããã¯ïŒ
if(X0[ 5] != X1[ 5]) continue;
ãããŠãããã¯æ¬¡ã®ããã«ãªããŸããïŒ
if(X0[ 5] != X1[ 5]) continue; else if (((X0[5] >> c) & 0xFF) != b) continue;
cã¯ShiftCountãbã¯NeedByteã§ãã
ãã®åŸãã¡ãã»ãŒãžã¯ããããX0ããã³X1ã«é 眮ãããŸãã 次ã«ããããã®ã¡ãã»ãŒãžã1ã€ã®å€§ããªã¡ãã»ãŒãžã«çµåããRSACryptã«å ¥ããŸãã 埩å·åèªäœã¯0Ã20ãã€ãã®ãããã¯ã§è¡ããããããæå·åããŸãã ãããããããåå ã§ãã¡ãã»ãŒãžïŒMã¯0Ã20ãã€ãã®ãããã¯ïŒãå ¬éããŒïŒNïŒãããå°ãããªããã°ãªããªãããšãç¥ããªãåé¡ããããŸãããããã¯ã¯ã©ãã¯ã§ã¯èæ ®ããããè¡ã®ãã¹ãŠã解èªããŸãã ãããã£ãŠããããèæ ®ããå¿ èŠããããŸãã æå·åæ©èœã«ãã§ãã¯ãè¿œå ããŸãããN<Mã®å ŽåãåºãŠæ°ããã¡ãã»ãŒãžãçæããŸããããããã©ã€ã»ã³ã¹çææéãæ倧15ç§é ããçç±ã§ãã RSAã䜿çšããŠãã¹ãŠãæ£åžžã«æå·åãããåŸãååããåãåã£ãããŒã䜿çšããŠRC4ã䜿çšããŠãæ§é ã®æåŸã®å€ãªãã§ã©ã€ã»ã³ã¹å šäœãæå·åããŸãã æåŸã®ã¹ãããã¯ãRC4ã䜿çšããŠæå·åãããã©ã€ã»ã³ã¹ã®ãã®éšåã®å¶åŸ¡åèšãèšç®ãããããæ§é ã®æåŸã®å€ã«æžã蟌ã¿ã16é²æååå šäœããã®ã©ã€ã»ã³ã¹ã«å€æããããšã§ãã
以äžã§ãïŒ
çŽ æ
⢠www.rsdn.ru/article/files/classes/SelfCheck/crcrevrs.pdf -CRC32åœç©
⢠www.en.wikipedia.org/wiki /MD4 #Collision_Attacks -MD4ã³ãªãžã§ã³
⢠www.google.com
⢠www.wikipedia.org
ãœãŒã¹ã³ãŒã
⢠github.com/reu -res/ Keygen - for - CrackMe -1- by -PE_Kill-ãã«ãŒã¿ãŒãškeygen
PS Keygenã¯ããªã«æåãåãå ¥ããŸãããã³ã³ãœãŒã«ã®æ§ææ¹æ³ã«ãã£ãŠç°ãªããŸãã ç§ã¯å人çã«ã³ã³ãœãŒã«ãããããåãå ¥ããŸããã§ããããããŒãã³ãŒãã£ã³ã°ããã°ããã¹ãŠãããŸããããŸãã ç§ã¯çªã®äžã§æžãçŽãã®ãé¢åã§ããã