- NSA Webãµã€ãã®å ¬åŒããŒãž
- Githubãããžã§ã¯ã
- Hacker Magazineã®æåã®ã¬ãã¥ãŒ
- Ghidraã®è§£æããã°ã©ã ãåããåªããYouTubeãã£ã³ãã«
ãã®ãããHydraã¯ã ã¢ãžã¥ãŒã«æ§é ãåããç¡æã®ã¯ãã¹ãã©ãããã©ãŒã ã®ã€ã³ã¿ã©ã¯ãã£ããªéã¢ã»ã³ãã©ãŒããã³éã³ã³ãã€ã©ãŒã§ãããã»ãŒãã¹ãŠã®ã¡ã€ã³CPUã¢ãŒããã¯ãã£ããµããŒãããéã¢ã»ã³ãã«ãããã³ãŒããã¡ã¢ãªãŒã埩å ãããïŒéã³ã³ãã€ã«ãããïŒã³ãŒãããããã°ã·ã³ãã«ãªã©ãæäœããããã®æè»ãªã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ãåããŠããŸã ã
ãã®Hydraã§äœããå£ããïŒ
ã¹ããã1.äºè£ãèŠã€ããŠèª¿ã¹ã
ãç ç²è ããšããŠãåçŽãªã¯ã©ãã¯ããŒããã°ã©ã ãèŠã€ããŸãã äžã®ã¹ã¯ãªãŒã³ã·ã§ããã®ããã«ãç§ã¯crackmes.oneã«è¡ããæ€çŽ¢ã§é£æ床= 2-3ïŒãåçŽãããã³ãäžãïŒãããã°ã©ã ã®ãœãŒã¹èšèª=ãC / C ++ãããã³ãã©ãããã©ãŒã =ããã«ããã©ãããã©ãŒã ãã瀺ããŸããã

æ€çŽ¢ã¯2ã€ã®çµæãè¿ããŸããïŒäžã®ç·è²ïŒã æåã®ã¯ã©ãã¯ã¯16ãããã§ããããšãå€æããWin10 64ãããã§ã¯éå§ããŸããã§ãããã2çªç®ïŒ level_2 by seveb ïŒãçºçããŸããã ãã®ãªã³ã¯ããããŠã³ããŒãã§ããŸãã
ã¯ã©ãã¯ãããŠã³ããŒãããŠè§£åããŸãã ãµã€ãã«ç€ºãããŠããããã«ãã¢ãŒã«ã€ãã®ãã¹ã¯ãŒãã¯crackmes.deã§ãã ã¢ãŒã«ã€ãã«ã¯ãLinuxãšWindowsã«å¯Ÿå¿ãã2ã€ã®ãã£ã¬ã¯ããªããããŸãã ç§ã®ãã·ã³ã§ã¯ãWindowsãã£ã¬ã¯ããªã«ç§»åãããã®äžã§å¯äžã®ãå®è¡å¯èœãã¡ã€ã«ãã§ããlevel_2.exeã«äŒããŸãã å®è¡ããŠã圌女ãæããã®ãèŠãŠã¿ãŸãããã

