--杂记--
補碼:
補碼計算法定義:非負數的補碼是其原碼本身;負數的補碼是其絕對值的原碼最高位符號位不變,其它位取反,再加1。
左移 右移 注意溢出
(a&0x3f) << 2
左移2位,與上0x3f 也就是 0011 1111 將最高兩位置為0
同理右移2位 &0xfc 也就是 1111 1100 將最低兩位置為0
算法特征
base 64特征點 base表, &0x3f 數據左移 ‘=’
res[i]=base64_table[str[j]>>2]; //取出第一個字符的前6位并找出對應的結果字符 res[i+1]=base64_table[(str[j]&0x3)<<4 | (str[j+1]>>4)]; //將第一個字符的后位與第二個字符的前4位進行組合并找到對應的結果字符 res[i+2]=base64_table[(str[j+1]&0xf)<<2 | (str[j+2]>>6)]; //將第二個字符的后4位與第三個字符的前2位組合并找出對應的結果字符 res[i+3]=base64_table[str[j+2]&0x3f]; //取出第三個字符的后6位并找出結果字符SM4 異或^和循環左移<<<
TEA delta:通常為0x9e3779b9 4和5同時出現時要注意
XTEA delta:通常為0x9e3779b9
RC4 在初始化的過程中,密鑰的主要功能是將S盒攪亂,對S盒一系列操作
識別重點:
2個長度為256的For循環
S盒亂序時的數據交換
以及最后的異或加解密
CRC16 異或上0x1021 用python爆破時要異或 0x11021
IDA宏定義:
#define BYTEn(x, n) (*((_BYTE*)&(x)+n))
#define BYTE0(x) BYTEn(x, 0)
#define BYTE1(x) BYTEn(x, 1)?
#define BYTE2(x) BYTEn(x, 2)
elf文件被加了殼,查不出來,可能是upx,使用Idc腳本解題。?
跳轉是 jmp 寄存器? 無法被解析? 我們直接修改為jmp 地址(注意從上一條那條指令開始修改 不然要修改到下面的地址)
因為這里上一條覆蓋了? 我們到跳轉點寫一個相同的指令
多分析string
注意各變量的應用及其改變
go逆向使?idagolanghelper
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: buu-[RoarCTF2019]pol
- 下一篇: 查看安卓模拟器 CPU版本