安恒月赛杯9月逆向

这篇博客介绍了两个逆向工程的挑战,涉及到base64加密、RC4加密以及rot13加密的解密过程。首先分析了一个使用base64和RC4加密的程序,通过逆向工程获取解密算法,得到base64编码的flag。接着,第二个挑战涉及rot13和矩阵乘法解密,作者解析了加密流程并提供了解密脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NewDriver

本题主要涉及base64加密和RC4加密的知识

 

拿到一个PE文件,运行之后是个控制台程序,简单的要求输入flag,然后判断是否正确,无壳。

用32位IDA打开,找到main函数,由于栈帧不平衡无法反编译,可以修改堆栈指针使其平衡然后进行反编译,不过该题主函数逻辑不复杂,可以直接看汇编代码。

直接来到开始输入的指令位置

显然,var_38便是用来存储输入的变量

然后是一段计算输入长度的指令,输入长度必须为0x21,之后让输入作为参数调用一个函数,跟进这个函数,发现十分复杂,用xdbg调试后发现,调用该函数后,产生了非常像base64编码的字段,姑且先认为它就是base64加密函数吧。

这里var_138在最开始初始化为一段字符串flag{this_is_not_the_flag_hahaha}。计算var_138的长度,然后调用sub_401000函数,由于这个函数的参数分别是一段缓冲区地址,var_138以及它的长度,与我们的输入无关,功能也是为这段缓冲区赋值,所以得到的一定是定值,可以在调试器中查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值