這道題主要需要花時間搞清楚套路,就迎刃而解了。^_^
1.java層稍作字符串加密和類名方法名混淆處理(本來是打算java層也做點文章的@_@)
解題:通過閱讀代碼,可以知道check函數爲關鍵函數,當返回爲真的時候,註冊成功。
2.so層用花指令對程序指令進行混淆,在一定程度上防止分析。
解題:編寫去花指令腳本,F5就會變得很簡單。去花後check函數如下:
這樣就能很清楚看到註冊過程了,第一個while循環釋放存放好的字符串到byte_20020。sub_19DA8爲加密函數,返回結果到v14,最後v14與byte_20020做比較,一樣就行了。算法採用了RC4加密+base64編碼。