0x03.Afkayas.2-WP

先打开程序看看:

需要解决一开始的NAG窗口和之后的serial(做完了回来补充:name可以不是数字,因为通过name生成数组字符串,但是serial必须是数字,因为要进行浮点数之间的比较,所以如果不是数字会报错

通过搜索关键字符串找到了这里:


发现了You Get it,进入汇编代码位置,发现关键跳转函数:


所以很简单,只要把je给nop掉就能显示You Get It 了:


接下来开始想办法写Keygen了:

往上查找,看到了一个VbaStrMove函数,应该在搞事情,所以设断点后重新运行,发现了寄存器中疑似serial的东西


又因为name和serial只能是数字,所以这个可能就是完整的serial,输入进去看了一下,果然正确了:

那我们就继续向上去找生成serial的函数,找了好久之后找到了这里:


应该就是生成serial的入口了(跟Afkayas.1挺像),接下来开始分析这段函数



执行到这里就可以看到正确的serial了,说明算法到这里应该就结束了,不过谨慎起见再看看:


果然发现下一步跳到的地方开始将我们输入的serial变成浮点数然后进行比较了。


所以最后的serial=[len(name)*15B38+ASCII(NAME[0])+10/5]*3-2-(-15)

keygen如下:

#include<iostream>
#include<string.h>
using namespace std;

int main(int argc,char *argv[])
{
	int serial;
	char name[50];
	
	while(1)
	{
		cout<<"Input the name:";
		cin>>name;
	
		serial=strlen(name)*(0x15B38)+name[0]+10/5;
		serial=serial*3-2+15;
		cout<<"The serial is:"<<serial<<endl;
		
		cout<<"Coutinue or not(y/n)?";
		char temp;
		cin>>temp;
		if(temp=='n') break;
	}
	system("pause");
	return 0;
 } 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值