static
public static int a(context arg4)
int v0 = -1
; try
rootmanager.a(arg4, "gearcore", v1);
rootmanager.a(arg4, "speedman", arg4.getfilesdir() + "/libspeedman.so");
string v0_2 = string.valueof(arg4.getfilesdir().getabsolutepath()) + "/gearcore"
; ag.a("suc=" + v0);
}catch(ioexception v0_1)
arg4.deletefile("gearcore");
return v0;
}
可以看到載入了encode動態庫,並在函式a(context arg4)中進行處理。過程為首先通過rootmanager.a(, ,)函式進行檔案拷貝,然後通過rootmanager.decode函式進行解密,最後通過函式rootmanager.a(,)執行解密後的檔案。
其中函式rootmanager.a(, ,)如下:
private
static
void
a(context arg5, string arg6, string arg7)
v2.flush();
break;}}
catch(throwable v0_1)
v2.close();
v1.close();
return;
try
catch(throwable v0_1)
}
將assets中檔案拷貝到指定目錄中,函式比較簡單。
本節,我們主要來分析下解密函式
ida載入encode動態庫檔案,來到decode函式處
f5,其中引數名和變數名,是我修改過的,這個根據個人習慣,分析時修改即可。
獲取包名
然後,通過乙個演算法解密字串,演算法如下:
然後,將解密後的字元傳和包名比較,根據比較結果,進行檔案的解密操作。
最後,附上演算法還原後的**(我也寫到了so檔案中),如下:
static
unsigned
char key[48] = ;
decodekey[index] = temp[2 * i] - 1 - salt;
}char* pmem = null;
pmem = (char*)malloc(0x16);
snprintf(pmem, 0x16, "%s", decodekey);
logd("decodekey: %s", decodekey);
//簡單的保護工作
if (!strcmp(strpackage, pmem))
fclose(fpdecode);
chmod(strdecodepath, 0x1ed);
}fclose(fpencode);
}remove(strencodepath);
env->releasestringutfchars(encodepath, strencodepath);
env->releasestringutfchars(decodepath, strdecodepath);
free(pmem);
}else }}
其中上面解密後的字串為
分析過程比較簡單,僅供娛樂!
逆向某m 安卓APP記錄
我自己寫的xml檔案的xmlns android為 修改一下,發現不報y.xml的錯了,其他檔案還是繼續報錯,看來要研究下xmlns android 剛才的方法治標不治本,上網找了一下res auto一般用在自定義控制項的xml,在res values attrs.xml 新增 發現title的錯不...
iOS逆向之旅(高階篇) 重簽名APP(一)
獲取給可執行檔案的加密資訊 otool l wechat grep crypt 因為cryptid的值為0,代表已經被解密了 砸殼是pp助手幫我們做的,後面我會在越獄篇介紹如何自己動手 4.開始手動去重簽名 一開始我強行簽名這些外掛程式,安裝到手機上時會出現如下報錯 後來我在monkey的簽名指令碼...
iOS逆向之旅(高階篇) 重簽名APP(二)
步驟 1.新建乙個xcode工程 3.接下操作該包 修改info.plist裡面的bundle id 這個bundle id 必須跟我們剛新建的工廠的bundle id一致 4.xcode執行,便可以把該wechat跑到自己的手機上了 2.往專案新增乙個指令碼檔案 3.往指令碼中寫入自動化簽名步驟 ...