--杂记--

补码:

补码计算法定义:非负数的补码是其原码本身;负数的补码是其绝对值的原码最高位符号位不变,其它位取反,再加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宏定义:

  1. #define BYTEn(x, n) (*((_BYTE*)&(x)+n))

  2. #define BYTE0(x) BYTEn(x, 0)

  3. #define BYTE1(x) BYTEn(x, 1) 

  4. #define BYTE2(x) BYTEn(x, 2)

elf文件被加了壳,查不出来,可能是upx,使用Idc脚本解题。 

跳转是 jmp 寄存器  无法被解析  我们直接修改为jmp 地址(注意从上一条那条指令开始修改 不然要修改到下面的地址)

因为这里上一条覆盖了  我们到跳转点写一个相同的指令

多分析string

注意各变量的应用及其改变

go逆向使⽤idagolanghelper

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值