最近公司用上了阿里的釘釘,BAT 出品,得研究學(xué)習(xí)一下乾巧,先看看數(shù)據(jù)安全。下載安裝后预愤,用 RE 進(jìn)入?
/data/data/com.alibaba.android.rimet/database 查看:
不錯(cuò)沟于,encrypt , 看來是加密了。直接點(diǎn)了一下植康,提示無法打開社裆,果然是加密了。
那就反編譯看代碼吧向图,上apktool , ?jadx, 在lib目錄下發(fā)現(xiàn)這個(gè)東西 ?
猜測(cè)加密就是用它了, google 這個(gè)庫(kù)名标沪,看有啥資料沒有榄攀,
還真有,進(jìn)去看了一下金句,大概說的是阿里的數(shù)據(jù)庫(kù)加密一般都是用這個(gè)庫(kù)檩赢,采用AES 加密, ?加密有的key 是java 層設(shè)置進(jìn)去的违寞,可以用hook so 庫(kù) 里的aes_encrypt庫(kù) 得到key 贞瞒。 用ida 看了一下libdatabase_sqlcrypto 庫(kù)
的確有這個(gè)函數(shù), 這么容易就搞定了趁曼。上網(wǎng)搜了一下军浆,adbi hook ?native 比較方便 ,試了下用它 hook aes_decrypt, ?然而不知道這adbi 的問題,還是我操作有問題挡闰,顯示hook 成功了乒融,然而對(duì)app 進(jìn)行操作卻并沒有任何反應(yīng).(理論上應(yīng)該有打雨獭) hook 函數(shù)如下 :
unsigned int my_aes_decrypt(int a1, int a2, int a3)
{
unsigned int (*orig_aes_decrypt)(int a1, int a2, int a3);
char szHex_key[250] = { 0 };
unsigned char* pTemp_key = (unsigned char*) a3;
int i = 0;
log("my_aes_ hook!\n");
orig_aes_decrypt = (void*)eph.orig;
hook_precall(&eph);
for (i = 0; i < 0x10; ++i) {
/* code */
char szTemp_key[10] = { 0 };
sprintf(szTemp_key, "%02x ", pTemp_key[i]);
strcat(szHex_key, szTemp_key);
}
log("Tips: key=a3===%s\n", szHex_key);
if (counter) {
hook_postcall(&eph);
log("epoll_wait() called\n");
counter--;
if (!counter)
log("removing hook for epoll_wait()\n");
}
return orig_aes_decrypt(a1,a2,a3);
}
哪個(gè)大神指點(diǎn)一下,為啥不行呢赞季。
沒辦法了愧捕,只能自己看代碼了,具體過程略申钩,直接說結(jié)論次绘,
在 SQLiteConnection 中有個(gè) open 函數(shù)里面調(diào)用了setEncryptKey, 這個(gè)函數(shù)里面又調(diào)用了 Excute
private void setEncryptKey() {
..........................
execute("PRAGMA key='" + password + "';", null, null);
那么問題就簡(jiǎn)單了撒遣, 有excute 里加打印邮偎, 重新編譯,運(yùn)行愉舔,得到如下打印結(jié)果:
32位钢猛,莫非用了AES-256? 驗(yàn)證一下,寫個(gè)aes 解密程序轩缤, 把databases 全部push 下來命迈。結(jié)果。火的。壶愤。 還是不行,阿里的猿猿們有兩下子嘛馏鹤!只好又去ida 看了看匯編 征椒,希望能發(fā)現(xiàn)啥。然而功力不夠湃累,看來看去也沒有發(fā)現(xiàn)有價(jià)值的東西勃救。
?良久,腦袋里閃出過一道光治力,不會(huì)是還是用的AES128, key 是從32 位里面選16 位吧蒙秒。 先試試前16 位,果然宵统。晕讲。。
解密后的數(shù)據(jù)庫(kù)马澈,sqlite 打開, 這個(gè)似乎是離線打卡數(shù)據(jù).
ok , 完結(jié)瓢省。
獎(jiǎng)勵(lì)看完這篇文章的人,重點(diǎn)放在最后說:
1. 考勤打卡用的是高德地圖痊班, 所以嘛勤婚,你懂的(hook, 反編譯修改隨便搞)
2. 上面的圖是離線打卡數(shù)據(jù)。所以嘛涤伐。蛔六。荆永。。