對(duì)于BASE64編碼的逆向分析
在反編譯文件中找到主函數(shù),點(diǎn)擊后按F5
得到反編譯出的主函數(shù)部分
其中1至7行是程序編譯過(guò)程中系統(tǒng)預(yù)置的,可以不用理解。
假設(shè)第一次剪刀這個(gè)程序,對(duì)主函數(shù)逐段從第九行開(kāi)始就是程序的主函數(shù)部分逐段進(jìn)行分析。
10行: 輸出一段文字
雙擊這段文字,就是如上的匯編,可以不用理解,大意就是說(shuō)輸入了一行字符串
11行: 讀入了一個(gè)數(shù)字,這個(gè)數(shù)字在之后的第13和30行用到了。大致的用處就是分開(kāi)判斷兩部分,分別進(jìn)行兩個(gè)程序當(dāng)輸入的v6為1時(shí)進(jìn)行第15到28行的程序,當(dāng)v6為2時(shí)進(jìn)行30到46行的程序
15到28行: 讀到了字符串,這一串就是要編碼的字符串,首先v8表示字符串的長(zhǎng)度,每三個(gè)字符處理一次,具體的處理函數(shù)時(shí)get_number函數(shù)在進(jìn)行,之后判斷函數(shù)的長(zhǎng)度是否時(shí)3的倍數(shù),這里就是對(duì)需要編碼的字符串進(jìn)行特判=的存在,分別在之后的兩個(gè)函數(shù)中進(jìn)行處理,之后輸出答案
30到46行: 和之前的很類(lèi)似,就是將BASE64編碼的步驟反著進(jìn)行了下,就是解碼的步驟
舉例看一下get_number函數(shù)
其中很多部分是不需要理解的大致的意思就是說(shuō)在取得二進(jìn)制,然后按照BASE64編碼的形式進(jìn)行操作
一些即將進(jìn)行的工作:
BASE64算法中可以控制的地方為編碼時(shí)對(duì)照表,所以大多數(shù)的題目中BASE64的魔改都可以通過(guò)修改對(duì)照表進(jìn)行
通常魔改BASE64有兩周情況
直接定義新的編碼對(duì)照表
動(dòng)態(tài)生成新的編碼對(duì)照表,這里就是下一步即將學(xué)習(xí)的地方
-
編碼
+關(guān)注
關(guān)注
6文章
968瀏覽量
55735 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4379瀏覽量
64767 -
Base64
+關(guān)注
關(guān)注
0文章
26瀏覽量
9036 -
程序編譯
+關(guān)注
關(guān)注
0文章
9瀏覽量
5545
發(fā)布評(píng)論請(qǐng)先 登錄
base64的加密和解密
有關(guān)Base64編碼的基本知識(shí)都總結(jié)在這里了
Base64的編解碼方法
base64解碼編碼詳解

base64編碼有什么用?(base64介紹及應(yīng)用)

java實(shí)現(xiàn)圖片與base64編碼的轉(zhuǎn)換
什么是Base64,如何編解碼?
base64編碼和解碼的使用方法
如何使用base64處理圖像數(shù)據(jù)
base64字符串轉(zhuǎn)換為二進(jìn)制文件
base64的安全性及其應(yīng)用場(chǎng)景
base64與URL編碼的區(qū)別和聯(lián)系
如何優(yōu)化base64編碼的性能
base64在前端開(kāi)發(fā)中的應(yīng)用
基于RK3576的BASE64編解碼

評(píng)論