ã»ãã¥ãªãã£ã®è©±é¡ã«ä¸¸è °ã§è¸ã¿è¾¼ãã§ãã人ãè¦ã
Qiitaä¸ã§ãゲームでよくされるチート手法とその対策 〜アプリケーションハッキング編〜ãã¨ããè¨äºããããæ°ãéãã¦ããããã§ãããå ¨ã»ã¯ã·ã§ã³ã«ããã³ãã©ããããããããªå°è±¡ã§ããç§ã¯ã»ãã¥ãªãã£æ¬è·ã¨ããããã§ã¯ããã¾ããããç´ äººã®ç§ããè¦ã¦ãã²ã©ãã¨æã£ãã¨ããã ãåå¥ã«ããã³ããå ¥ãã¦ã¿ã¾ãã
念ã®ããè£è¶³ãã¦ããã¨ã誰ã§ãããã¨æ
å ±çºä¿¡ãããã¨èªä½ã¯å¤§å¤è¯ããã¨ã§ãããã ã誤ããå«ãã æç« ãã¦ãã«ãªæ³¨ç®ããã¦ãã¾ãã¨ãããä¿¡ãã¦ãã¾ã人ãåºã¦ããã®ã§ã大人ããªãã¨æãã¤ã¤ããã³ããå
¥ãã次第ã§ãã
ãã³ã³ãã¤ã«(éã³ã³ãã¤ã«)
2.ã®è©³ãã解説ã¨ãã¦ãC/C++ã§è¨è¿°ãããã³ã¼ããã³ã³ãã¤ã«ããã¨æ©æ¢°èªã«å¤æããã¾ãããããéã³ã³ãã¤ã«ãã¦ããéã¢ã»ã³ãã©ã¾ã§ã«ãããªãã¾ããããã®ããããã®ç¶æ ã§ã¯ã½ã¼ã¹ã³ã¼ãã®ä¸èº«ã解æããã®ã¯(人éã§ã¯)é常ã«å°é£ãªããããã¤ãã£ãã³ã¼ãã§æ¸ããå¦çã¨ããã®ã¯ãã³ã³ãã¤ã«ã¸ã®å¯¾çã¨ãªãã¾ãã
æè¡ç¨èªã®ä½¿ãæ¹ãæ£ç¢ºã§ãªãç¹ã¯è¦ãªãã£ãããªãããã¨ãã¦ãC/C++ã§è¨è¿°ããã°å®å
¨ã ã¨ããã®ã¯å¹»æ³ã§ããæ»æè
ã®å¤ãã¯é«æ©è½ãªéã¢ã»ã³ãã©ï¼ããããIDA Proï¼ãææãã¦ãããæã«æ¯ã¹ãã¨æ ¼æ®µã«å¦çã追ããããç°å¢ãæ´ã£ã¦ãã¾ããåºæ¬çã«ã¯ãã¤ãã£ããã¤ããªããã§ãã³ã¼ãã®å
容ã¯ææ¡å¯è½ã ã¨èããã¹ãã§ãããã
ãããããã®ã»ã¯ã·ã§ã³ã®ååã§ç´¹ä»ããã¦ãããiOS Reverse Engineeringの操作手順ããARMã®ã¢ã»ã³ããªãIDA Pro/Hopperã§è§£æãã話é¡ã«ãªã£ã¦ããããã¤ãã£ãã³ã¼ããªãå®å ¨ã¨ãã主張ã¨ã¯å対ã®å 容ã§ãããèªèº«ã§ç´¹ä»ãã¦ããè¨äºãªã®ã«èªãã§ããªãã®ãããï¼ã¨æã£ã¦ãã¾ãã¾ããã
話ãæ»ãã¨ãã¯ã©ã¤ã¢ã³ãå´ãã¤ããªã®æåã¯å ¨ã¦è§£æãããåæã§ã·ã¹ãã å ¨ä½ãè¨è¨ãã¹ãã§ããã¤ã¾ãã解æããã¦å°ãå 容ã¯ãµã¼ãå´ã§å®è£ ããã®ãååè«ã«ãªãã§ãããã
絶対ã«ç§å¯ã«ããããã¸ãã¯ãã¦ã¼ã¶ã¼ã«é
å¸ãããã¤ããªã«å
¥ãããå ´åã¯ãèªåã§ã®å¯¾çã¯ããããã¦ã¢ã³ããããã®ã³ã°æ©è½ã»ã¢ã³ãéã¢ã»ã³ãã«æ©è½ãæã£ãã»ãã¥ãªãã£è£½åãè³¼å
¥ããæ¹ãè¯ãã§ããããå®éã®ç¾å ´ã§ã¯ãã¬ã¦ãã¯ãªãã£ã«ã«ãããªããã©ç°¡åã«ãã¬ãã®ã¯ã¤ã¤ã¨ããç¨åº¦ã®ç¶æ³ã ã£ãããããããèªåå®è£
ã§é å¼µã£ã¦ããã¨ãããããã°å¤é¨ã½ãªã¥ã¼ã·ã§ã³ã«é ¼ã£ã¦ããã¨ãããããã¨ãã£ãå°è±¡ã§ãã
ä¹±æ°èª¿æ´
ãªããä¹±æ°ãçæããéãç¾å¨æå»ãåºã«ãã¦ãæ¬ä¼¼ä¹±æ°ãçæãããã¨ãå¤ãã®ã§ãç¹å®ã®ã¿ã¤ãã³ã°(æå»)ãçãã¨ãã¾ããããã¨ãã£ãé½å¸ä¼èª¬ã¿ãããªè«èª¿ã¯ããªãã¡ééã£ã¦ããããã§ã¯ããã¾ããã
ééãã§ããããæ示çã«ã«ã²ã©ãå®è£ ãããªãéããããªãã¨ã«ã¯ãªãã¾ããã
å¼ç¨é¨ããããã¨ä¹±æ°ã·ã¼ãã¨ãã¦ç¾å¨æå»ãå©ç¨ãã¦ããè¨èªã»ç°å¢ãå¤ããã¨ãã風ã«èªã¿åãã¾ãããã¢ãã¤ã«ã¢ããªã®æèã§ãããªç°å¢ã¯ãªãã¯ãã§ããç¾å¨ã®OSã¯å種å²ãè¾¼ã¿ã®ã¿ã¤ãã³ã°ããååãªã¨ã³ãããã¼ï¼ä¹±éãï¼ãèç©ãããããå©ç¨ãã¦ä¹±æ°ãçæãã¦ãããããååã«ã»ãã¥ã¢ã ã¨è¨ãã¾ãï¼ãã·ã³ã®å¤é¨ããä¹±æ°åãæ¨æ¸¬ãããã¨ã¯ååä¸å¯è½ã§ãï¼ãã¾ããåè¨èªã®ä¹±æ°çæã®å®è£
ã¯OSã«ä¾åãã¦ããã¯ãã§ãããããã»ãã¥ã¢ã ã¨è¨ãã¾ãã
ãããä¸ã«ã¯èªåå®è£
ã®ä¹±æ°çæå¨ã転ãã£ã¦ããããã¦ããããããã®ã¯æå»ãä¹±æ°ã·ã¼ãã«ä½¿ã£ã¦ããããããã¾ãããããããã¯ã»ãã¥ãªãã£ç¥èã®ç¡ã人ãä½æããèå¼±ãªå®è£
ã§ããè¨ãã¾ã§ãããã¾ãããã³ãããã¦ä½¿ããªã©ã¯è¨èªéæã§ãã
ï¼ä¸è¨æ®µè½ã¯ææããã£ãã®ã§ä¿®æ£ãã¾ãï¼OSãè¨èªã«ãã£ã¦ã¯æå»ãä¹±æ°seedã«æµç¨ãã¦ãããæå·ã«ä½¿ãã«ã¯ãã»ãã¥ã¢ã¨ã¯å¼ã¹ãªãå®è£ ãããããã§ãããããã ã¨ãã¦ããã·ã³å¤é¨ããä¹±æ°åãæ¨æ¸¬ã§ãããããªå®è£ ããããµãã¦ããã¨ã¯è¨ããªãããã«æãã¾ããã³ã¡ã³ãã§ãæ¸ãã¾ããããå è¨äºã®çè ãç´¹ä»ãã¦ããè¨äºã¯ã²ã¼ã ãã¼ã¤ã§ã®å®è£ ã§æ¬ä½èµ·åå¾ã®ä½ç§å¾ããçããã¨ã§æ½é¸çµæãã³ã³ããã¼ã«ã§ãããããªäºä¾ã®ããã§ããã¤ã¾ããæ»æè ããã·ã³ã®å é¨ç¶æ ã«ä»å ¥ã§ããç¶æ ã§ããããã§ããã¢ãã¤ã«ã²ã¼ã ã®ãµã¼ããµã¤ãç°å¢ã¨ããã¯ãªããäºä¾ãå ã«ããããªæ»æãããããã¨ãã主張ã¯éè«ççã§ããããã«æãã¾ãã
ãã¡ãããéè¦ãªæ½é¸ã¯ãµã¼ãå´ã§è¡ãã¹ãã¨ãã主張èªä½ã¯æ£ããã¨æãã¾ããã¾ãããµã¼ãå´ã§å®è£ ããã«ãã¦ãä¹±æ°ã·ã¼ãã®ã¨ã³ãããã¼ç¢ºä¿ã«ã¤ãã¦çæ ®ãããã¨ãããã³æ¡ç¨ããç似乱æ°ã®æ§è³ªãææ¡ãããã¨ã®2ç¹ã¯å¿ é ã¨è¨ããã§ãããã
ã¡ãªã¿ã«ãä¹±æ°ã·ã¼ãã®ã¨ã³ãããã¼ä¸è¶³ã§ãµã¼ãä¸ã®ä¹±æ°çæå¨ãæ»æ対象ã«ãªãããã¨ããäºä¾ã¯ç§ã以åä¼ç¤¾ã®æè¡ããã°è¨äºãPHPのセッションIDは暗号論的に弱い乱数生成器を使っており、セッションハイジャックの危険性があるãã§ç´¹ä»ãã¾ãããèªãã§é ããã°ãããã¾ããããã®æã®æ»æã¯æ®éã®æ¡ä»¶ã§ã¯ã¾ãæç«ãã¾ããããåèã¾ã§ã
ä½è«
æ¬å½ã¯DBã®ãã©ã³ã¶ã¯ã·ã§ã³ã¨ããã¯ã«é¢ãã¦ããã³ããå ¥ãããã¨æã£ããã§ãããé·ç·¨ã«ãªãããã ã£ãã®ã§ãã®ä»ã®ã¨ããã ãè¨äºã«ãã¾ããããã¡ããç§ããé©ä»»ã®æ¹ãè¨äºãæ¸ãã¦ãã ãã£ã¦ããããã§ããï¼ï¼ï¾ï¾ï½¯