æ®å¿µãªããã§ãïŒ ããã°ã©ã ãèµ·åãããšãäœã衚瀺ãããŸããã ãã©ã¡ãŒã¿ãšããŠä»»æã®æååãæž¡ããŠãå床å®è¡ããããšããŸãïŒçªç¶ãããŒãåŸ ã£ãŠããŸããïŒïŒ-ãããŠåã³äœã...ãããã絶æããªãã§ãã ããã ãŸããã¿ã¹ã¯ãšããŠèµ·åãã©ã¡ãŒã¿ãŒãèŠã€ããå¿ èŠããããšä»®å®ããŸãããïŒ ãã¹ã€ã¹ãã€ããã§ããHydraãèŠã€ããŸãããã
ã¹ããã2. Hydraã§ã®ãããžã§ã¯ãã®äœæãšäºååæ
ãã§ã«Hydraãã€ã³ã¹ããŒã«ãããŠãããšããŸãã ãŸã ã§ã¯ãªãå Žåããã¹ãŠãç°¡åã§ãã
Ghidraãã€ã³ã¹ããŒã«ãã
1ïŒ JDKããŒãžã§ã³11以äžãã€ã³ã¹ããŒã«ããŸãïŒ 12ãæã£ãŠããŸãïŒ
2ïŒHydraãããŠã³ããŒããïŒããšãã°ã ãã¡ããã ïŒãã€ã³ã¹ããŒã«ããŸãïŒå·çæç¹ã§ãHydraã®ææ°ããŒãžã§ã³ã¯9.0.2ã§ã9.0.1ããããŸãïŒ
2ïŒHydraãããŠã³ããŒããïŒããšãã°ã ãã¡ããã ïŒãã€ã³ã¹ããŒã«ããŸãïŒå·çæç¹ã§ãHydraã®ææ°ããŒãžã§ã³ã¯9.0.2ã§ã9.0.1ããããŸãïŒ
Hydraãèµ·åããéãããããžã§ã¯ããããŒãžã£ãŒã§ããã«æ°ãããããžã§ã¯ããäœæããŸãã crackme3ãšããååãä»ããŸãã ïŒã€ãŸããcrackmeããã³crackme2ãããžã§ã¯ãã¯ãã§ã«äœæãããŠããŸãïŒã å®éããããžã§ã¯ãã¯ãã¡ã€ã«ãã£ã¬ã¯ããªã§ãããä»»æã®ãã¡ã€ã«ãè¿œå ããŠåŠç¿ããããšãã§ããŸãïŒexeãdllãªã©ïŒã level_2.exeãããã«è¿œå ããŸãïŒ [ãã¡ã€ã«] | [ã€ã³ããŒã]ãŸãã¯IããŒã®ã¿ïŒïŒ

Hydraã¯ãã€ã³ããŒãããåã«ãWin32 OSããã³x86ãã©ãããã©ãŒã çšã®32ãããPEïŒããŒã¿ãã«å®è¡å¯èœãã¡ã€ã«ïŒãšããŠãå®éšçãªã¯ã¯ãã¯ãç¹å®ããããšãããããŸãã ã€ã³ããŒãåŸãããã«æ å ±ãåŸ ã£ãŠããŸãïŒ

ããã§ã¯ãåè¿°ã®ããã深床ã«å ããŠã ãšã³ãã£ã¢ã³ãã¹ã®é åºã«èå³ããããããããŸãããããã¯ãIntel 86thãã©ãããã©ãŒã ã§æ³å®ãããŠããLittle ïŒäœãã€ãããé«ãã€ããŸã§ïŒã§ãã
äºåçãªåæã§ãããã§å®äºã§ãã
ã¹ããã3.èªååæãå®è¡ãã
Hydraã§ããã°ã©ã ã®å®å šèªååæãéå§ããæéã ããã¯ã察å¿ãããã¡ã€ã«ïŒlevel_2.exeïŒãããã«ã¯ãªãã¯ããŠè¡ããŸãã ã¢ãžã¥ãŒã«æ§é ã®Hydraã¯ããã¹ãŠã®åºæ¬æ©èœã«ãã©ã°ã€ã³ã·ã¹ãã ãæäŸããŸãããã©ã°ã€ã³ã·ã¹ãã ã¯ãè¿œå /ç¡å¹åããŸãã¯ç¬ç«ããŠéçºã§ããŸãã åæã«ã€ããŠãåæ§ã§ã-åãã©ã°ã€ã³ã¯ãåæã®ã¿ã€ããæ åœããŸãã ãã®ãããæåã«ç®çã®åæã®ã¿ã€ããéžæã§ãããŠã£ã³ããŠã衚瀺ãããŸãã
åæèšå®ãŠã£ã³ããŠ

