ããã«ã¡ã¯ãHabrïŒ æ¬æ¥ã¯ã誰ãä»ã®äººã®Androidã¢ããªã±ãŒã·ã§ã³ïŒãã®å Žåã¯ãªã³ã©ã€ã³ã²ãŒã ïŒã®ãžã£ã³ã°ã«ã«çªå
¥ããããšãçªç¶æ±ºããå Žåã«ééããå¯èœæ§ã®ããããšã«ã€ããŠèª¬æããŸãã .dexã§Javaã¯ã©ã¹ã衚瀺ããããDalvikãªãã³ãŒããåŠç¿ãããããã€ããªããã°ã©ãã³ã°ãåŠãã ãããã¢ããã³ãã£ãŒã ãããããŸãæåã«ã
ã«ããã®äžã§ã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ã€ã«ãªããŸãã
- å Žæã§ããã¯ã¢ãŠãïŒæå€§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 = "";
ã§ã¯ãç§ãã¡å
šå¡ããããè¡ãçç±ã«æ»ããŸãããã æ³šææ·±ãèªè
ã¯ãäžèšã®å¿çãŸãã¯èŠæ±ã®ãããã«ã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
éèŠãªæ³šæ-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ã§å¿
èŠãªèšå®ã®å Žæ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ã¯ããã»ã¹ã®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": [
ã芧ã®ãšããã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
ããšåŒã°ãããšãã¢ããªã±ãŒã·ã§ã³ã®ãããã³ã°ã«è²»ããããæéã倧å¹
ã«å¢å ããŸããã³ã¡ã³ãã§çããèããŠããããã§ããæåŸãŸã§èªãã§ãããäººã«æè¬ããŸãã
.
â .