大神能看看这个注册码算法是啥意思么?
背景:软件申请码12位,包括大写字母和数字,key是16位,也是大写字母和数字。用IDA最后找到的加密算法应该是下面这个函数,没怎么看懂,求指教
void __thiscall sub_44C690(CWnd *this)
{
CDialog *v1; // esi
int v2; // eax
int v3; // eax
char *v4; //
char v5; //
char v6; //
char v7; //
char v8; //
char v9; //
int v10; //
v1 = this;
CWnd::UpdateData(this, 1);
sub_403E70(&v9, (char *)v1 + 116);
v10 = 0;
v2 = sub_41C680(&v8, (char *)v1 + 120);
LOBYTE(v10) = 1;
sub_403E70(&v7, v2);
LOBYTE(v10) = 2;
v3 = sub_41C680(&v6, (char *)v1 + 124);
LOBYTE(v10) = 3;
sub_403E70(&v5, v3);
LOBYTE(v10) = 4;
sub_41C680(&v4, (char *)v1 + 128);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::~CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v5);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::~CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v6);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::~CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v7);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::~CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v8);
LOBYTE(v10) = 10;
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::~CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v9);
if ( VsCheckRegCode(v4) )
{
WriteRegCode(v4);
CDialog::OnOK(v1);
}
else
{
CWnd::MessageBoxA(v1, asc_4AD0D4, 0, 0);
}
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::~CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v4);
} 应该是看这个函数吧: VsCheckRegCode(v4) if ( VsCheckRegCode(v4) )
{
WriteRegCode(v4);
这里吧 本帖最后由 Poseido 于 2020-9-23 00:06 编辑
好的,我再看看,多谢 找个VC++,建立一个基本的MFC程序,把这段代码跟UI绑定,单步调试,可看到它的计算原理 看不懂就动态调试啊 跟了一下,发现VsCheckRegCode这个函数被封装了。。。 进入动态调试分析
页:
[1]