ããã§ã¯ãããã©ã«ãèšå®ã®ãŸãŸã«ããŠåæãå®è¡ããã®ãçã«ããªã£ãŠããŸãã åæèªäœã¯éåžžã«é«éã§ãïŒçŽ7ç§ããããŸããïŒãããã©ãŒã©ã ã®ãŠãŒã¶ãŒã¯ã倧èŠæš¡ãããžã§ã¯ãã§ã¯Hydraã®é床ãIDA Proã«è² ããŠãããšèšŽããŠããŸãã ããã¯æ¬åœãããããŸããããå°ããªãã¡ã€ã«ã®å Žåããã®éãã¯éèŠã§ã¯ãããŸããã
ããã§åæã¯å®äºã§ãã ãã®çµæã¯ãã³ãŒããã©ãŠã¶ãŠã£ã³ããŠã«è¡šç€ºãããŸãã

ãã®ãŠã£ã³ããŠã¯Hydraã§äœæ¥ããããã®äž»èŠãªãŠã£ã³ããŠã§ãããããã£ãŠãããæ éã«æ€èšããå¿ èŠããããŸãã
ã³ãŒããã©ãŠã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®æŠèŠ
ããã©ã«ãã®ã€ã³ã¿ãŒãã§ãŒã¹èšå®ã¯ããŠã£ã³ããŠã3ã€ã®éšåã«åå²ããŸãã
äžå€®éšã«ã¯ã¡ã€ã³ãŠã£ã³ããŠããããŸããããã¯ãIDAãOlyDbgãªã©ã®ãå åŒãã«ã»ãŒé¡äŒŒããéã¢ã»ã³ãã©ã®ãªã¹ãã§ãã ããã©ã«ãã§ã¯ããã®ãªã¹ãã®åã¯ïŒå·Šããå³ãžïŒã¡ã¢ãªã¢ãã¬ã¹ãã³ãã³ãã®ãªãã³ãŒããASMã³ãã³ããASMã³ãã³ãã®ãã©ã¡ãŒã¿ãŒãçžäºåç §ïŒè©²åœããå ŽåïŒã§ãã åœç¶ããã®ãŠã£ã³ããŠã®ããŒã«ããŒã«ããã¬ã³ã¬ã®å£ã®åœ¢ã®ãã¿ã³ãã¯ãªãã¯ããŠã衚瀺ãå€æŽã§ããŸãã æ£çŽã«èšããšãéã¢ã»ã³ãã©åºåã®åæ§ã®æè»ãªèšå®ãèŠãããšã¯ãããŸãããããã¯éåžžã«äŸ¿å©ã§ãã
3ããã«ã®å·ŠåŽéšå ïŒ
ç§ãã¡ã«ãšã£ãŠæã䟿å©ãªãŠã£ã³ããŠã¯ã·ã³ãã«ããªãŒã§ããããã«ãããããšãã°ååã§é¢æ°ããã°ããèŠã€ããŠã察å¿ããã¢ãã¬ã¹ã«ç§»åã§ããŸãã
å³åŽã«ã¯ãéã³ã³ãã€ã«ãããã³ãŒãã®ãªã¹ãããããŸãïŒãã®äŸã§ã¯CïŒã
ããã©ã«ãã®ãŠã£ã³ããŠã«å ããŠã[ ãŠã£ã³ã㊠]ã¡ãã¥ãŒã§ã¯ãä»ã®å€æ°ã®ãŠã£ã³ããŠãšãã£ã¹ãã¬ã€ã䜿çšããŠããã©ãŠã¶å ã®ä»»æã®å ŽæãéžæããŠé 眮ã§ããŸãã 䟿å®äžãBytesãŠã£ã³ããŠãšFunction Graphã®ãããŠã£ã³ããŠãäžå€®ã«è¿œå ããå³åŽã«æååå€æ°ïŒStringsïŒãšé¢æ°ã®ããŒãã«ïŒFunctionsïŒãè¿œå ããŸããã ãããã®ãŠã£ã³ããŠã¯ãåå¥ã®ã¿ãã§äœ¿çšã§ããããã«ãªããŸããã ãŸããä»»æã®ãŠã£ã³ããŠãåãå€ããŠããããŒãã£ã³ã°ãã«ããèªç±ã«é 眮ããŠãµã€ãºãå€æŽããããšãã§ããŸã-ãããéåžžã«ææ ®æ·±ã解決çã§ãã
äžå€®éšã«ã¯ã¡ã€ã³ãŠã£ã³ããŠããããŸããããã¯ãIDAãOlyDbgãªã©ã®ãå åŒãã«ã»ãŒé¡äŒŒããéã¢ã»ã³ãã©ã®ãªã¹ãã§ãã ããã©ã«ãã§ã¯ããã®ãªã¹ãã®åã¯ïŒå·Šããå³ãžïŒã¡ã¢ãªã¢ãã¬ã¹ãã³ãã³ãã®ãªãã³ãŒããASMã³ãã³ããASMã³ãã³ãã®ãã©ã¡ãŒã¿ãŒãçžäºåç §ïŒè©²åœããå ŽåïŒã§ãã åœç¶ããã®ãŠã£ã³ããŠã®ããŒã«ããŒã«ããã¬ã³ã¬ã®å£ã®åœ¢ã®ãã¿ã³ãã¯ãªãã¯ããŠã衚瀺ãå€æŽã§ããŸãã æ£çŽã«èšããšãéã¢ã»ã³ãã©åºåã®åæ§ã®æè»ãªèšå®ãèŠãããšã¯ãããŸãããããã¯éåžžã«äŸ¿å©ã§ãã
3ããã«ã®å·ŠåŽéšå ïŒ
- ããã°ã©ã ã®ã»ã¯ã·ã§ã³ïŒããŠã¹ãã¯ãªãã¯ããŠã»ã¯ã·ã§ã³ã移åããŸãïŒ
- æåããªãŒïŒã€ã³ããŒãããšã¯ã¹ããŒããé¢æ°ãããããŒãªã©ïŒ
- 䜿çšãããå€æ°ã®ã¿ã€ãããªãŒ
ç§ãã¡ã«ãšã£ãŠæã䟿å©ãªãŠã£ã³ããŠã¯ã·ã³ãã«ããªãŒã§ããããã«ãããããšãã°ååã§é¢æ°ããã°ããèŠã€ããŠã察å¿ããã¢ãã¬ã¹ã«ç§»åã§ããŸãã
å³åŽã«ã¯ãéã³ã³ãã€ã«ãããã³ãŒãã®ãªã¹ãããããŸãïŒãã®äŸã§ã¯CïŒã
ããã©ã«ãã®ãŠã£ã³ããŠã«å ããŠã[ ãŠã£ã³ã㊠]ã¡ãã¥ãŒã§ã¯ãä»ã®å€æ°ã®ãŠã£ã³ããŠãšãã£ã¹ãã¬ã€ã䜿çšããŠããã©ãŠã¶å ã®ä»»æã®å ŽæãéžæããŠé 眮ã§ããŸãã 䟿å®äžãBytesãŠã£ã³ããŠãšFunction Graphã®ãããŠã£ã³ããŠãäžå€®ã«è¿œå ããå³åŽã«æååå€æ°ïŒStringsïŒãšé¢æ°ã®ããŒãã«ïŒFunctionsïŒãè¿œå ããŸããã ãããã®ãŠã£ã³ããŠã¯ãåå¥ã®ã¿ãã§äœ¿çšã§ããããã«ãªããŸããã ãŸããä»»æã®ãŠã£ã³ããŠãåãå€ããŠããããŒãã£ã³ã°ãã«ããèªç±ã«é 眮ããŠãµã€ãºãå€æŽããããšãã§ããŸã-ãããéåžžã«ææ ®æ·±ã解決çã§ãã
ã¹ããã4.ããã°ã©ã ã¢ã«ãŽãªãºã ã®åŠç¿-mainïŒïŒé¢æ°
ããŠãã¯ã©ãã¯ããã°ã©ã ã®çŽæ¥åæã«é²ã¿ãŸãããã ã»ãšãã©ã®å Žåãããã°ã©ã ã®ãšã³ããªãã€ã³ããæ€çŽ¢ããããšããå§ããŸãã èµ·åæã«åŒã³åºãããã¡ã€ã³é¢æ°ã ã¯ã©ãã¯ãC / C ++ã§èšè¿°ãããŠããããšãç¥ã£ãŠãããšãmainé¢æ°ã®ååã¯mainïŒïŒãŸãã¯ãã®ãããªãã®ã«ãªããšæšæž¬ãããŸã:) ããªãŒã®ã·ã³ãã«ïŒå·Šããã«ïŒã®ãã£ã«ã¿ãŒã«ãmainããšå ¥åããã é¢æ°ãã»ã¯ã·ã§ã³ã®é¢æ°_mainïŒïŒã確èªããŸãã ããŠã¹ãã¯ãªãã¯ããŠããã«ç§»åããŸãã
mainïŒïŒé¢æ°ãšãããŸããªé¢æ°ã®ååã®å€æŽã®æŠèŠ
éã¢ã»ã³ãã©ã®ãªã¹ãã§ã¯ã察å¿ããã³ãŒãã»ã¯ã·ã§ã³ãããã«è¡šç€ºãããå³åŽã«ãã®é¢æ°ã®éã³ã³ãã€ã«ãããCã³ãŒãã衚瀺ãããŸãã Hydraã®ãã1ã€ã®äŸ¿å©ãªæ©èœã¯ãéžæã®åæã§ããããŠã¹ãASMã³ãã³ãã®ç¯å²ãéžæãããšãéã³ã³ãã€ã©ãŒã®å¯Ÿå¿ããã³ãŒãã»ã¯ã·ã§ã³ã匷調衚瀺ãããéãåæ§ã§ãã ããã«ãã¡ã¢ãªè¡šç€ºãŠã£ã³ããŠãéããŠããå Žåãå²ãåœãŠã¯ã¡ã¢ãªãšåæãããŸãã 圌ããèšãããã«ããã¹ãŠã®ç¬åµçãªããšã¯ç°¡åã§ãïŒ
ããã«ãïŒããšãã°ãIDAã§ã®äœæ¥ãšã¯å¯Ÿç §çã«ïŒHydraã§ã®äœæ¥ã®éèŠãªç¹åŸŽã«æ³šç®ããŸãã Hydraã§ã®äœæ¥ã®äž»ãªç®çã¯ãéã³ã³ãã€ã«ãããã³ãŒãã®åæã§ã ã ãã®ãããHydraã®äœæè ïŒèŠããŠãã-ç§ãã¡ã¯NSAããã®ã¹ãã€ã«ã€ããŠè©±ããŠãã:)ïŒã¯ãéã³ã³ãã€ã«ã®å質ãšã³ãŒãã䜿çšããããšã®å©äŸ¿æ§ã«å€å€§ãªæ³šæãæããŸããã ç¹ã«ãã³ãŒããããã«ã¯ãªãã¯ããã ãã§ãé¢æ°ãå€æ°ãã¡ã¢ãªã®ã»ã¯ã·ã§ã³ã®å®çŸ©ã«é²ãããšãã§ããŸãã ãŸããããã©ã«ãã®ååã«ã¯æå³ããªããæ··ä¹±ãæãå¯èœæ§ããããããå€æ°ãšé¢æ°ã¯ããã«ååãå€æŽã§ããŸããããã¯éåžžã«äŸ¿å©ã§ãã åŸã§èŠãããã«ããã®ã¡ã«ããºã ããã䜿çšããŸãã
ãããã£ãŠãããã«ã¡ã€ã³ïŒïŒé¢æ°ããããŸããããã¯ã次ã®ããã«HydraããåæãããŸãã
ã¡ã€ã³ïŒïŒã®ãªã¹ã
int __cdecl _main(int _Argc,char **_Argv,char **_Env) { bool bVar1; int iVar2; char *_Dest; size_t sVar3; FILE *_File; char **ppcVar4; int local_18; ___main(); if (_Argc == 3) { bVar1 = false; _Dest = (char *)_text(0x100,1); local_18 = 0; while (local_18 < 3) { if (bVar1) { _text(_Dest,0,0x100); _text(_Dest,_Argv[local_18],0x100); break; } sVar3 = _text(_Argv[local_18]); if (((sVar3 == 2) && (((int)*_Argv[local_18] & 0x7fffffffU) == 0x2d)) && (((int)_Argv[local_18][1] & 0x7fffffffU) == 0x66)) { bVar1 = true; } local_18 = local_18 + 1; } if ((bVar1) && (*_Dest != 0)) { _File = _text(_Dest,"rb"); if (_File == (FILE *)0x0) { _text("Failed to open file"); return 1; } ppcVar4 = _construct_key(_File); if (ppcVar4 == (char **)0x0) { _text("Nope."); _free_key((void **)0x0); } else { _text("%s%s%s%s\n",*ppcVar4 + 0x10d,*ppcVar4 + 0x219,*ppcVar4 + 0x325,*ppcVar4 + 0x431); _free_key(ppcVar4); } _text(_File); } _text(_Dest); iVar2 = 0; } else { iVar2 = 1; } return iVar2; }
å€æ°ã®å®çŸ©ãæšæºã®Cã¿ã€ããæ¡ä»¶ãã«ãŒããé¢æ°åŒã³åºããªã©ããã¹ãŠãæ£åžžã«æããŸãã ããããã³ãŒãã詳ããèŠããšãäœããã®çç±ã§äžéšã®é¢æ°ã®ååãå®çŸ©ãããŠããããç䌌é¢æ°_textïŒïŒ ïŒéã³ã³ãã€ã©ãŠã£ã³ããŠ-.textïŒïŒïŒã«çœ®ãæããããŠããããšãããã ãŸã ã ãããã®é¢æ°ãäœã§ããããå®çŸ©ããããšããå§ããŸãããã
æåã®åŒã³åºãã®æ¬æãããã«ã¯ãªãã¯
_Dest = (char *)_text(0x100,1);
ããã¯ãããŒã¿çšã®ã¡ã¢ãªãå²ãåœãŠãããã«äœ¿çšãããæšæºcallocïŒïŒé¢æ°ã®åãªãã©ãããŒé¢æ°ã§ããããšãããããŸãã ãããã£ãŠããã®é¢æ°ã®ååãcalloc2ïŒïŒã«å€æŽããŠã¿ãŸãããã æ©èœããããŒã«ã«ãŒãœã«ãèšå®ããã³ã³ããã¹ãã¡ãã¥ãŒãåŒã³åºããŠã[ ååã®å€æŽ ] æ©èœ ïŒãããããŒ-L ïŒãéžæããéãããã£ãŒã«ãã«æ°ããååãå ¥åããŸãã

