无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

[How2DEOBF] #1 樸素的XOR number混淆

2023-06-24 20:07 作者:Ezlips_yume  | 我要投稿


? ? ? ? 在對java程序進行保護的時候,我們常常使用混淆(obfuscate)。這使得逆向工作者無法直接對目標程序進行反編譯,或是難以理解目標程序的代碼邏輯。所謂反混淆(deobfuscate)也就是混淆的逆向操作,就是期望將混淆后的目標程序還原成未混淆前的狀態(tài),或者至少還原到可以理解的程度。

? ? ? ??一般而言,目標程序的混淆是由混淆器自動化進行的,這也就是說人工進行反混淆大抵是費時費力,自討苦吃,最好的辦法是,通過編寫相應的反混淆程序,實現(xiàn)反混淆。

? ? ? ??這篇專欄將以最簡單的XOR number混淆為教程。

? ? ? ? 預備知識:ASM-tree api,腦子

確定方針

? ? ? ? 下面展示混淆前后number的對比。

? ? ? ?

混淆前
混淆后

? ? ? ? 原先簡單的number變成了如此龐大的XOR們,如果要直接進行分析顯然有些困難??梢园l(fā)現(xiàn),這些XOR運算的結果實際上都是固定的,在java虛擬機對這些instructions進行執(zhí)行之后,最終還是能夠得到混淆前的兩個小number。

? ? ? ? 那么,我們不妨模擬虛擬機的執(zhí)行過程,遍歷方法中的instructions,如果發(fā)現(xiàn)IXOR,就再查看它的前兩個instruction是否是一個固定的integer,若是,則將結果計算出來,把原先的IXOR運算覆蓋,我們就完成了反混淆。

實現(xiàn)

? ? ? ? 這里使用narumii的deobfuscator進行transformer編寫(https://github.com/narumii/Deobfuscator/)雖然這個反混淆器已經(jīng)有了反混淆number的功能,但為了原理的學習,我們將自行編寫。

? ? ? ? 創(chuàng)建一個類,繼承Transformer,隨后實現(xiàn)transform方法。

? ? ? ? 我們遍歷反混淆器加載好的目標程序的class,對每個class的每個method,尋找是否存在IXOR,然后再按照上述的操作實現(xiàn)就行了。

代碼示例

? ? ? ? 加載示例程序后運行,進行transform,我們便得到反混淆后的程序。

? ? ? ? 如此,我們成功實現(xiàn)了一個簡單的transformer。

后記

? ? ? ? 這篇專欄中實現(xiàn)的transformer幾乎可以說是最簡單的一個了,功能也比較單一,事實上的反混淆工作也遠比這困難。不過千里之行始于足下,這算是一個良好的開始。

? ? ? ? 下載示例程序:https://wwcx.lanzoum.com/b032je36d(ethb)


[How2DEOBF] #1 樸素的XOR number混淆的評論 (共 條)

分享到微博請遵守國家法律
乐安县| 水城县| 宜兰县| 仁布县| 察雅县| 黄大仙区| 罗山县| 双辽市| 四平市| 红安县| 行唐县| 玛沁县| 铜川市| 聂拉木县| 嘉鱼县| 塔城市| 冷水江市| 凌海市| 浦县| 将乐县| 宽甸| 博白县| 淮安市| 新源县| 沂源县| 祥云县| 吴桥县| 河南省| 沅陵县| 兴城市| 迁安市| 无棣县| 嘉祥县| 侯马市| 高密市| 丽江市| 延寿县| 江西省| 来凤县| 郴州市| 新密市|