JAVIS OJ--RE--DD-Hello

pwn的看的有点头疼,现在来看看逆向的一个题。

首先IDA打开进行分析,发现函数少得可怕,这就可以一步步分析函数了:

把函数进行反汇编就可以发现进行flag比较的函数了,阅读发现这个加密其实就是一个简单的异或,v2起到的作用就是一个异或的中介,看v2的赋值语句发现其实很简单就可以理解了,就是start函数的地址减去sub_100000c90函数的地址再向后移两位再异或上一个值就可以了,关于加密的数组,双击一下byte_100001040就可以看到了:

这个就是一个加密用的数组,之后直接给出脚本就可以了,我用的是c语言的脚本,python的也是可以的:

#include <stdio.h>
#include<string.h>
int main() 
{
	int  key[] = { 0x41,0x10,0x11,0x11,0x1B,0x0A,0x64,0x67,0x6A,0x68,0x62,0x68,0x6E,0x67,
				   0x68 ,0x6B ,0x62 ,0x3D ,0x65 ,0x6A ,0x6A ,0x3D ,0x68,0x4,0x5,0x8,0x3,
				   0x2,0x2,0x55,8,0x5D,0x61,0x55,0x0A,0x5F,0x0D,0x5D,0x61,0x32,0x17,0x1D,
				   0x19,0x1F,0x18,0x20,0x4,0x2,0x12,0x16,0x1E,0x54,0x20,0x13,0x14,0x0,0x0 };
	int k = ((0x0000000100000CB0 - 0x0000000100000C90) >> 2) ^ key[0];
	for (int i = 0; i <55; i++,k++) 
	{
		key[i] -= 2;
		key[i] ^= k;
		printf("%c", key[i]);
		
	}
	printf("\n");
	 return 0;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值