week 1 --RE

Osmanthus_tea

用了upx壳,去壳后用ida打开,有个tea加密

与标准的tea加密进行对比发现在v4的值和加密顺序上的进行了魔改,

这里对要对比的字符串进行了加密,用动调的方法可以直接得到加密后的值

编写脚本并运行

#include<stdio.h>
#include<stdint.h>
#include<string.h>
void decrypt(uint32_t* v,uint32_t* key)
{
	uint32_t k0,k2,k3,k1;
	uint32_t v0,v1;
	v0=v[0],v1=v[1];
	k0=key[0],k1=key[1],k2=key[2],k3=key[3];
	uint32_t delta=0x20240516,sum=0x20240516*32;
	for(int i=0;i<32;i++)
	{
		sum-=delta;
		v0-=((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);
		v1-=((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3);
	}
	v[0]=v0,v[1]=v1;
}
int main()
{
	char s[32]={ 0x2A, 0x30, 0x46, 0x30, 0xAD, 0x50, 0x2B, 0x79, 0xC6, 0x70, 
  0xA0, 0xB4, 0x72, 0xE0, 0xA7, 0xA0, 0x7F, 0x42, 0xB8, 0x25, 
  0x2E, 0x9D, 0x70, 0xFC, 0xC3, 0xAC, 0x71, 0xD7, 0xD9, 0x44, 
  0x1D, 0x95 };
	uint32_t key[4]={0,5,0,4};
	for(int i=0;i<32;i+=8)
	{
		decrypt((uint32_t*)&s[i],key);	
	}
	printf("%s",s);		  
  return 0;
}

真心or花心

 一样要去壳,去壳后用ida打开

花指令

nop掉后对main函数按P重新声明,就可反汇编出主函数

编写出脚本并运行

#include<stdio.h>
#include<string.h>
int ischar(char x)
{
	return x<127&&x>=32;
}
int main()
{
	char s[]="%y:&4jx@>j^xxfL7,V7&;:.8h$iVq";
	for(int i=strlen(s)-1;i>=0;i--)
	{
		s[i]=s[i]-(32+s[(i * i + 123) % 21]);
		if(ischar(s[i])==0)
		{
			for(int j=1;j<=4;j++)
			{
				s[i]+=j*96;
				if(ischar(s[i])==1) break;
			}
		}
	}
	printf("%s",s);
	return 0;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值