對某APP的逆向之旅(1)

2021-07-12 07:40:16 字數 2261 閱讀 3241

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.往指令碼中寫入自動化簽名步驟 ...