對(duì)于BASE64編碼的逆向分析
在反編譯文件中找到主函數(shù),點(diǎn)擊后按F5
得到反編譯出的主函數(shù)部分
其中1至7行是程序編譯過程中系統(tǒng)預(yù)置的,可以不用理解。
假設(shè)第一次剪刀這個(gè)程序,對(duì)主函數(shù)逐段從第九行開始就是程序的主函數(shù)部分逐段進(jìn)行分析。
10行: 輸出一段文字
雙擊這段文字,就是如上的匯編,可以不用理解,大意就是說輸入了一行字符串
11行: 讀入了一個(gè)數(shù)字,這個(gè)數(shù)字在之后的第13和30行用到了。大致的用處就是分開判斷兩部分,分別進(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行: 和之前的很類似,就是將BASE64編碼的步驟反著進(jìn)行了下,就是解碼的步驟
舉例看一下get_number函數(shù)
其中很多部分是不需要理解的大致的意思就是說在取得二進(jìn)制,然后按照BASE64編碼的形式進(jìn)行操作
一些即將進(jìn)行的工作:
BASE64算法中可以控制的地方為編碼時(shí)對(duì)照表,所以大多數(shù)的題目中BASE64的魔改都可以通過修改對(duì)照表進(jìn)行
通常魔改BASE64有兩周情況
直接定義新的編碼對(duì)照表
動(dòng)態(tài)生成新的編碼對(duì)照表,這里就是下一步即將學(xué)習(xí)的地方
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
相關(guān)推薦
? 最近,有項(xiàng)目中需要用到base64的加解密,所以用C語(yǔ)言實(shí)現(xiàn)了一遍,測(cè)試效果還不錯(cuò),代碼量和RAM消耗都比較低,可以提供給大家參考下。
發(fā)表于 09-18 09:31
?4269次閱讀
各位大佬們,請(qǐng)教一下如何在labview中把圖片轉(zhuǎn)成base64編碼,然后傳給Python,或者是然后用labview和Python之間傳遞圖片,求大神指教該怎么寫
發(fā)表于 05-08 01:04
一、base64加密格式:base64從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù),按Ctrl+D結(jié)束輸入。將輸入的內(nèi)容編碼為base64字符串輸出。
發(fā)表于 07-15 08:02
如何將一個(gè)base64編碼的圖片字符串轉(zhuǎn)換回圖片呢?求大神解答
發(fā)表于 12-20 06:40
Base64是什么?Base64編碼轉(zhuǎn)換有哪些具體步驟呢?Base64加密與解密該怎樣去實(shí)現(xiàn)呢?
發(fā)表于 01-20 06:37
需要用到base64編碼方式的可以下載一下,程序還可以自己優(yōu)化
發(fā)表于 06-14 17:42
信息通過Base64 編碼變成ASCII 碼,利用XML 編碼對(duì)ASCII 碼形式的結(jié)果進(jìn)行組織,來實(shí)現(xiàn)各個(gè)異構(gòu)系統(tǒng)的信息快速和低成本地通信。
發(fā)表于 12-18 17:28
?22次下載
Base64是一種很常用的編碼方式,利用它可以將任何二進(jìn)制的字符編碼到可打印的64個(gè)字符之中, 這樣,不管是圖片,中文文本等都可以編碼成只有
發(fā)表于 10-18 11:11
?10次下載
Base64編碼是從二進(jìn)制到字符的過程,可用于在HTTP環(huán)境下傳遞較長(zhǎng)的標(biāo)識(shí)信息。例如,在Java Persistence系統(tǒng)Hibernate中,就采用了Base64來將一個(gè)較長(zhǎng)的唯一標(biāo)識(shí)符(一般
發(fā)表于 11-14 09:43
?1.5w次閱讀
Base64是一種很常見的編碼規(guī)范,其作用是將二進(jìn)制序列轉(zhuǎn)換為人類可讀的ASCII字符序列,常用在需用通過文本協(xié)議(比如HTTP和SMTP)來傳輸二進(jìn)制數(shù)據(jù)的情況下。
發(fā)表于 11-14 10:21
?1.6w次閱讀
由于某些系統(tǒng)中只能使用ASCII字符。Base64就是用來將非ASCII字符的數(shù)據(jù)轉(zhuǎn)換成ASCII字符的一種方法。base64特別適合在http,mime協(xié)議下快速傳輸數(shù)據(jù)。
發(fā)表于 11-14 10:35
?2.8w次閱讀
這篇文章主要介紹了Java實(shí)現(xiàn)圖片與base64編碼之間的轉(zhuǎn)換實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下。
發(fā)表于 11-14 10:59
?1848次閱讀
codes為Base64編碼key值,包括64個(gè)字符,由‘A’~‘Z’,‘a(chǎn)’~‘z’,‘0’~‘9’,‘+’,‘/’組成字符串,且每個(gè)字符只能出現(xiàn)一次,但順序可以自由調(diào)整。
發(fā)表于 11-14 22:29
?3272次閱讀
在我們嵌入式開發(fā)中,我們常常都會(huì)用到一些通用的工具庫(kù),往往都會(huì)有個(gè)base64編解碼模塊。
發(fā)表于 02-09 16:34
?3507次閱讀
Base64編碼的原理是將輸入數(shù)據(jù)分割成固定長(zhǎng)度的塊(通常是3個(gè)字節(jié)),然后將每個(gè)塊轉(zhuǎn)換為4個(gè)Base64字符。這四個(gè)字符由64個(gè)特定的ASCII字符組成,包括大寫字母A-Z、小寫字母
發(fā)表于 05-03 17:36
?501次閱讀
評(píng)論