é¢æ°ã®ååããââãã«å€æŽãããããšãããããŸãã ã¡ã€ã³ïŒïŒæ¬æïŒããŒã«ããŒã®[ æ»ã ]ãã¿ã³ãŸãã¯Alt + <- ïŒã«æ»ããŸããããã§ã¯ãç¥ç§çãª_textïŒïŒcalloc2ïŒïŒã®ä»£ããã«ããã§ã«ç«ã£ãŠããããšãããããŸãã ãããïŒ
ä»ã®ãã¹ãŠã®ã©ãããŒé¢æ°ã«ã€ããŠãåãããšãè¡ããŸããå®çŸ©ã1ã€ãã€ç¢ºèªãããããã®æ©èœã確èªããååãå€æŽãïŒCé¢æ°ã®æšæºåã«ã€ã³ããã¯ã¹2ãè¿œå ïŒãã¡ã€ã³é¢æ°ã«æ»ããŸãã
ã¡ã€ã³ïŒïŒé¢æ°ã³ãŒããç解ããŸã
ããŠãå¥åŠãªæ©èœãèŠã€ããŸããã ã¡ã€ã³é¢æ°ã®ã³ãŒãã®èª¿æ»ãéå§ããŸãã å€æ°å®£èšãã¹ããããããšãæååã§æå®ãããæ¡ä»¶ãæºããããå Žåã«ã®ã¿ãé¢æ°ãå€æ°iVar2ã®å€ãè¿ãããšãããããŸããããã¯ãŒãïŒé¢æ°ã®æåã®å åïŒã§ãã
if (_Argc == 3) { ... }
_Argcã¯ã mainïŒïŒã«æž¡ãããã³ãã³ãã©ã€ã³ãã©ã¡ãŒã¿ãŒïŒåŒæ°ïŒã®æ°ã§ãã ã€ãŸããããã°ã©ã ã¯2ã€ã®åŒæ°ããé£ã¹ããŸãïŒæåã®åŒæ°ã¯ãåžžã«å®è¡å¯èœãã¡ã€ã«ãžã®ãã¹ã§ãïŒã
ã§ã¯ãå ã«é²ã¿ãŸãããã ããã§ã¯ã256æåã®CæååïŒ charé åïŒãäœæããŸãã
char *_Dest; _Dest = (char *)calloc2(0x100,1); // new char[256] C++
次ã«ã3åã®ç¹°ãè¿ãã®ã«ãŒãããããŸãã ãã®äžã§ãæåã«bVar1ãã©ã°ãèšå®ãããŠãããã©ããã確èªãã èšå®ãããŠããå Žåã¯ã次ã®ã³ãã³ãã©ã€ã³åŒæ°ïŒæååïŒã_Destã«ã³ããŒããŸãã
while (i < 3) { /* . */ if (bVar1) { /* */ memset2(_Dest,0,0x100); /* _Dest */ strncpy2(_Dest,_Argv[i],0x100); break; } ... }
ãã®ãã©ã°ã¯ã次ã®åŒæ°ã解æãããšãã«èšå®ãããŸãã
n_strlen = strlen2(_Argv[i]); if (((n_strlen == 2) && (((int)*_Argv[i] & 0x7fffffffU) == 0x2d)) && (((int)_Argv[i][1] & 0x7fffffffU) == 0x66)) { bVar1 = true; }
æåã®è¡ã¯ããã®åŒæ°ã®é·ããèšç®ããŸãã ããã«ãæ¡ä»¶ã¯ãåŒæ°ã®é·ãã2ãæåŸãã2çªç®ã®æå== "-"ãæåŸã®æå== "f"ã§ãªããã°ãªããªãããšããã§ãã¯ããŸãã ãã³ã³ãã€ã©ãããã€ããã¹ã¯ã䜿çšããŠæååããæåãæœåºããæ¹æ³ãã翻蚳ãããŠããããšã«æ³šç®ããŠãã ããã
æ°å€ã®10é²å€ãšå¯Ÿå¿ããASCIIæåã¯ã察å¿ãã16é²ãªãã©ã«ã®äžã«ã«ãŒãœã«ã眮ããšè¡šç€ºã§ããŸãã ASCIIãããã³ã°ã¯åžžã«æ©èœãããšã¯éããŸããïŒïŒïŒããã®ãããã€ã³ã¿ãŒãããäžã®ASCIIããŒãã«ã確èªããããšããå§ãããŸãã ãŸããïŒã³ã³ããã¹ãã¡ãã¥ãŒ-> å€æã䜿çšã㊠ïŒã¹ã«ã©ãŒãä»»æã®çªå·ã·ã¹ãã ããä»ã®ã·ã¹ãã ã«çŽæ¥å€æããããšãã§ããŸãããã®å Žåããã®çªå·ã¯éžæããçªå·ã·ã¹ãã ã®ãã¹ãŠã®å ŽæïŒéã¢ã»ã³ãã©ãŒããã³éã³ã³ãã€ã©ãŒïŒã«è¡šç€ºãããŸãã ããããå人çã«ã¯ãä»äºã®èª¿åã®ããã«ã³ãŒãã«ããã¯ã¹ãæ®ãããšã奜ã¿ãŸãã ã¡ã¢ãªã¢ãã¬ã¹ããªãã»ãããªã© ãã¯ã¹ã¯ã©ãã«ã§ãèšå®ãããŸããã«ãŒãã®åŸã«ãã®ã³ãŒãããããŸãïŒ
if ((bVar1) && (*_Dest != 0)) { /* 1) "-f" 2) - */ _File = fopen2(_Dest,"rb"); if (_File == (FILE *)0x0) { /* 1 */ perror2("Failed to open file"); return 1; } ... }
ããã§ããã«ã³ã¡ã³ããè¿œå ããŸããã åŒæ°ïŒ "-f path_to_file"ïŒã®æå¹æ§ã確èªãã察å¿ãããã¡ã€ã«ãéããŸãïŒ2çªç®ã®åŒæ°ãæž¡ããã_Destã«ã³ããŒããŸããïŒã ãã¡ã€ã«ã¯ã fopenïŒïŒé¢æ°ã®ãrbããã©ã¡ãŒã¿ãŒã§ç€ºãããããã«ããã€ããªåœ¢åŒã§èªã¿åãããŸãã èªã¿åãã倱æããå ŽåïŒããšãã°ããã¡ã€ã«ã䜿çšã§ããªãå ŽåïŒããšã©ãŒã¡ãã»ãŒãžãstderrorã¹ããªãŒã ã«åºåãããããã°ã©ã ã¯ã³ãŒã1ã§çµäºããŸãã
次ã¯æãèå³æ·±ãã§ãïŒ
/* !!! !!! */ ppcVar3 = _construct_key(_File); if (ppcVar3 == (char **)0x0) { /* , "Nope" */ puts2("Nope."); _free_key((void **)0x0); } else { /* - */ printf2("%s%s%s%s\n",*ppcVar3 + 0x10d,*ppcVar3 + 0x219,*ppcVar3 + 0x325,*ppcVar3 + 0x431); _free_key(ppcVar3); } fclose2(_File);
éããŠãããã¡ã€ã«èšè¿°åïŒ _File ïŒã¯_construct_keyïŒïŒé¢æ°ã«æž¡ãããæããã«ãæ±ããããŠããããŒã®æ€èšŒãå®è¡ããŸãã ãã®é¢æ°ã¯ã ppcVar3å€æ°ã«æ ŒçŽãããŠãã2次å ã®ãã€ãé åïŒ char ** ïŒãè¿ããŸãã é åã空ã®å Žåãç°¡æœãªãNopeããã³ã³ãœãŒã«ã«è¡šç€ºãããŸãïŒã€ãŸãããNopeïŒãïŒãã¡ã¢ãªã¯è§£æŸãããŸãã ãã以å€ã®å ŽåïŒé åã空ã§ãªãå ŽåïŒãæããã«æ£ããããŒã衚瀺ãããã¡ã¢ãªã解æŸãããŸãã é¢æ°ã®æåŸã§ããã¡ã€ã«èšè¿°åãéããããã¡ã¢ãªã解æŸãããå€iVar2ãè¿ãããŸãã
ã ãããä»ãç§ãã¡ã¯æ¬¡ã®ãã®ãå¿ èŠã§ããããšã«æ°ä»ããŸããïŒ
1ïŒæ£ããããŒã§ãã€ããªãã¡ã€ã«ãäœæããŸãã
2ïŒåŒæ°ã-fãã®åŸã«ã¯ã©ãã¯ã®ãã¹ãæž¡ã
èšäºã®ç¬¬2éšã§ã¯ ãé¢æ°_construct_keyïŒïŒãåæããŸããããã¯ãå€æããããã«ããã¡ã€ã«å ã®ããŒããã§ãã¯ãã圹å²ãæãããŸãã