实验吧 REVERSE

该题不简单:

用IDA 打开,查找字符串,观察流程,找到判断函数,

if ( GetDlgItemTextA(hDlg, 1000, String, 16) >= 5 )    // 判断第一个输入是否大于5个字符
{
GetDlgItemTextA(hDlg, 1001, &String1, 16); 
v1 = 0;
if ( strlen(String) != 0 )
{
do
{
*(&String2 + v1) = (v1 + v1 * String[v1] * String[v1]) % 0x42 + 33;    //对输出的用户名进行计算得出密钥
++v1;
}
while ( v1 < strlen(String) );
}
strcpy(String, "Happy@");                                  赋值String Happy@
lstrcatA(String, &String2);          将计算出的结果放在String后面    
result = lstrcmpA(&String1, String) != 0;    比较
}

#include<stdio.h>
#include<string.h>
int main(){

char *a = "hello";
char *b;
int i =0;
while(i<strlen(a)){

*(b + i) = (i + i*a[i]*a[i]) % 0x42 +33;
++i;

}

printf("%s",b);

}

原文地址:https://www.cnblogs.com/congm/p/7805803.html