今天無心中登入了oschina(真的是無心),看到有小夥伴發評論給我提了一些問題.隨着對SO研究的深刻,我對文章中語焉不詳之處,進行一些補充.windows
void _init(){} ``` 3. 那麼可否給不存在"INIT段"的SO文件添加這個東東?也就是UPX可否給沒有INIT函數的SO文件加殼? 仔細想一想並非非加"INIT函數"不可.其原理是在Dynamic表中增長了一條INIT表項.由於UPX只是簡單的查找Dynamic中是否存在INIT表項結構.若是找不到就會報錯,它本身不會主動去作添加操做. 咱們能夠對任意沒有INIT的SO進行添加INIT表項的簡單處理.可是須要注意的一點是:INIT的地址處理.由於據我試驗,UPX在執行完自身解密代碼後,會執行原INIT內的代碼.若是隨意給一個地址一定出錯.因此在沒有代碼的狀況下嘗試構造一個空函數是一個好主意. 固然你能夠有其它辦法可是比較複雜,好比修改UPX中load的代碼.使其忽略原init段.若是你完成了這個操做,請@我哦. 2016Year4月16日 13:01:06