ã«ããã®äžã§ã800kbã®ãã©ãã£ãã¯ã293ã¯ã³ãŒãã®ã¹ã¯ãªãŒã³ã·ã§ããã§ãïŒïŒïŒ
ãã®èšäºã¯æ å ±æäŸã®ã¿ãç®çãšããŠããŸãã èè ã¯ãèšäºãèªãã ãŠãŒã¶ãŒã®ãããªãè¡åã«å¯ŸããŠã責任ãè² ããŸããã èšäºå ã®äžèŽã¯ã©ã³ãã ã§ãã
äžåºŠãéšã®å€ã®å€ã«ãç§ã®ã¬ãŒã«ãã¬ã³ããšç§ã¯èªåèªèº«ãšé¢ä¿ãããäœããæ¢ããŠããŸããã ç§ã¯æ ç»ãèŠãããããŸããã§ããããç§ããããããåºãããããŸããã§ããã éžæè¢ã¯ãã¢ãã€ã«ç©å ·ã«èœã¡ãŸããã ã²ãŒã ã®åºæ¬çãªèŠä»¶ã¯ããã»ã©å€ããããŸããã§ããã
- iOSããã³AndroidããµããŒãããå¿ èŠããããŸãã
- äž¡æ¹ã®ãã©ãããã©ãŒã ã«åäžã®ãµãŒããŒãå¿ èŠã§ãã
- äžç·ã«ãã¬ã€ããããšãçã«ããªã£ãŠããããã«ãå ±åã²ãŒã ããªããã°ãªããŸããã
ããã§ãGoogle Playãããããã²ãŒã ãèŠã€ããŸããã ååãæãããªãããã«ããããã²ãŒã NãšåŒã³ãŸããããåŸã§å€æããããã«ãäžèšã®ãªã¹ãã®3çªç®ã®é ç®ã¯ãã»ãšãã©äœãå®è£ ãããŠããŸããã
以äžã«ããã¿ãã¬ã®äžã§ã²ãŒã ã®çã説æãé ããŸããããããèªãå¿ èŠã¯ãããŸããããçµµãå®æãããããšã¯æçšã§ãã
説æ
ã²ãŒã ã¯ã¢ã³ã¹ã¿ãŒã«åºã¥ããŠããŸãã ããªãã¯ããããåŒã³åºããããããšãã®åªæãæ¯ã£ãŠããããã«ã«ãŒã³æåãã€ããŸãããããŠããã¯æ§ã
ãªçµ±èšã§èŠãããŠããŸãã éåžžã®ã¬ãã«ã«å ããŠãã¢ã³ã¹ã¿ãŒã«ã¯æã«ããã°ã©ããŒã·ã§ã³ããããŸãã
1ã€æ-æ倧ã¬ãã«15
2ã€æ-æ倧ã¬ãã«20
3ã¹ã¿ãŒã-æ倧ã¬ãã«25
æ倧6åã®æãæ倧40åãŸã§ãæ倧ã¬ãã«ã«å°éãããšãã¢ã³ã¹ã¿ãŒã®æã®æ°ãå¢ããããšãã§ããŸãããã¢ã³ã¹ã¿ãŒã®ã¬ãã«ã¯æåã®ã¬ãã«ã«ãªã»ãããããŸãã ã²ãŒã å ã®ãã®ããã»ã¹ã¯EvolveãšåŒã°ããŸãã ãããè¡ãã«ã¯ãä»ã®ç¹å®ã®ã¢ã³ã¹ã¿ãŒããé£ã¹ããå¿ èŠããããŸããäŸïŒ
1å¹ã®ã¢ã³ã¹ã¿ãŒ2 s-> 3 sãé²åãããã«ã¯ãæ¢åã®2å¹ã®ã¢ã³ã¹ã¿ãŒ2ãé£ã¹ãå¿ èŠããããŸãã
4ç§-> 5ç§-4ã€ã®ã¢ã³ã¹ã¿ãŒã4ç§æ¶è²»ããå¿ èŠããããŸã
5s-> 6s-5 monsters 5s-ããã¯ã²ãŒã ã®æšæºã«ããéåžžã«åŽåéçŽçã§ãã
ã¢ã³ã¹ã¿ãŒã¯ããŸããŸãªæ¹æ³ã§åŒã³åºãããšãã§ããŸãããæçµçã«ã¯3ã€ã«ãªããŸãã
ã²ãŒã ã®é貚ã«ã€ããŠïŒ
ãšãã«ã®ãŒ-PvEãã±ãŒã·ã§ã³ããã³ãžã§ã³ãžã®æ è¡ã«å¿ èŠã§ãã æ¶è²»-å Žæã«å¿ããŠ3ã8ã 5åã§1ã€ãã€èç©ãããå€ãã®å Žåã殺ãããMobããçŽæ¥èœäžããŸãã ãã¬ã€ã€ãŒã®ã¬ãã«ïŒã¢ã³ã¹ã¿ãŒã®ã¬ãã«ãšæ··åããªãããã«ïŒããã³ç¹å¥ãªå»ºç©ã®å©ããåããŠå¢å ãããšãã«ã®ãŒã®äžéããããŸãã
Arena Energy-ã¢ãªãŒãã§ã®ãã€ãã³ã°ã«äœ¿çšãããPvPã PvPãåŒçšç¬Šã§å²ãŸããŠããçç±ã«ã€ããŠã¯ãããå°ãäœããªããŸãã 競æå Žãžã®1åã®æ è¡ã¯ããšãã«ã®ãŒã®ç«¶æå Žã®1åäœãæ倧10ãè²»ããã30åã«1åèç©ããŸãã
éãæ°Žæ¶ã¯ã²ãŒã ã®äž»èŠé貚ã§ãã 圌女ã¯åºãã»ãšãã©ã®å»ºç©ããç©ãè²·ããŸããã ããŸããŸãªå»ºç©ã«èç©ããã殺ãããMobããèœäžããã¿ã¹ã¯ã«å¯Ÿããå ±é ¬ãšããŠäžããããŸãã
èµ€ãæ°Žæ¶ã¯ãå®éã®ãéã§è³Œå ¥ã§ãããã€ããŒé貚ã§ãã ãããã¯åãã¹ã¯ããŒã«3-5ã«è²»ãããããšãã«ã®ãŒãšãšãã«ã®ãŒã®é åãæŽæ°ãããããã®ããã«éãçµæ¶ãè³Œå ¥ããŸãã ãããŸãã«ãæ»ãã Mobãã¢ãªãŒãããèœã¡ãããšããããŸãã ã¡ãªã¿ã«ã1å·»3ã5ã®ã³ã¹ãã¯75ã§ãã
å声ãã€ã³ãã¯ãã¢ãªãŒãã«åã€ããã«äžããããé貚ã§ãã å€ãã®èå³æ·±ã建ç©ããªããžã§ã¯ããè³Œå ¥ãããŠããŸãã ãã®é貚ã¯ãä»ã®é貚ãå¯ä»ã®ããã«è³Œå ¥ããããšã¯ã§ããŸããã
ã²ãŒã å ã®ããŒããã¯ã€ã¶ããªãã§ãã ããã ãã¹ãŠãè¯å¥œã§ããéãæ³šå ¥ããããšãªãå·éã«åæ Œ/è³Œå ¥ãããŸããã å®éããããã¯ããå€ãã®å·»ç©ãæäŸããã ãã§ãããããããã圹ã«ç«ããªãã¢ã³ã¹ã¿ãŒãç²åŸããå¯èœæ§ã¯åãã§ãã ããŒããçšã«ç¹å®ã®ã¢ã³ã¹ã¿ãŒãè³Œå ¥ããããšã¯ã§ããŸããïŒå®éãããã¯ãŸã£ããäžå¯èœã§ãïŒã
æŠéã·ã¹ãã ã¯ãã¡ã€ãã«ãã¡ã³ã¿ãžãŒ7-10ã«äŒŒãŠããŸãããå¿ èŠã«å¿ããŠHoMM-ã¿ãŒã³ããŒã¹ã®æŠéã2-4åªæã®éžæãå¯èœã§ãã 3ãã10ã¬ãã«ïŒã»ãšãã©ã®å Žå3ãŸãã¯5ïŒã®ãã³ãžã§ã³ã§ã¯ãåã¬ãã«ã«Mobã®ããã¯ãããã殺ããŸã-ããã«é²ãã§ã殺ããªãã§ãã ãã-ç²åŸãããã¹ãŠã®ãã®ïŒã¯ãªã¹ã¿ã«ããšãã«ã®ãŒãçµéšïŒãæã«å ¥ããŸãã
ãPvPããšãå ±åãã¬ã€ãã«ã€ããŠã å€æããããã«ãããªãã¯äººãšå¯ŸæŠããæ©äŒã¯ãããŸããã èªåã§ãã¬ã€ããããããªãŒãã¢ã¿ãã¯ãã§ãã¬ã€ããåžžã«ã³ã³ãã¥ãŒã¿ãŒã«å¯ŸããŠè¡ããŸãã ãããã£ãŠãPvPã¯ããã§ã¯éåžžã«éå±ã§ãã ããã¯æ¬¡ã®ãã®ã§æ§æãããŠããŸããåãã¬ã€ã€ãŒã¯é²åŸ¡ã§4å¹ã®ã¢ã³ã¹ã¿ãŒãå ¬éããé²åŸ¡ã®ããã«ã¿ã¯ãŒãè³Œå ¥ããŸãã ã¢ãªãŒãã«å ¥ããšãããªãã¯AIãšæŠã£ãŠããŸãããããã¯ããªãæããªããšã§ãã ããããã©ã³ã¹ãããããã«ããã°ãããããšãéåžžã«å€ãã®å Žåãã¿ã¯ãŒãé »ç¹ã«çºç ²ãå§ããŸãã
1ã€æ-æ倧ã¬ãã«15
2ã€æ-æ倧ã¬ãã«20
3ã¹ã¿ãŒã-æ倧ã¬ãã«25
æ倧6åã®æãæ倧40åãŸã§ãæ倧ã¬ãã«ã«å°éãããšãã¢ã³ã¹ã¿ãŒã®æã®æ°ãå¢ããããšãã§ããŸãããã¢ã³ã¹ã¿ãŒã®ã¬ãã«ã¯æåã®ã¬ãã«ã«ãªã»ãããããŸãã ã²ãŒã å ã®ãã®ããã»ã¹ã¯EvolveãšåŒã°ããŸãã ãããè¡ãã«ã¯ãä»ã®ç¹å®ã®ã¢ã³ã¹ã¿ãŒããé£ã¹ããå¿ èŠããããŸããäŸïŒ
1å¹ã®ã¢ã³ã¹ã¿ãŒ2 s-> 3 sãé²åãããã«ã¯ãæ¢åã®2å¹ã®ã¢ã³ã¹ã¿ãŒ2ãé£ã¹ãå¿ èŠããããŸãã
4ç§-> 5ç§-4ã€ã®ã¢ã³ã¹ã¿ãŒã4ç§æ¶è²»ããå¿ èŠããããŸã
5s-> 6s-5 monsters 5s-ããã¯ã²ãŒã ã®æšæºã«ããéåžžã«åŽåéçŽçã§ãã
ã¢ã³ã¹ã¿ãŒã¯ããŸããŸãªæ¹æ³ã§åŒã³åºãããšãã§ããŸãããæçµçã«ã¯3ã€ã«ãªããŸãã
- å Žæã§ããã¯ã¢ãŠãïŒæ倧3ç§ããã£ã³ââã¹ã¯ããªãå°ããïŒ
- ã³ãŒã«ã®1-3å·»ïŒãããã1ã3ç§ã95ïŒ ãã³ãŒã«ãã1ç§ãŸãã¯2ç§ãç²åŸããŸãã1ç§-2ç§ã¢ã³ã¹ã¿ãŒã¯ã¹ã©ã°ã§ããã99ïŒ ã®å Žåã¯æ¶è²»ãããŸããå·»ç©ã¯éåžžã«é »ç¹ã«èœäžããã®ã§ã1æ¥20ã30åã倧éã«åé¿ããã«å ¥æã§ããŸãã
- 3ã5åã®ã¹ã¯ããŒã«ã¹ã¯ããŒã«ïŒ90ã95ïŒ ã§3ç§ã4ç§ã¯ãã£ãã«èœã¡ãã5ç§ã¢ã³ã¹ã¿ãŒã¯ãããã®ã¹ã¯ããŒã«ããèœã¡ãŸãããã¹ã¯ããŒã«ã¯èµ€ãã¯ãªã¹ã¿ã«çšã«ç¡å¶éã«è³Œå ¥ã§ããŸãããã£ãã«èœã¡ãŸããïŒ
ã²ãŒã ã®é貚ã«ã€ããŠïŒ
ãšãã«ã®ãŒ-PvEãã±ãŒã·ã§ã³ããã³ãžã§ã³ãžã®æ è¡ã«å¿ èŠã§ãã æ¶è²»-å Žæã«å¿ããŠ3ã8ã 5åã§1ã€ãã€èç©ãããå€ãã®å Žåã殺ãããMobããçŽæ¥èœäžããŸãã ãã¬ã€ã€ãŒã®ã¬ãã«ïŒã¢ã³ã¹ã¿ãŒã®ã¬ãã«ãšæ··åããªãããã«ïŒããã³ç¹å¥ãªå»ºç©ã®å©ããåããŠå¢å ãããšãã«ã®ãŒã®äžéããããŸãã
Arena Energy-ã¢ãªãŒãã§ã®ãã€ãã³ã°ã«äœ¿çšãããPvPã PvPãåŒçšç¬Šã§å²ãŸããŠããçç±ã«ã€ããŠã¯ãããå°ãäœããªããŸãã 競æå Žãžã®1åã®æ è¡ã¯ããšãã«ã®ãŒã®ç«¶æå Žã®1åäœãæ倧10ãè²»ããã30åã«1åèç©ããŸãã
éãæ°Žæ¶ã¯ã²ãŒã ã®äž»èŠé貚ã§ãã 圌女ã¯åºãã»ãšãã©ã®å»ºç©ããç©ãè²·ããŸããã ããŸããŸãªå»ºç©ã«èç©ããã殺ãããMobããèœäžããã¿ã¹ã¯ã«å¯Ÿããå ±é ¬ãšããŠäžããããŸãã
èµ€ãæ°Žæ¶ã¯ãå®éã®ãéã§è³Œå ¥ã§ãããã€ããŒé貚ã§ãã ãããã¯åãã¹ã¯ããŒã«3-5ã«è²»ãããããšãã«ã®ãŒãšãšãã«ã®ãŒã®é åãæŽæ°ãããããã®ããã«éãçµæ¶ãè³Œå ¥ããŸãã ãããŸãã«ãæ»ãã Mobãã¢ãªãŒãããèœã¡ãããšããããŸãã ã¡ãªã¿ã«ã1å·»3ã5ã®ã³ã¹ãã¯75ã§ãã
å声ãã€ã³ãã¯ãã¢ãªãŒãã«åã€ããã«äžããããé貚ã§ãã å€ãã®èå³æ·±ã建ç©ããªããžã§ã¯ããè³Œå ¥ãããŠããŸãã ãã®é貚ã¯ãä»ã®é貚ãå¯ä»ã®ããã«è³Œå ¥ããããšã¯ã§ããŸããã
ã²ãŒã å ã®ããŒããã¯ã€ã¶ããªãã§ãã ããã ãã¹ãŠãè¯å¥œã§ããéãæ³šå ¥ããããšãªãå·éã«åæ Œ/è³Œå ¥ãããŸããã å®éããããã¯ããå€ãã®å·»ç©ãæäŸããã ãã§ãããããããã圹ã«ç«ããªãã¢ã³ã¹ã¿ãŒãç²åŸããå¯èœæ§ã¯åãã§ãã ããŒããçšã«ç¹å®ã®ã¢ã³ã¹ã¿ãŒãè³Œå ¥ããããšã¯ã§ããŸããïŒå®éãããã¯ãŸã£ããäžå¯èœã§ãïŒã
æŠéã·ã¹ãã ã¯ãã¡ã€ãã«ãã¡ã³ã¿ãžãŒ7-10ã«äŒŒãŠããŸãããå¿ èŠã«å¿ããŠHoMM-ã¿ãŒã³ããŒã¹ã®æŠéã2-4åªæã®éžæãå¯èœã§ãã 3ãã10ã¬ãã«ïŒã»ãšãã©ã®å Žå3ãŸãã¯5ïŒã®ãã³ãžã§ã³ã§ã¯ãåã¬ãã«ã«Mobã®ããã¯ãããã殺ããŸã-ããã«é²ãã§ã殺ããªãã§ãã ãã-ç²åŸãããã¹ãŠã®ãã®ïŒã¯ãªã¹ã¿ã«ããšãã«ã®ãŒãçµéšïŒãæã«å ¥ããŸãã
ãPvPããšãå ±åãã¬ã€ãã«ã€ããŠã å€æããããã«ãããªãã¯äººãšå¯ŸæŠããæ©äŒã¯ãããŸããã èªåã§ãã¬ã€ããããããªãŒãã¢ã¿ãã¯ãã§ãã¬ã€ããåžžã«ã³ã³ãã¥ãŒã¿ãŒã«å¯ŸããŠè¡ããŸãã ãããã£ãŠãPvPã¯ããã§ã¯éåžžã«éå±ã§ãã ããã¯æ¬¡ã®ãã®ã§æ§æãããŠããŸããåãã¬ã€ã€ãŒã¯é²åŸ¡ã§4å¹ã®ã¢ã³ã¹ã¿ãŒãå ¬éããé²åŸ¡ã®ããã«ã¿ã¯ãŒãè³Œå ¥ããŸãã ã¢ãªãŒãã«å ¥ããšãããªãã¯AIãšæŠã£ãŠããŸãããããã¯ããªãæããªããšã§ãã ããããã©ã³ã¹ãããããã«ããã°ãããããšãéåžžã«å€ãã®å Žåãã¿ã¯ãŒãé »ç¹ã«çºç ²ãå§ããŸãã
ç§ã¯ãªã¢ãŒãããã°ã©ããªã®ã§ãèªå® ã§ä»äºãããŠããŸãã èªå® ã§ã¯ãåžžã«è¯ãwi-fiããããŸããã²ãŒã ããµãŒããŒãšã©ã®ããã«ãã€ããåããããã«ã€ããŠãç§ã¯æ¬åœã«èããŸããã§ããã
ç§ãã¢ãã€ã«ã€ã³ã¿ãŒãããããã²ãŒã ã«åå ããããšã«ãããŸã§ã 次ã®ãã³ãžã§ã³ã®ãã¹ãŠã®ã¬ãã«ãå®è¡ãããšãããããã¯ãŒã¯æ¥ç¶ãé ããŠããŸãã ããã«çµæãåéä¿¡ããŸããïŒ ïŒæŠéçµæãéä¿¡ãããªãå ŽåãæŠéã¯æ倱ãšããŠã«ãŠã³ããããŸããïŒ ãã¯ãããã¿ã³ãã¯ãªãã¯ããåŸãçµæã¯ãŸã ãµãŒããŒã«éãããŸããã
ã²ãŒã ã®èª¬æãèªããšãå€ãã®å Žæã«èœã¡ãŸããïŒãªãéåžžã®PvPãã²ãŒã ãäžç·ã«ååšããªãã®ã-ã²ãŒã ããµãŒããŒãšéä¿¡ããããšã¯ãã£ãã«ãããŸãããã»ãšãã©ã®å ŽåãHTTPçµç±ã§ãœã±ããã¯ãããŸããã ãããŠæãéèŠãªããš-æããã«ããã®ã²ãŒã ã§ã¯ã ã¯ã©ã€ã¢ã³ãã¯æŠéã®çµæãèšç®ãããµãŒããŒã¯ããããåä¿¡ããã ãã§ãã
ã²ãŒã ã®ããŸããŸãªæç¹ã§ã€ã³ã¿ãŒãããã®åæãããã«è©Šãããšããã次ã®ããšãããããŸããã
- å Žæãå ¥åãããšããµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããŸãã åæ ŒããåçãåŸããããšããã®å Žæãžã®ããŠã³ããŒããéå§ãããŸãã
- ãµãŒããŒã¯ããã±ãŒã·ã§ã³ã®ã¬ãã«éã®ç§»åãå¶åŸ¡ããŸããã
- Mobã®æçµããã¯ã殺ããšãå¥ã®ãªã¯ãšã¹ããéä¿¡ãããŸãã ããªãã®æŠå©åã¯ããã«å¿ããŠæ¥ãŸãã
- æŠéã®çµæãéä¿¡ã§ããããçããåŸãããªãå Žå-ããããã¯ãŒã¯æ¥ç¶ãé 延ããŠããŸã...ããšããåãã¡ãã»ãŒãžã衚瀺ãããŸãã ãã ããããäžåºŠããçŽãããšãããšïŒèŠæ±ãšå¿çãæž¡ãããŸãïŒããäžèŽããããŒã¿ãèŠã€ãããŸããããšããã¡ãã»ãŒãžã衚瀺ãããŸãã ããã¯ããã®å Žæã«ããŒããããšãæŠéã®å¿çIDãéä¿¡ãããã³ãžã§ã³ã®çµããã«çµæãéä¿¡ããããã«äœ¿çšãããããšã瀺åããŠããŸãã
- 説æã§è¿°ã¹ãããã«ãã¢ãããéãçµæ¶ã ããèœã¡ãããã§ã¯ãããŸããã ããªãé »ç¹ã«ããšãã«ã®ãŒãäœäžããææèµ€ãçµæ¶ãçºçããæŽåŸã®æ®ºå®³äžã«äœãã©ã®çšåºŠèœã¡ãããããããŸãã ãããŠãããã§èããæµ®ãã³ãŸãïŒã¯ã©ã€ã¢ã³ãã¯ãã©ãã ããäœãèœã¡ããã決å®ããããããµãŒããŒã«éä¿¡ããŸããïŒ ãã®å Žåããæ£ããããªã¯ãšã¹ããéä¿¡ããããšã§ããã³ãžã§ã³ããåã€ãããšãã§ããŸãããããã¯ç§ãã¡ã«ãšã£ãŠéåžžã«é£ããã ãã§ãªããããããæ°çŸã®èµ€ãçµæ¶ãšãšãã«ã®ãŒãåããŸãã
- ããããã¹ãŠã«ããããã³ãžã§ã³ãããŒã ãããã«ééããããšãæããããšã¯ã§ããŸããã ãŠã©ãŒã¯ã¹ã«ãŒïŒããããã®æ¹æ³ïŒãå®äºãããšããäžèŽããŒã¿ãèŠã€ãããŸããããšããã¡ãã»ãŒãžã衚瀺ãããŸããçµæã¯æ¢ã«éä¿¡ãããŠããŸãã
ã¢ã€ãã¢1.ãªã¯ãšã¹ããåœé ãã
äžèšã®ã¢ã€ãã¢ã®åŸã«æ¥ããããããªãæãè«ççãªã¢ã€ãã¢ã
ãªã¯ãšã¹ããåœé ããã«ã¯ããªãªãžãã«ãå¿ èŠã§ãã ãã©ãã£ãã¯ãç£èŠããããã®å€ãã®ãªãã·ã§ã³ããããŸãããç§ã¯èªåã§æãç°¡åãªãã®ãéžæããŸãããã©ããããããä»ããŠãã©ãã£ãã¯ãéä¿¡ããWireSharkã䜿çšããŠãã¹ãŠã確èªããŸãã
ã³ã³ãã¥ãŒã¿ãŒãã¢ã¯ã»ã¹ãã€ã³ãã«å€æŽããæé ã«ã€ããŠã¯ã ãã¡ããåç §ããŠãã ãã ã
ãã°ã®äžèŠãªããã€ãºããæžããã«ã¯ããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãéããŠåæããªãã«ããŸãã
ããŒãäžã«ãã²ãŒã ã¯Facebookããããã¢ãŒã·ã§ã³ãããŒãããŒãããã³å人ã«é¢ããæ å ±ãããŒãããŸããäžè¬ã«ããã©ãã£ãã¯ã¯å€ããç°ãªããµãŒããŒã«éä¿¡ããããããèå³ã¯ãããŸããã å Žæã«è¡ããŸãïŒ
ãªã¯ãšã¹ã
POST /api/gateway.php HTTP/1.1 User-Agent: Dalvik/1.6.0 (***) Host: *** Connection: Keep-Alive Accept-Encoding: gzip Content-Type: application/x-www-form-urlencoded Content-Length: 556 hEuirYJfxnRGR7vITBb1x/3KpY+0DZmSWBLuxNnJn+Vqdb2eg7X+TKBKgcldJEY1A59yw8ocPnyD/A+Xec5uLtk9IEojAmPTwDiJDNu6BcRKXQpCGIildUlzpBxCSSp0PU8OgSaXNqlP+aGrXnHGoZXKVREMPRAXZPwlOGD6XIemvS5wkWrv+4GBPhO3v21CEfify4wO0x6GWUswX55TbAiLbT4Lr3C4TKXJyJQ8eujxC7Nd0OFEK8d92KbamPEFocxJotYTNuLa6qwVfdpgvaoDCCeKGXvu+z3ZZCjaruh2XMHtg6MRU0ywpB7d5qR9b4JOYRGwe2z9WHXKZesSwl7S7HsLgKtjLKz9oIRJAiTgRIWGn2WM9WaMtFSn9fXyEj31lS3JWtJ4hkgntVYh4qC6DvnTt0XJTZBXWm93Ki2FVASHDkr+tTPNZm69uBWXQ8/a768aoaTO+v+1o/ymQ8TQBDeMt79XZ8w3kGYrXC9PZh8IacSA3KPqzVQxlFeXnyzuTuqTzef9ZB9B2yc0VGD+xeIwgswiyNOjTBYqKmI=
çã
HTTP/1.1 200 OK Server: nginx Date: Sat, 19 Jul 2014 15:04:16 GMT Content-Type: application/octet-stream; charset=utf-8 Content-Length: 1048 Connection: close X-Powered-By: PHP/5.4.11 Cache-Control: no-cache, must-revalidate Pragma: no-cache vyb3BQeGoRphqgM/QCIBv0m2Ms5lBf3iUEKauCdpgRCXWjyITAUa+t1w36VzBxlkZlYF+jH+Lmw+hmPbLtKj2pBidUrZ0CO44AsQ2erYG+m0n2WK8SY5m7Ioar1gNtim67rwpZQeGzP+dUvLE5T3Q/3iqua8dHNAhkrsrYyHYevbh535JODq0Qwd5y8ZQtsYQnl+Vtc2YeL6O3hvUc6UEKNHmc79saLz+PhH64nRA7xih+OLip3FGrgJdgDTTNBn2xBxyRmTeuoD1LqwKa/eWfDkwoA9IOMoc9NozoRyiUDRZjaya0VZH+k6DR4lRGMrDJtmBwjIWfAIbEg5K3xUEPtJIvU7QryaDTqZT+FOgQRr1sZ5MFzoDzJ+titAfbKNKZxF7QUDbAzi+o3j6pzZkioPbWMotsUWKUM/IOrfKcRGIV1yd0w8sGHhh9m7wDwbFA1/RCpifJBV528TZ9Ql3P3gQGvvqnGf5n88BpKXo3IF5+T3Fr9QXijR4kJ5H9MxltRCLB3DU41XZ9bQuP9o7IvWkt+TGvByAW4bI3JkLz855R7AzSoyrVfYPaguKH7yvJX6cQkm5GDqYRCwFA+mRQmHg6AEYbBS2M+DrZ1U/UvdB5bMY+sLDEPE6MLVeRadFjNzFlKkQxWUlGmzD06ia9kCOoyC9du4bCRTziH03qNK4m1tgwqw2jsUtu8I+HTK30YibHmrUWdqtfyIm0EqiXKI8ZsZYxsG1qeqYQNnQ9HIYxpYRXIETlLBl1Fs3bY1tXoUxetaNDVhxW/PMvFCLSJJCNJ6V8iJRieA0o23hqAKsJpDRANz8oEJ0vNKubXn7HeXq48UzkStqobE/UotzQ8ocdVBW7MgErF5DzjWLxgMjB3pnKiOFl8pqacD6qFWSywQtcF8xJ2RQMuEefusrrfFi67e5PLSdJW2utMIMAudJyllcOK4wNur6fo18J6zHyjzSklIuPhzPn2XQj+FcgUh1pU0wLKhuWq39PFCi4ekupSLt7j0VSZCoKDmKQO4q1b/SpeA5Bb7lW5TvgRSsg==
äžèŠãããšããããBase64ã§ããããšã¯æããã§ãã ããããæåã«ååŸãããã³ãŒããŒã«ããã¹ããæ¿å ¥ãããšãå®å šãªãã³ã»ã³ã¹ãåŸãããŸããããJSONãæåŸ ããŠããŸããïŒåè«ã§ããåçŽãããŸã-ã¢ããªã±ãŒã·ã§ã³ã«ã¯10kk以äžã®ããŠã³ããŒãããããŸãïŒã
ãã£ãšæ·±ãããå¿ èŠããã©
APKã²ãŒã ãããŠã³ããŒãããŸãïŒå€ãã®ãªãã·ã§ã³ãããããããå©çšããŸãã ïŒã APKãã¡ã€ã«ã¯éåžžã®ZIPã¢ãŒã«ã€ãã§ãããå€ãã®ãã®ãå«ãŸããŠããŸããããŸãã¯ãclasses.dexãã¡ã€ã«ã«èå³ããããŸãã ããã¯Dalvikå®è¡å¯èœåœ¢åŒã§ãã åºæ¬çã«ãã³ã³ãã€ã«ãããJavaã¯ã©ã¹ã ããããéãã«ã¯ã dex2jarãšjd-guiãå¿ èŠã§ã ã æåã¯dexãjarã«å€æãã2çªç®ã¯jarãããœãŒã¹ã³ãŒãã埩å ããããšããŸãã
jd-guiã埩å ãããã®ã¯éåžžã«æããããèªã¿åãå°çšã«èŠããŸãã ã³ã³ãã€ã«ããªãã§ãã ããã jd-guiã®ãœãŒã¹ãä¿åããŠããæ°ã«å ¥ãã®ãšãã£ã¿ãŒã§éãããšãã§ããŸãã JetBrainsãã30æ¥éã®IDEAãã©ã€ã¢ã«ãããŠã³ããŒãããŸããã補åã®æ€çŽ¢æ¹æ³ããšãŠãæ°ã«å ¥ã£ãŠããããã§ãïŒPyCharmã䜿çšããŠãããPHPStormã¯èªåã§è³Œå ¥ããŸããïŒã
ãã®ãšãã£ã¿ãŒã奜ã人ãžã®èŠå-SDKãèšå®ããªãã§ãã ããããšã©ãŒã§å€±æããŸãã
Androidã®ããã°ã©ãã³ã°ãããåºæ¬ã ããç¥ã£ãŠããã®ã§ãæ€çŽ¢ãéå§ããå ŽæãããããŸããã§ããã ããã§ããããžã§ã¯ãã§ãbase64ãã®æ€çŽ¢ãå®è¡ããBase64ãã³ãŒãããã³ãšã³ã³ãŒããå®è£ ããã¯ã©ã¹ãèŠã€ããŸããã ãããã®ã¡ãœããã¯ãã©ã€ãã©ãªãŒã¡ãœããã®åãªãã©ãããŒã§ã¯ãªããã³ãŒãããå€æããŠãBase64ãšã³ã³ãŒãããã³ãã³ãŒããå®éã«å®è£ ãããããããã«ã¯éåžžã«é©ããŸããã
ç§ã«æåã«æãä»ããã®ã¯ãã¯ãªãšã€ã¿ãŒãBase64ã«äŒŒãç¬èªã®äœããæžãããããšã³ã³ãŒãæ¹æ³ãç°ãªãããšã§ãã ã³ãŒãã¯ã²ã©ãããã«èŠããã®ã§ïŒ1000è¡ãè¶ ããã¡ãœãããgotoã®ã¡ãœããã埩垰çŽåŸã®ã¡ãœããã®æ瀺ããã®ä»ã®äººçã®åã³ïŒãç§ã¯ãããæžãæããããšãã§ããŸããã§ããã ãã®åŸããµãŒããŒãPHPã§äœæãããŠããããšãæãåºãã絶æããªãããšã«æ±ºããŸããã2ã€ã®ç°ãªããã©ãããã©ãŒã ã§2ã€ã®base64ãã€ãã£ãå®è£ ãéçºããã®ã¯éåžžã«é«äŸ¡ã ã£ãããã§ãã å°ãåŸã«ãJavaã§Base64ãã°ãŒã°ã«ã§æ€çŽ¢ããæšæºJavaã©ã€ãã©ãªïŒããŒãžã§ã³6ããã³7ïŒã«base64ãšã³ã³ãŒãããªãããšã«æ°ä»ããŸãããããã«ããã代æ¿ã®å®è£ ã«å¯Ÿããäžå®ããããããªããªããŸããã
ãã®ã¯ã©ã¹ã®äœ¿çšãæ€çŽ¢ããåŸãå¥ã®StringEncrypterã«è¡ããŸãããStringEncrypterã¯ããã€ãã®ã¡ãœãããå®è£ ããŠããŸãããäž»èŠãªã¡ãœããã¯åŸ©å·åãšæå·åã§ãã 埩å·åæ¹æ³ããã°ããèŠããšããããç§ãå¿ èŠãšãããã®ã§ããããšãããããŸããã ããŒã¿ã¯base64ãã埩å·åãããAES / CBC / PKCS7Paddingãå®è¡ããŠè¿ãããŸããã Cipherã«äœ¿çšãããããŒãšåæãã¯ãã«ïŒåæåãã¯ãã«ïŒãèŠã€ããããã«æ®ã£ãã ãã§ãã
ãããè¡ãããã«ãç§ã¯ãããã®æ¹æ³ã®äœ¿çšãæ¢ãå§ããŸããã ãŸããStringEncrypterã¯ã©ã¹ã¯ã©ãã§ã䜿çšãããŠããªãããšãããããŸããã ã³ã£ããããŸããããjd-guiã®æ¬ é¥ã ãšæããŸããã
ãããžã§ã¯ãã®æ€çŽ¢ãåéããŸããããä»åã¯ããã«Cipherãæ¢ããŸããã å€ãã®çµæããããããããããŸãã£ãŠãæããã«ãœãŒã¹ã³ãŒãã埩å ã§ããªããã¡ã€ã«ã«åºäŒããŸããã ã³ãŒãã®ä»£ããã«ãå éšãšã©ãŒãããã³ã°ããŸããã ãããžã§ã¯ãã§ãããšåããå éšãšã©ãŒãã®æ€çŽ¢ãéå§ãããšã55件ã®çµæãåŸãããŸããã äžéšã®ã¯ã©ã¹ã®äœ¿çšãèŠã€ãããªãçç±ãæããã«ãªããŸããã ãããã®ãã¡ã€ã«ã®äžã«ãActiveUserNetworkãšããèå³æ·±ãååã®ãã¡ã€ã«ããããŸããã
ãã£ãšæ·±ãããå¿ èŠããã©
ç§ã¯æ¬¡ã®ããšãæšæž¬ããŸãã-å¯äžã®ã¢ã»ã³ãã©ãŒã ãããŠãããèµ·ãã£ãã
Dalvik VMã«ã¯å€ãã®ãªãã³ãŒãããããå®éãsmaliã³ãŒãã¯èªã¿ããããç¹ã«ã¢ã»ã³ãã©ãŒã§éžæããå Žåã¯èªã¿ãããã§ãã
ä»åã¯smaliãšbaksmaliãå¿ èŠã§ã ã Backsmaliã¯ããã©ã«ããŒãšãã¡ã€ã«ã®éå±€ãšååãä¿æããªãããclasses.dexãã¡ã€ã«ããœãŒã¹ãã©ã«ããŒã«å€æããŸãã æåã¯ãåãjavaãã¡ã€ã«ãéããšsmaliã³ãŒããç解ããã®ãã¯ããã«ç°¡åã«ãªããŸãïŒãã¡ãããjd-guiããããéã³ã³ãã€ã«ã§ããªãã£ãå Žåãé€ããŸãïŒã ã€ã³ã¿ãŒãããã«ã¯ãã³ãŒãäŸãèŠã€ããååãªãªãœãŒã¹ããããŸããããšãã°ã ããã§ã¯ãsmaliã®é åãã©ã®ããã«èŠãããã/ switchã®æé ã瀺ããŠããŸãã
ããããç§ãã¡ã®ã²ãŒã ãç¹ã«ç§ã«èå³ã®ããActiveUserNetworkãã¡ã€ã«ã«æ»ããŸãã ãã¹ãŠãããã§èŠã€ãããŸãã-æå·åãæå·åããã³åŸ©å·åã¡ãœãããBase64ïŒãšããã§ãããã§ã¯android.utilsã©ã€ãã©ãªãã䜿çšãããŸããïŒãããã«ã¯å®æ° "httpïŒ//***.com/gateway.php"ãèŠã€ãããŸããã ã¯ããããã¯/api/gateway.phpã§ã¯ãªããå°ãªããšãäœãã§ãã ã¡ãªã¿ã«ããapi / gateway.phpãã®æ€çŽ¢ã§ã¯smaliã³ãŒãã§ãäœãåŸãããŸããã§ããããStringBuilderãé »ç¹ã«äœ¿çšãããããšãããã£ãã®ã§ãç§ã¯æ¬åœã«æã£ãŠããŸããã§ããã
ããã«ã¯smaliã³ãŒãã®ãã€ã©ã€ã衚瀺ã¯ãããŸããïŒççŽã«èšã£ãŠãååšããå Žæã¯ããŸããããŸããïŒããã®ã³ãŒãã®å€§éšåãã¹ã¯ãªãŒã³ã·ã§ãããšå ±ã«ã¢ããããŒãããŸãã
decrypt
æ¹æ³ïŒ
ã³ãŒãã®èª¬æïŒæåã®è¡ã«ã¯ãã¡ãœããã®æšæºçãªèª¬æïŒåãå ¥ãããããã®ãšæ»ããã®ïŒãå«ãŸããŠããŸãã ãã®ã¡ãœããã¯ãæååãšãã€ãé åã®2ã€ã®ãã©ã¡ãŒã¿ãŒãåããŸãïŒããã§ã¯[BïŒã®ããã«èŠããŸãïŒã ãã€ãé åãè¿ããŸãã
.localsãã£ã¬ã¯ãã£ãã¯ãã¡ãœããã䜿çšããã¬ãžã¹ã¿ã®æ°ã瀺ãããã©ã¡ãŒã¿ãŒã¯ã«ãŠã³ãããŸããã ãã®ãã£ã¬ã¯ãã£ãã«å ããŠã .registersãšåŒã°ããåæ§ã®ãã£ã¬ã¯ãã£ãããããŸããããã¯ãã¡ãœãããã©ã¡ãŒã¿ãå«ããã¡ãœããã§äœ¿çšãããã¬ãžã¹ã¿ã®æ°ã決å®ããŸãã ã€ãŸã äžè¬çã«ã.registers = .locals + paramsã åæã«ã.registersãã£ã¬ã¯ãã£ãã䜿çšããŠã¬ãžã¹ã¿ã®æ°ã宣èšãããšãã¡ãœãããã©ã¡ãŒã¿ã¯æåŸã®ã¬ãžã¹ã¿ã«åé¡ãããŸãã ã¬ãžã¹ã¿ãžã®ã¢ã¯ã»ã¹ã¯ãv0ãv1ãv2ãªã©ãä»ããŠããã©ã¡ãŒã¿ãŒp0ãp1ãªã©ã«ã¢ã¯ã»ã¹ããŸãã
ãã®ã¡ãœããã¯éçã§ããããªããžã§ã¯ããªãã§åŒã³åºãããŸããããã§ãªãå Žåã¯ã3ã€ã®ãã©ã¡ãŒã¿ãŒããããæåã®ãã©ã¡ãŒã¿ãŒã¯ïŒthisïŒã¡ãœãããåŒã³åºããããªããžã§ã¯ãã«ãªããŸãã 次ã®2ã€ã®ãã£ã¬ã¯ãã£ããæ¬ èœããŠããå¯èœæ§ããããŸã;ãããã¯ãã©ã¡ãŒã¿ãŒåã§ãã .annotaionsãã£ã¬ã¯ãã£ãã¯ãã¡ãœããã«é¢ããè¿œå æ å ±ããã®å Žåã¯ã¹ããŒãããäŸå€ã宣èšããŸãã .prologueãã£ã¬ã¯ãã£ãã¯ãã¡ãœããã®æ¬äœãããã«é²ãããšã瀺ããŠããŸãã
ããããã¹ãŠãèæ ®ãããšãæåã®11è¡ã¯Javaã³ãŒãã®1è¡ã«å€æãããŸãã
public static byte[] decrypt(String key, byte[] data) throws Exception {
ãªãã³ãŒãããŒãã«ãèŠãŠããªããžã§ã¯ãèªäœãåžžã«invoke-staticã®å Žåãšã¯ç°ãªããinvoke-virtualã®æåã®ãã©ã¡ãŒã¿ãŒãšããŠæž¡ãããããšãæãåºããŠãJavaã§éèªçã«ã¡ãœãããæžãæããŸãã
public static byte[] decrypt(String key, byte[] data) throws Exception { String v1 = "AES/CBC/PKCS7Padding"; Cipher cipher; cipher = Cipher.getInstance(v1); int v1_1 = 2; SecretKeySpec v2 = createSecretKey(key); AlgorithmParameterSpec v3 = spec; cipher.init(v1_1, v2, v3); byte[] v1_2 = cipher.doFinal(data); return v1_2; }
ããã§ã
spec
ã¯ActiveUserNetworkã¯ã©ã¹ã®éçå€æ°ã§ãããã¯ã©ã¹ã³ã³ã¹ãã©ã¯ã¿ãŒã§åæåãããŸã
.line 78 new-instance v0, Ljavax/crypto/spec/IvParameterSpec; const/16 v1, 0x10 new-array v1, v1, [B invoke-direct {v0, v1}, Ljavax/crypto/spec/IvParameterSpec;-><init>([B)V sput-object v0, Lcom/com2us/module/activeuser/ActiveUserNetwork;->spec:Ljava/security/spec/AlgorithmParameterSpec;
ãã®ã³ã³ã¹ãã©ã¯ã¿ãŒã³ãŒãã
getSpec
ã¡ãœããã«çœ®ãæããŸããã
decrypt
ã¡ãœãããéåžžã®åœ¢åŒã«ããŸãã
public static byte[] decrypt(String key, byte[] data) throws Exception { String alg = "AES/CBC/PKCS7Padding"; Cipher cipher = Cipher.getInstance(alg); SecretKeySpec secretKeySpec = createSecretKey(key); cipher.init(2, secretKeySpec, getSpec()); return cipher.doFinal(data); }
ãã®ããã
createSecretKey
ãš
getSpec
ã¡ãœããã®åŠçã¯
getSpec
ãŸãã
public static AlgorithmParameterSpec getSpec() { byte[] v1 = new byte[16]; return new IvParameterSpec(v1); }
ããã¯ãã³ã³ã¹ãã©ã¯ã¿ãŒããå€æãããã³ãŒãã§ãã ããã¯ãã§ã«å€ã§ãããç§ã®è³ã¯0x10ãšããæ°åã10é²æ³ã«å€æããŠã10ããšããŠããã èšç®æ©ã§ããã«ãã§ãã¯ããããšã«ããã®ã¯è¯ãããšã§ããããããªããšãç§ã¯å®å šã«å€±æããŸã:)
createSecretKey
ã¡ãœããïŒããã§ãã¡ãªã¿ã«ã¿ã€ãã«ã®èª€åãä¿®æ£ããŸãïŒ
ã¡ãœããã¯éåžžã«ã·ã³ãã«ã§ã次ã®ããã«å€æãããŸã
public static SecretKeySpec createSecretKey(String key) { return new SecretKeySpec(key.getBytes(), "AES"); }
ããŠãããŒãšããŒã¿ãšå ±ã«ã¡ãœããã«æž¡ããããã®ãèŠã€ããããšã ããæ®ã£ãŠããŸãã
processNetworkTask
ã¡ãœããã
processNetworkTask
æ åœããŸãã
processNetworkTask
ã¡ãœããã¯ãèŠæ±ãïŒæå·åãšBase64ãšã³ã³ãŒãã䜿çšããŠïŒåæã«éä¿¡ããå¿çãåä¿¡ããŸãã ãã®ã¡ãœããã¯å€§éïŒ1kè¡ïŒ
v18
ã察象ã®éšåã®ã¢ã»ã³ããªã®ã¿ãæçš¿ããŸãïŒ
v18
ã¯
org.apache.http.HttpResponse
ã¯ã©ã¹ã®ãªããžã§ã¯ã
org.apache.http.HttpResponse
ïŒ
èŠããã«ïŒ
REQ-TIMESTAMP
ããããŒå€ãååŸããã
createHash("MD5", header_value)
ã¡ãœããã
createHash("MD5", header_value)
ã è¿ãããæååãããæåã®æåãã16çªç®ã®æåãŸã§ã®éšåæååãååŸãããã®éšåæååãããŒãšãšãã«
decrypt
ã¡ãœããã«æž¡ããŸãã
Base64.decode()
ããã®ãã€ãé åã¯ãããŒã¿ã«ãã£ãŠè»¢éãããŸãã
ãã®ããã
createHash
ã¡ãœãããé€ããã¹ãŠã®ãã®ãæå ã«ãããŸãã
smaliã³ãŒãïŒ
ãã®æ¹æ³ã¯ãã§ã«èªèãã«ãããã®ã§ãããµã€ã¯ã«ãäŸå€ãããã³æ¡ä»¶ããããŸãã ãããŠãæå·åæ¹æ³ã«ééããç¯ãããšã¯äžå¯èœã§ãã ãã®1ã€ã®èšèšã«ã¯äŸ¡å€ããããŸãã
const/4 v7, 0x1 new-array v7, v7, [Ljava/lang/Object; const/4 v8, 0x0 aget-byte v9, v3, v1 invoke-static {v9}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; move-result-object v9 aput-object v9, v7, v8
ãããŠãããã¯
Byte v9 = mdByte[i];
ãã³ãïŒã»ãšãã©ã®å Žåã
goto
åã«å¢åïŒ
add-int/lit8 v1, v1, 0x1
ïŒã衚瀺ãããå Žåãããã¯forã«ãŒãã§ãã æçµçãªJavaã³ãŒãïŒ
public static String createHash(String algorithm, byte[] data) { try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(data); byte[] mdByte = md.digest(); String mdString = ""; int i = 0; int len = mdByte.length; for (i = 0; i < len; i++) { StringBuilder v5 = new StringBuilder(mdString); String v6 = "%02x"; Byte v9 = mdByte[i]; v6 = String.format(v6, v9); v5.append(v6); mdString = v5.toString(); } return mdString; } catch (NoSuchAlgorithmException e) { return ""; } }
ãã¹ãŠããŸãšããã æ°ããã¢ããªã±ãŒã·ã§ã³ãäœæããMainActivityã«ãã¹ãŠãããããããŸããã
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String b64 = ""; // Base64 request body String req_ts = ""; // REQ-TIMESTAMP header byte[] decodeBase64Byte = Base64.decode(b64, 4); String hash = createHash("MD5", req_ts.getBytes()); hash = hash.substring(0, 16); try { Log.d("MYAPP", "Decrypted: " + new String(decrypt(hash, decodeBase64Byte))); } catch (Exception e) { Log.d("MYAPP", e.getClass() + "-" + e.getMessage()); } }
ã§ã¯ãç§ãã¡å šå¡ããããè¡ãçç±ã«æ»ããŸãããã 泚ææ·±ãèªè ã¯ãäžèšã®å¿çãŸãã¯èŠæ±ã®ãããã«ãREQ-TIMESTAMPããããŒããªãããšã«æ°ä»ãããããããŸããã ãã ããèŠæ±ã¯/ api / gatewayã§ã¯ãªã/ gatewayã«éä¿¡ãããŸãã /ã²ãŒããŠã§ã€ãžã®ãªã¯ãšã¹ãã¯ãã¢ããªã±ãŒã·ã§ã³ã®åæåäžã«éä¿¡ãããŸãã ãããããã³ãŒãããã®ã¯2ã€ã ãã§ãã ããããããã€ã¹ãMACã¢ãã¬ã¹ãã¿ãã¬ããããã ã¡ãä»ããŠãããã©ããã«é¢ããããŒã¿ããããŸããã ããããç§ã¯äŸ¡å€ããããŸããã§ããã / api / gatewayãžã®ãªã¯ãšã¹ãã¯ã©ããããæ¥ããã®ã§ã/ gatewayã«é¢é£ä»ããããŠããŸããã
ç§ã¯smaliã³ãŒããæ±ã£ãŠããŸãããããã¹ãŠã®ã¡ãœãããåŠçããŠJavaã§æžãçŽããšãã決å®ã«è³ãåã«ãããŸããŸãªæ¹åã§ããã«ããã€ãã®è©Šã¿ãè¡ããŸããã
è©Šè¡1ïŒããŒãã©ã®ããã«çæãããããæ¢ãã®ã§ã¯ãªããåã«ãµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããŸãã smaliã³ãŒãã¯å€æŽããŠã³ã³ãã€ã«ãçŽãããšãã§ãããããã¢ã€ãã¢ã¯ã·ã³ãã«ã§ãããdecryptã¡ãœããã®åã«ããµãŒããŒã«ãªã¯ãšã¹ããè¡ããããŒãGETãã©ã¡ãŒã¿ãŒãšããŠæž¡ããŠãããWebãµãŒããŒã®ãã°ã確èªããŸãã
smaliã³ãŒããã³ã³ãã€ã«ããæ¹æ³ãæ¢ããŠãapktoolãèŠã€ããŸãã ã ãã®ããŒã«ã¯ãapkãã¡ã€ã«ãããã«è§£æããŠsmaliã³ãŒãã«ãããã¹ãŠåéããŠapkã«æ»ãããšãã§ããŸãã
./apktool decode ~/Downloads/***.apk ~/Documents/out/ ./apktool build ~/Documents/out/ ~/Downloads/***.new.apk
ãã ããæ°ããã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããããšãããšããšã©ãŒãçºçããŸãã
./adb install -r ~/Downloads/***.new.apk Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATE]
stackoverflowã§ã¯ãã¢ããªã±ãŒã·ã§ã³ãæåã§åé€ããŠããå床ã€ã³ã¹ããŒã«ããããšãå§ããŠããŸãããããã§ãç§ãæãããšã¯ã§ããŸããã§ããã æ°ããããŒãäœæããŸããããã«ã¯ãkeytoolãšjarsignerïŒopenjdkããã±ãŒãžã«å«ãŸããŠããŸãïŒãå¿ èŠã§ã
keytool -genkey -keystore ~/debug.keystore -validity 10000 -alias debug jarsigner -keystore ~/debug.keystore -verbose ~/Downloads/***.new.apk debug
éèŠãªæ³šæ-jarsignerã®åäœã¯jdkã®ããŒãžã§ã³6ãš7ã§ã¯ç°ãªããããŒãžã§ã³7ã§ã¯ããŒã ã¯ãšã€ãªã¢ã¹ãèªããŸãã ãã®åé¡ã®è§£æ±ºçãèŠã€ããããè¿œå ã®6ããŒãžã§ã³ãã€ã³ã¹ããŒã«ããŸããã
ãã®åŸãã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ããŒã«ã¯æåããŸãã ããããæ®å¿µãªããšã«ãã¢ããªã±ãŒã·ã§ã³ã¯ïŒå€æŽããªããŠããåã«decompile-compile-subscribe-installïŒããã«ã¯ã©ãã·ã¥ããŸããã ãµãŒããŒã¯äœããã®åœ¢ã§çœ²åããã§ãã¯ãããšæããŸãããã³ã¡ã³ãã®èª°ããæããã«ããŠãããã°å¬ããã§ãã ãã®èãã¯æŸæ£ãããªããã°ãªããŸããã§ããã
è©Šã¿2ïŒsmaliã³ãŒããããããããšãã欲æ±ããªãå ŽåïŒããããç§ã¯ãããæã£ãŠããªãã£ãã®ã§ãããã¯5æéã®ã¿ã¹ã¯ã ãšæã£ãïŒãããã¯ããç°¡åã§ãã ã¢ããªã±ãŒã·ã§ã³ã§ãã³ããŒãããã®ãšåãã€ã³ã¿ãŒãã§ãŒã¹ã§ç©ºã®ã¡ãœãããäœæããapkãäœæããéã³ã³ãã€ã«ããã¡ãœããã®æ¬äœãã³ããŒããŠãçµã¿ç«ãŠçŽããŸãã ãã®ãããªå埩ã¯ããããéåžžã«æéãããããŸãã ãããã£ãŠããªãã³ãŒãã調æ»ããæ¹ãéããªããŸãã çµã¿ç«ãŠãããã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ã³ãŒããéãããšãã§ããªãããšã¯æããã§ãã
ãã®èšäºã¯1æ¥ã§æžããããã®ã§ã¯ãªããäžèšã®æ®µèœã®1é±éåŸã«ãã®çºèšãæžããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ãèšè¿°ããã¡ãœããã®æ¬äœã«smaliã³ãŒããã³ããŒããæ¹æ³ã¯ãããŒçæã¡ãœããã®ãœãŒã¹ã³ãŒãã埩å ã§ããªãã£ããšãã«éåžžã«åœ¹ç«ã¡ãŸããã 人çãç°¡çŽ åããå埩æéãççž®ããããã«ããã¹ãŠã1ã€ã®ããŒã ã«ãŸãšããããšãã§ããŸã
apktool build ~/myapp/ ~/myapp.apk && jarsigner -keystore ~/debug.keystore -verbose ~/myapp.apk debug && adb install -r ~/myapp.apk && adb shell am start -n "com.example.myapp/com.example.myapp.MyActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER && adb shell logcat MYAPP:D *:S
ã¢ã€ãã¢2.ç§ãã¡ã¯ã¹ãŒããŒã¢ã³ã¹ã¿ãŒãäœããŸãã
ããŠããªã¯ãšã¹ãã§ããŸããããªãå Žåã¯ãéã«é²ã¿ãŸãã
æ°ããã¢ã³ã¹ã¿ãŒã¯ãGoogleãã¬ã€ã®æŽæ°ã§ã¯ãªããã²ãŒã å ã®æŽæ°ãéããŠã²ãŒã ã«èªã¿èŸŒãŸããŸãã ããã¯ãããããapkã®å€éšã®ã©ããã«ä¿åãããŠããããšãæå³ããçè«çã«ã¯å€æŽã§ããŸãã
é·ãéãã©ã«ããæ€çŽ¢ããå¿ èŠã¯ãããŸããã§ãã-/sdcard/Android/data/com.***/files/patch/
ããã§ããã¹ãŠã®ã¹ãã©ã€ããšãµãŠã³ããèŠã€ãããŸãããæãéèŠãªã®ã¯ãã¢ã³ã¹ã¿ãŒã®ååãšæ¡åŒµå.datãæã€å€ãã®ãã¡ã€ã«ã§ãã 16é²ãšãã£ã¿ãŒã§éããããã«èª¿ã¹ãŸã-ç®ãåŒãããããŒãè¡ã¯ãããŸããã ééããæåã®ã¬ãã«1ã®ã¢ã³ã¹ã¿ãŒãåãããã®HPãèŠãŠããã¡ã€ã«ãæå·åãããŠããªãããšãæåŸ ããŠããããã®ãã€ãã®æ€çŽ¢/眮æãéå§ããŸããã 7件äžèŽããŸããã ããããé çªã«äº€æãããšã4ã€ã®ã²ãŒã ã¯ã©ãã·ã¥ãš3ã€ã®ãäœãå€ãã£ãŠããªãããçºçããŸããã æå·åãããŠããŸãã
ããããäœãã解èªããå¿ èŠããããŸãïŒ æ£èŠè¡šçŸã³ãŒãã\ .dat \ bããæ€çŽ¢ããŠããŸãïŒçµæã§ãdataãã§å§ãŸãã¡ãœãããé€å€ããããïŒã CommonData.datãã¡ã€ã«ã®ã¿ãèŠã€ãããŸããã ãã®ãã¡ã€ã«ã¯/data/data/com.***/ãã©ã«ããŒã«é ãããŠããŸãïŒ/ dataãã©ã«ããŒã«ç©ºã®ãã©ã«ããŒãããå Žåã¯ãrootã¢ã¯ã»ã¹ãå¿ èŠã§ãïŒã
ãã¡ã€ã«ã¯æå·åãããŠããããµã€ãºã¯1kbã§ãã ããã«äŸ¡å€ã®ãããã®ã¯äœããªãããšã¯æããã§ãããæå·åã¢ã«ãŽãªãºã ã¯åããããããŸããã ä»åã¯ã³ãŒããã¢ããããŒããããçŽ1000è¡ããããŸãã æãéèŠãªã®ã¯ãANDROID_IDã«åºã¥ãããŒã埩å·åããŒã«æž¡ãããããšã§ãã ãã¡ã€ã«ãéããåŸãMACã¢ãã¬ã¹ãïŒåã³ïŒèŠã€ãããŸããã ã¢ã³ã¹ã¿ãŒãã¡ã€ã«ã§åãã¢ã«ãŽãªãºã ããã¹ããããšããããšã©ãŒãçºçããŸããã
æ²ãã¿ã¯åæããŠããŸãã
ããã«ã¡ã¯ã¢ã»ã³ãã©ãŒïŒ
ããããåã/data/data/com.***/lib/ãã©ã«ããŒã§ã.soã©ã€ãã©ãªã«åºäŒããŸããã ç§ã¯ãã§ã«apkã§ããããèŠãŠãMainActivityã§ãããã®æ¥ç¶ãèŠãŸããïŒæ£çŽãªãšãããç§ã¯ããããéžã¶å¿ èŠããªãããšããã®éãã£ãšæ¬åœã«æã¿ãŸããïŒã libgame.soãlibcom ***ãšãã2ã€ã®ã©ã€ãã©ãªããããŸããã 2çªç®ã®ãã®ã®ééã¯éåžžã«å°ããã䟡å€ããããŸããã§ããã æåã«16é²ãšãã£ã¿ã§éãã30ååŸã«ãhttpïŒ//***.com/gateway/api.phpããšããè¡ãèŠã€ããŸããã
ãã£ãšæ·±ãããå¿ èŠããã©
ããªããç²ããŠããªãããšãé¡ã£ãŠããŸã:)ç§ãã¡ã¯æåããã»ãšãã©å§ããŠããããã§ãã
ççŽã«èšã£ãŠããã®æ®µéã§ç§ã¯çŽ20ã30æéãè²»ãããŸããã ããã»ããµã®ãªãã³ãŒããã¬ãžã¹ã¿ãããã³ã¡ã¢ãªã«æ £ããŠããªãå Žåã¯ãé·ãéããã«ããããšããããŸãã ç§ã¯ã人ãããã«ããã©ã®ã¢ããªã±ãŒã·ã§ã³ããããã£ãããããšã蚌æããããšããç²ã匷ããšé¡æã«ãã£ãŠã®ã¿æãããŸããã
ããŒã«ãšãã¯ããã¯ã®éžæã«å€ãã®æéãè²»ããããŸããã ãããŠãæ®ãã®èšäºãå°æ¥æ°æéã§èª°ããæããªããããã¯çŽ æŽãããããšã§ãã
ããŒã«ãããã
Ida Pro 6.1+ã¯ã¡ã€ã³ã®ãããã°ããŒã«ã§ãã ããŒãžã§ã³6.1以éãandroid_serverãã¡ã€ã«ãšãAndroidã¢ããªã±ãŒã·ã§ã³ããªã¢ãŒãã§ãããã°ããæ©èœãå®å šã«ä»å±ããŠããŸãã
gdbserverã¯ããªã¢ãŒããããã°çšã®å¥ã®ããŒã«ã§ãã
ãã®æç¹ã§ãããã€ã¹ãžã®ã«ãŒãã¢ã¯ã»ã¹ãå¿ èŠã§ãã
äž¡æ¹ã®ãµãŒããŒãããã€ã¹ã«ããŠã³ããŒãããŸãã
adb push gdbserver /data/local/tmp adb push android_server /data/local/tmp
ããŒã«ã«ãã¹ããžã®ããŒã転éãæ§æããŸãã
adb forward tcp:5039 tcp:5039 adb forward tcp:23945 tcp:23945
å¿ èŠãªæš©å©ãå ¬éããŸãã
adb shell su chmod 755 /data/local/tmp/gdbserver chmod 755 /data/local/tmp/android_server
äž»ãªã¢ã€ãã¢ïŒ ãã®ãããã¯ã®ãããã§ãæéãå€§å¹ ã«ç¯çŽã§ããŸããïŒïŒ
- android_serverãä»ããŠæ¥ç¶ããã©ã€ãã©ãªãèŠã€ãããªãã»ãããèŠããŠãã ããã
- æå®ããããªãã»ããã§ã©ã€ãã©ãªãIdaã«ããŒãããŸãã
- Idaã¯åæããé¢æ°åãå ¬éããã¹ã±ãžã¥ãŒã«ãåŒã³åºããããã«ãœãŒã¹ã³ãŒãã®åçŸãè©Šã¿ãŸãã
- ããã€ã¹ã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŸãã
- æ¢ã«åæãããã©ã€ãã©ãªãgdbserverçµç±ã§ã¢ããªã±ãŒã·ã§ã³ã«ããŒãããŸã
- ãã¬ãŒã¯ãã€ã³ããèšå®ããåæããŸãã ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããå Žå
goto 4
ã
2ã€ã®ãµãŒããŒããªã¢ãŒããããã°ã«äœ¿çšãããã®ã¯ãªãã§ããïŒ android_serverã¯çŸããããŒããããã©ã€ãã©ãªã衚瀺ã§ããç®çã®ã©ã€ãã©ãªã®ãªãã»ããã¯éåžžã«é«éã§ãã ãã ãããã¬ãŒã¯ãã€ã³ãã¯æ©èœããŸããã ãã ããgdbã§ã¯æ£åžžã«æ©èœããŸãã
info sharedlibrary
ã䜿çšããŠgdbã¯ã©ã€ã¢ã³ããã
info sharedlibrary
ãæ¢ãããšãã§ããããã§ãããããã¯ããŸããããŸããã§ããã
Idaã§å¿
èŠãªèšå®ã®å Žæ
ãããªãã»ããä»ãã®ãã¡ã€ã«ãããŠã³ããŒãã§ããŸãã åããŠã£ã³ããŠã§ãããã»ããµã®ã¿ã€ãã瀺ãå¿ èŠããããŸãã
ãªã¢ãŒããããã¬ãŒã®éžæïŒ
ã
ãããã¬ãŒã®æ¥ç¶ã®æ§æïŒ
ã ããã§ãlocalhostããã³çŸåšäœ¿çšäžã®ãµãŒããŒããŒããèšå®ããŸãã
File > Open > > Manual load
ãããªãã»ããä»ãã®ãã¡ã€ã«ãããŠã³ããŒãã§ããŸãã åããŠã£ã³ããŠã§ãããã»ããµã®ã¿ã€ãã瀺ãå¿ èŠããããŸãã
ãªã¢ãŒããããã¬ãŒã®éžæïŒ
Debugger > Switch debugger
ã
ãããã¬ãŒã®æ¥ç¶ã®æ§æïŒ
Debugger > Process options
ã ããã§ãlocalhostããã³çŸåšäœ¿çšäžã®ãµãŒããŒããŒããèšå®ããŸãã
å¥ã®éèŠãªãã€ã³ãïŒ
ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããå ŽåãïŒäœããã®ç¢ºçã§ïŒæåãããã¹ãŠã®æé ãå®è¡ããå¿ èŠããããŸãã ASLRãã¯ãããžãŒããã¹ãŠã§ãã ç¡å¹ã«ããã«ã¯ãã·ã§ã«ã§å®è¡ããŸãïŒ
echo 0 > /proc/sys/kernel/randomize_va_space
泚æïŒ ããã¯ãããã€ã¹ã®ã»ãã¥ãªãã£ã«å€§ãã圱é¿ããŸãã ãã®ãã©ã¡ãŒã¿ãŒã®å€ãèŠããŠãå®éšåŸã«ãã®å Žæã«æ»ãããšãå¿ããªãã§ãã ããã
ãããã£ãŠããã詳现ãªè¡åèšç»ïŒ
- android_serverãå®è¡ããŸãã
adb shell su /data/local/tmp/andoid_server
- äœãããŒãããã«Idaãéãã
Debugger > Attach to > Remote ARM/Android Debugger
ãŸãã - ãªã¹ãããç®çã®ã¢ããªã±ãŒã·ã§ã³ãéžæããŸãã
- ã©ã€ãã©ãªãæ¢ããŠããŸãïŒå€ãã®ãªãã·ã§ã³ããããŸãããç§ãã§ããæéã®æ¹æ³ã¯ãç®ã§ãããèŠã€ããããšã§ã-ã¹ã¯ããŒã«ãšãã©ãŠãžã³ã°ãæ€çŽ¢ã¯ãã£ããåäœããããŒã¯ãžã®ãžã£ã³ãã¯åžžã«åäœããŸããã
- ã©ã€ãã©ãªãªãã»ããïŒç§ã®å Žåã¯
5D699000
ïŒãèŠããŠãããŠãã ããã - ããã»ã¹ããåæããŸãïŒã
Debugger > Detach from process
ãããã»ã¹ããDebugger > Detach from process
ïŒã ããã€ã¹äžã®ããã»ã¹ã¯åäœãç¶ããŸãã - ãã¡ã€ã«ãéããç®çã®ãªãã»ãããèšå®ããŸãïŒç§ã®å Žåã¯
0:5D699000
ïŒã - Idaããã¡ã€ã«ã解æããŠããéã«ãandroid_serverã匷å¶çµäºããgdbserverãæºåããŸãã
adb shell su /data/local/tmp/gdbserver --attach :5039 1234
ïŒ--attachãªãã·ã§ã³ã¯ãæ¢ã«å®è¡äžã®ããã»ã¹ã«åå ãããããµãŒããŒã«æ瀺ããŸãã5039ã¯ããŒãçªå·ã1234ã¯ããã»ã¹ã®pidã§ããããã¯ãã·ã§ã«ã®éåžžã®ps
ã§ç¢ºèªã§ããŸãïŒã - Idbã®èšå®ãå€æŽããŠãgdbserverã§åäœããããã«ããŸãã
- ããã»ã¹ã«æ¥ç¶ãããŠããŸãã
ããã§ããã¹ãŠãæ£ããè¡ãããå ŽåãIdaãåæããã©ã€ãã©ãªã³ãŒããé©åãªå Žæã«é 眮ãããŸãã
ã©ã€ãã©ãªã®é¢æ°ã®ãªã¹ãã調ã¹ããšããããµãŒããŒãšã®å¯Ÿè©±ãæ åœããéåžžã«èå³æ·±ãã°ã«ãŒããèŠã€ãããŸããã æ©èœã®äžéšã次ã«ç€ºããŸãã
- battleArenaStart
- battleArenaResult
- battleDungeonStart
- battleDungeonList
- battleDungeonResult
ãããã®é¢æ°ã¯ãã¹ãŠJSONã圢æããããŒã¿ãèšå®ããŠã
sub_5D839994
é¢æ°ãåŒã³åºããŸããã ãã®æ©èœã¯ããµãŒããŒãšã®éä¿¡ã®åºç€ã§ãã æååãæå·åããbase64ã«ããã¯ããŠãããŒã¿ãéä¿¡ããŸãã
å€å°ãªããšãæ確ãªsmaliã³ãŒãã§ãã£ãŠããæå·ããããã®ã¯å°é£ã§ããã ãŸãã«å°çã§ããã æå·åã«äœ¿çšãããããŒãèŠã€ããŸããããIVã®æ€çŽ¢ã§è¿·åã«ãªããŸããã
ãããããã§ã«ãããã¬ãŒã§ã¢ããªã±ãŒã·ã§ã³ãåæ¢ããŠããã®ã§ãæå·åããåã«åç·ãååããå€æŽããŠã¢ããªã±ãŒã·ã§ã³ãç¶è¡ããã ãã§ååã§ãã ãããŠãå€æŽãããæååã¯ãµãŒããŒã«éãããŸãã
å ã»ã©èšã£ãããã«ããã®é¢æ°ïŒ
sub_5D839994
ïŒã¯ãµãŒããŒãšã®éä¿¡ãããå ŽæïŒãŸãã¯ã»ãŒã©ãã§ãïŒã§äœ¿çšãããããããã¬ãŒã¯ãã€ã³ãã眮ãããšã¯ã»ãšãã©åœ¹ã«ç«ãããã²ãŒã ã«ã¯ãã£ãããããã®ã§ããã«åäœããŸãã
å°ãææ¢ãããŠã解決çãèŠã€ããŸããã 2ã€ã®ãã¬ãŒã¯ãã€ã³ããèšå®ããŸãã1ã€
sub_5D839994
ã¯ç®çã®é¢æ°ã®åŒã³åºãã®åããã1ã€ã¯åæããã圢åŒã§
AESConvertEncode
ãæååã®æå·åãæ åœããé¢æ°ã®çŽåã§ãã
ã ãããçå®ã®ç¬éãç§ãã¡ã¯åŒ·ãæµã«å¯ŸããŠã¢ãªãŒãã«å ¥ããŸããæåãããšãããã倱ããã¢ããªã±ãŒã·ã§ã³ãããªãŒãºããŸã-ãã¬ãŒã¯ãã€ã³ãã¯æ©èœããŸãããããããªãã«ããå
AESConvertEncode
ã«ãã¬ãŒã¯ãã€ã³ãããªã³ã«ããã¢ããªã±ãŒã·ã§ã³ãèµ·åããŠ...ãããã¬ã¯æå·åã®çŽåã«å¶åŸ¡ãåããŸãããã¬ãžã¹ã¿ã®å 容R0ïŒ
{ "command": "BattleArenaResult", "id": 1234567, "session_key": "***", "win": 2, "unit_status": [ {"unit_id": 1,"result": 2}, {"unit_id": 2,"result": 1}, {"unit_id": 3,"result": 1}, {"unit_id": 4,"result": 1} ], "unit_list": [ {"unit_id": 123456781, "pos_id": 1}, {"unit_id": 123456782, "pos_id": 2}, {"unit_id": 123456783, "pos_id": 3}, {"unit_id": 123456784, "pos_id": 4} ], "position": {"island_id": 1, "pos_x": 14, "pos_y": 22} }
ïŒ9ïŒïŒ ã確èªããã-ãã®ã²ãŒã ã§ã¯ãã¯ã©ã€ã¢ã³ããæŠéã«åã¡ããµãŒããŒã®ã¿ãçµæãååŸãããã©ããã決å®ããŸãã
ãã¬ãŒã¯ãã€ã³ããå ã«æ»ãã念ã®ããäœãå€æŽããŸããã§ãã-ç¹ã«ç解ã§ããªãããŒã¿ããããŸãã
unit_status
ããã®æŠãã§ãç§ã¯ãªããšãæµã®4å¹ã®ã¢ã³ã¹ã¿ãŒã®ãã¡1å¹ã殺ãããšãã§ããã®ã§ã倧éã®id-resultãã¢ã³ã¹ã¿ãŒã®æ®ºå®³ã«é¢ããããŒã¿ããµãŒããŒã«éä¿¡ãããšæšæž¬ããŸããïŒ2-æ»äº¡ã1-çåïŒãå°ãåŸã«ããããçå®ã§ããããšã«æ°ã¥ããŸãããããããããã®ããŒã¿ã¯ãåå©ã®è¿œå ãã§ãã¯ããã³æ»æè ã®æ€çŽ¢ãšããŠäœ¿çšãããŸãããæããã«ã圌ãã®äž»ãªç®æšã¯ã¢ã³ã¹ã¿ãŒããã®ç¥å¥ªã§ããèŠããŠãããªããæåã«ä»¥äžãæžããïŒ
, . , , . : , , ? , «» , «» , , - .
ãã³ãžã§ã³ã«å ¥ããšããµãŒããŒã¯ã¢ã³ã¹ã¿ãŒã®ãªã¹ããäœæããåæŠå©åã«ãã€ã³ãããŠãã¯ã©ã€ã¢ã³ãã«ããŒã¿ãéä¿¡ããŸãããããã£ãŠãã²ãŒã å ã§äœãã©ã®çšåºŠèœã¡ãããããã«ç¢ºèªã§ããŸããã¯ã©ã€ã¢ã³ãã¯ä»¥åã«åãåã£ãæ å ±ã衚瀺ããã ãã§ããåŸã§ã圌ã¯ããªããç²åŸããè³æãéä¿¡ããŸããããã¢ã³ã¹ã¿ãŒã®ã¹ããŒã¿ã¹-ããããªã¢ã¢ã©ã€ãïŒåå©ã®å Žåã«ãããå¿ èŠãªçç±ã説æããŸãïŒã²ãŒã ã«ã¯ãã¬ãã«ã§ãã¹ãŠã®ã¢ã³ã¹ã¿ãŒã殺ãããšãªãå°éã§ããå ŽæããããŸããäŸãã°ãã¹+ 2ã¢ã³ã¹ã¿ãŒãã®å Žåããã¹ã殺ãã ãã§ãããã«å ã«é²ã¿ãŸãïŒããµãŒããŒã¯ãã®æ å ±ãåãåãããã®æ å ±ãæŠå©åããŒãã«ãšæ¯èŒãã殺ãããã¢ã³ã¹ã¿ãŒã«å¿ããŠçµéšå€/ãªãœãŒã¹ãå²ãåœãŠãŸããçµéšãç©ãããã«ãæŠéã«åå ããŠããã¢ã³ã¹ã¿ãŒã®ãªã¹ããéä¿¡ããŸãã
çè«çã«ã¯ããããã¬ã®å©ããåããŠè¡ãããšã¯ãã¹ãŠãã²ãŒã ã«ãšã£ãŠéåžžã«æ£åœãªãã®ã«èŠããŸããåå©ããã¹ãŠã®ã¢ã³ã¹ã¿ãŒã¯æ»ãã§ããŸããç§ãã¡ãçŠæ¢ãããã®ã¯äœããªãããã§ããããããå°ãé ããŠäžæå¿«ãªç¬éãèŠã€ããŸãããå ã»ã©èšã£ãããã«ãå Žæã¯3ã€ä»¥äžã®ã¬ãã«ã«åãããŠããŸããåã¬ãã«ã«ã¯MobããããŸããããšãã°ã次ã®ç¶æ³ãæ³åããŠãã ããïŒ
ã¹ããŒãž1-3ã¢ã³ã¹ã¿ãŒïŒç§ãã¡ã¯ãããã殺ããããã«é²ãã ïŒ
ã¹ããŒãž2-4ã¢ã³ã¹ã¿ãŒïŒããã§ã¯1ã€ã殺ããŠæ»ãã ïŒ
ã¹ããŒãž3-3ã¢ã³ã¹ã¿ãŒïŒä»¥åã«æ»ãã ã®ã§ããã®ã¬ãã«ã«å ¥ããªãã£ãïŒ
æå·åã®åã«JSONãã€ã³ã¿ãŒã»ãããããšã次ã®ããã«ãªããŸãã
"unit_status": [ // Stage 1 {"unit_id": 1,"result": 2}, {"unit_id": 2,"result": 2}, {"unit_id": 3,"result": 2}, // Stage 2 {"unit_id": 4,"result": 2}, {"unit_id": 5,"result": 1}, {"unit_id": 6,"result": 1}, {"unit_id": 7,"result": 1} ]
ã芧ã®ãšããã3çªç®ã®ã¬ãã«ã«å°éããªãã£ãããããã®ã¬ãã«ã®ã¢ã³ã¹ã¿ãŒã«é¢ããããŒã¿ã¯ã¢ããããŒãããŸããã§ããããªã¯ãšã¹ãããåã€ãã«å€æŽããæ¢åã®ã¢ã³ã¹ã¿ãŒã®ã¹ããŒã¿ã¹ããããããã«å€æŽããŠãã3çªç®ã®ã¬ãã«ã«æ®ã£ãŠãã3ã€ã®Mobã«å°éããããšã¯ã§ããŸããããããŠãµãŒããŒã«ãšã£ãŠã¯ã圌ããçããŠããã®ã§ããçããåºããšããŠããç§ãã¡ã¯åã¡ãŸãããçè«çã«ã¯ã圌ãã¯ããããã£ããããŠçŠæ¢ããããšãã§ããŸããããããç§ã¯ãŸã çããŠããŸã:)
åæã«ãã¢ãªãŒãã«ã¯1ã€ã®ã¬ãã«ãããªããããããããã®èŠæ±ã¯100ïŒ çå®ã«èŠããŸãã
ããã§ãã¹ãŠãæããã«ãªããŸãããèµ€ãã¯ãªã¹ã¿ã«ãç¡å¶éã«ç²åŸããããšã¯ã§ããŸããããåžæããæŠãã«åã€ããšãã§ããŸãããã ãããã®ããã«ã¯ãããã€ã¹ãã³ã³ãã¥ãŒã¿ãŒã«æ¥ç¶ãããŸãŸã«ãã絶ãããã¬ãŒã¯ãã€ã³ããåãæ¿ããŠãæå·åã®åã«èŠæ±ãæåã§ããçŽãå¿ èŠããããŸããããã¯ããŸã䟿å©ã§ã¯ãããŸãããçè«çã«ã¯ãããŸãå¿ èŠãããŸããããã¹ãŠã®Mobã«å¯ŸããŠããŠããããåžžã«ãwinããšãresultãã®2ã€ã«èšè¿°ããŸãã
JSONã«ãwinããè¿œå ããã³ãŒããæ¢ããŠããŸãããã¬ãŒã¯ãã€ã³ããå°ãããã£ãŠããã®äœåãèŠã€ããŸããã
MOVS R0, R6 BLX __floatsidf BL cJSON_CreateNumber LDR R1, =(unk_5D8C3240 â 0x5D84666E) ; "win" MOVS R2, R0 LDR R0, [SP,#0x30+var_2C] ADD R1, PC BL cJSON_AddItemToObject
ã©ãããã
R6
ç§ãã¡ãå¿ èŠãšããã®ã¯åå©ã®æå³ã§ãã次ã«ãåå©ãèªåçã«å²ãåœãŠãããã«ãã®æ瀺ãå€æŽããå¿ èŠããããŸãã
ã²ãŒã ã«ã¯ãã€ã§ãæŠéãçµäºããèœåããããæåã¯ã«ãŠã³ããããããšã«æ³šæããŠãã ãããã€ãŸããç§ãã¡ã¯åžžã«å€±ãæ©äŒããããããã¯
R6
åžžã«2ã«ãªããšæåŸ ã§ããŸããããããåçŽã«2ïŒ0x2ïŒãã2ãïŒ0x32 ASCIIïŒãã¯ããŸãæ確ã§ã¯ãããŸããã§ããã
ãã€ã³ããå°ãã-æ瀺ãå€æŽããŸããæ®å¿µãªãããIdaã¯ASMã³ãŒãã®å€æŽãèš±å¯ããŠããªããããåœä»€ã®ããããå€æŽããå¿ èŠããããŸãã
ãŒããš1ã§ããã°ã©ãã³ã°ããæ¹æ³ãåŠã³ããã§ããïŒç§ã¯ããããæã£ãŠããŸãïŒ
確ãã«ã2ã€ã®ãã¿ã³ã§ç¹å¥ãªåã³ã®ããã°ã©ãã³ã°ãè¡ããæ瀺ãåŠç¿ããŸãããããã§ãããã§ãããŠãããã«è¯ãææãšæ瀺ã®ãã³ãããããŸãã
16é²ãšãã£ã¿ã«ç§»åããå éšããã©ã®ããã«èŠãããã確èªããŸãã
MOVS R0, R6 ; 321
åœä»€ãè£è¿ããååŸã
1C32
ãŸãããã€ããªåœ¢åŒïŒ
0001 1100 0011 0000
ã芧ã®ãšããã2ãã€ãã®åœä»€ã䜿çšãããŸããããã¯ARMã§ã¯ãªãïŒ4ãã€ãã®ãã®ã䜿çšãããŸãïŒãThumbãŸãã¯Thumb-2ã§ãã
ãã ãã
MOVS
ãã®ãããªæ瀺ã¯èŠã€ãããŸãããå®éãåœä»€ã¯æ¬¡ã®ããã«ãªã
ADDS R0, R6, #0
ãŸããåæäžã«ãIdaã¯åœä»€ããã䟿å©ãªæ¹æ³ã«å€æããŸããããã«ãããå°ããªç·šéäžã®åé¡ãçºçããå¯èœæ§ããããŸãã
0001110 000 110 000 ADDS Imm Rn Rd
ADDS
-ãã®éšåã¯ãã®åœä»€ã«å¯ŸããŠäžå®ã§ã
Imm
-å³å€ãè¿œå ãããåœé¢ã®æå³ã
Rn
-è¿œå ããã¬ãžã¹ã¿ã
Rd
-å®å ã¬ãžã¹ã¿ãåœä»€ã®å®è¡åŸã«éé¡ãä¿åããã¬ãžã¹ã¿ã
ãããã£ãŠããã®åœä»€ã眮ãæããå¿ èŠããããŸããã©ã®ç¹å®ã®ãã¥ãŒã¹ã䜿çšããããããããªãã£ãããã次ã®ãªãã·ã§ã³ãéžæããŸããã
SUBS R0, R6, #1
åœä»€ã¯ãŠããã£
SUBS
ããæžç®ã
R6
ãçµæãã«å ¥ã
R0
ãŸãããã®çµæãã©ã®ãã¥ãŒã¹ãå ¥ã£ãŠããŠ
R6
ãã
R0
å¿ èŠãªãŠãããã¯å ¥ã£ãŠããŸãã
ãã€ããªåœ¢åŒã§ç¿»èš³ããŸãïŒ
0001111 001 110 000 SUBS Imm Rn Rd
16é²æ°ã§-
1E70
ãããªãã-
701E
ã次ã«ãã©ã€ãã©ãªå ã®ãã®åœä»€ã眮ãæããŸãã
ããã¯ïŒ
MOVS R0, R6
次ã®ããã«ãªããŸããïŒ
SUBS R0, R6, #1
念ã®ããããã¬ãŒã¯ãã€ã³ã
AESConvertEncode
ã䜿çšããŠé¢æ°ã®å ¥ãå£ã«ããã¬ãžã¹ã¿ããã§ãã¯ãããã¹ãŠãæ£ããããšã確èªããŸãã
ã¢ã³ã¹ã¿ãŒã«ã¹ããŒã¿ã¹ãå²ãåœãŠã責任ã®ããåœä»€ã®ã¿ã眮ãæããããšã«å€ããã¯ãããŸããã
圌女ã¯ããäžã«ããŸãã
ADD R8, PC ; "unit_id" MOV R9, R3 ADD R9, PC ; "result" loc_5D8466E2 BL cJSON_CreateObject MOVS R4, R0 LDMIA R7!, {R0,R1} BLX __floatundidf BL cJSON_CreateNumber MOV R1, R8 MOVS R2, R0 MOVS R0, R4 BL cJSON_AddItemToObject LDMIA R6!, {R0} BLX __floatsidf BL cJSON_CreateNumber MOV R1, R9 MOVS R2, R0 MOVS R0, R4 BL cJSON_AddItemToObject ADDS R5, #1 MOV R0, R10 MOVS R1, R4 BL cJSON_AddItemToArray CMP R5, R11 BNE loc_5D8466E2
ããã§ãé åã¯forã«ãŒãã§èµ°æ»ãããŸãã
解説
ä¿åãããé åã®é·ãã¯ããµã€ã¯ã«ã¯äžè¡ã«ãã£ãŠèªèãããŸãã
R11
ä¿åãããé åã®é·ãã¯ããµã€ã¯ã«ã¯äžè¡ã«ãã£ãŠèªèãããŸãã
ADDS R5, #1 ; CMP R5, R11 ; BNE loc_5D8466E2 ; -
ã¬ãžã¹ã¿ãå¿ èŠã§ã-
R6
ãåœä»€
LDMIA
ã¯
R6
ã1ãã€ããèªã¿åãã
R6
ããã«1ãã€ã移åããŠãåä¿¡ãããã€ãã®å€ãã«æžã蟌ã¿ãŸã
R0
ããã®ãããªå°é£ã¯å¿ èŠãããŸãã
R0
ã2ã€æžãå¿ èŠããããŸãã
MOVS R0, #2
00100 000 00000010 MOVS Rd Imm
å è§åœ¢-
2002
ãè£è¿ãïŒ
0220
ïŒã亀æããŸãã
çå®ã®ç¬éïŒãã¹ãŠã®ãã¬ãŒã¯ãã€ã³ãããªãã«ãããã³ãžã§ã³ã«å ¥ããŸã...
å©çïŒæãéèŠãªããšã¯ãåžžã«æŠå Žãé¢ããªããã°ãªããªãããšãå¿ããªãããšã§ãã誀ã£ãŠåã£ãå ŽåãæåããµãŒããŒã«éä¿¡ãããŸããããã§ãããã€ã¹ãã³ã³ãã¥ãŒã¿ãŒããåæããããšãã§ããŸããã¢ããªã±ãŒã·ã§ã³ãåèµ·åãããŸã§ãå€æŽãããã©ã€ãã©ãªã¯ã¡ã¢ãªå ã§ãã³ã°ããŸãã
çµè«ã®ä»£ããã«
ãã®ã¢ããªã±ãŒã·ã§ã³ã®ãããã³ã°ãå¯èœã«ãªã£ãã®ã¯ãäž»ã«èè èªèº«ãå®éã«ã¯ã©ã€ã¢ã³ãã§ã®æŠéã®çµæãæ€èšããŠããããšãæããã«ããããã§ããåæã«ãã¢ãã€ã«ãªã³ã©ã€ã³ã²ãŒã ã§ã¯ãã»ãã¥ãªãã£ãšãŠãŒã¶ãŒã®å©äŸ¿æ§ã®å¢çãå®ãå¿ èŠããããŸããã²ãŒã ã«åžžææ¥ç¶ãå¿ èŠãªå ŽåãèŠèŽè ã¯æžå°ããŸããéçºè ã¯æœåšçãªã¯ã©ãã«ãŒã®ç掻ãè€éã«ããããšããŸããã圌ãã¯ããŒã¿æå·åãè¡ããå ±æãªããžã§ã¯ãã®ã¡ã€ã³ã²ãŒã ã³ãŒããåé€ããŸããããããã1ã€ãããã«ããã®ã¯ãé¢æ°åãé£èªåãããªãã®ã¯ãªãã§ããïŒç§ã¯C / C ++ã§ããã°ã©ã ããŸããã§ããããã³ã³ãã€ã©ã«ãã®ãããªãªãã·ã§ã³ããããã©ããããããŸããããããããã¹ãŠã®é¢æ°ãã
sub_xxxxxxxx
ããšåŒã°ãããšãã¢ããªã±ãŒã·ã§ã³ã®ãããã³ã°ã«è²»ããããæéãå€§å¹ ã«å¢å ããŸããã³ã¡ã³ãã§çããèããŠããããã§ãã
æåŸãŸã§èªãã§ããã人ã«æè¬ããŸãã
.
â .