12306之梆梆加固libsecexe.so的脫殼及修復

這篇文章純粹屬於安全分析研究,請勿用於非法用途。如有侵犯到廠家,請告知作者刪除

12306使用提梆梆企業VIP版本的加固,跟其它梆梆加固一樣,都會用到libsecexe.so來做dex的加載,本文對此so做一個脫殼的分析

(一)、so脫殼

此so的最先執行點在init_proc


init_func負責對so進行解密

解密後,可以看到如下字符串

在IDA裏找到相關的位置,可以看到如下代碼:

解密函數即紅框的位置。

hook該函數,讓其打印出r0

打印信息如下圖所示:

(二)、so修復

1.Loadable Segment修復

從上面的加密字符串地址可以知道,都是位於0x39xxx位置的,而這裏從0x1edfc到0x48ad4之間是空着的。

init_proc解密的時候把解密內容放到了這裏。

那麼我們這裏做如下修復,把這裏的空隙給填上。

2.init_func的修復

   dynamic section table動態節表是如下結構的數組,如果r_offset爲0,由表示該表的結束。

typedef  struct elf32_rel { 
       Elf32_Addr   r_offset; 
       Elf32_Word  r_info; 
} Elf32_Rel; 

因此這裏修復不能將其清零,可以從表裏拷貝另外一個elf32_rel到此位置。

3.rel和plt_rel修復

   可參照360 libjiagu.so修復來做

以上三步修復做完,就可以dlopen成功了,如果還需要用IDA分析的話,需要再把畸形化的修復做一下。

這個so加殼雖跟360 libjiagu.so有所不同,但是都有個共同的弱點:可以比較容易得通過dump恢復出原始so。

 (創建了一個Android逆向分析羣,歡迎有興趣的同學加入,羣號碼:376745720)

發佈了36 篇原創文章 · 獲贊 55 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章