拖入IDA64,F5反编译,查看main函数:
粗略了解了一下C++的string类型的结构,上面的代码为存储字符串分配了3个缓冲区;
循环起到的作用是从输入的17个字符中分割出前7个字符存放到缓冲区;
从输入的17个字符中分割出后10个字符存放到缓冲区;
再次输入一个数值,经循环后需满足if后面的逻辑值为真,dword_140007044和dword_140007048的值均在其他函数中被修改;
在if处下断点,动态调试,先随意输入17个字符,再随意输入一个数值,得到上述两个被修改的值分别为0x13B03和0x5A2:
写脚本得到要输入的正确的值:
#include <stdio.h>
#include <math.h>
double func(double a1, double a2);
double func(double a1, double a2)
{
double v2, v3;
v2 = pow(a1, a2 - 1.0);
v3 = v2 / exp(a1);
return v3;
}
int main(