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;
 } 


猜你喜欢

转载自blog.csdn.net/qq_39153247/article/details/79226708
wp2