好友
阅读权限10
听众
最后登录1970-1-1
|
是VC编译的,所以我才一直搞不定。
之前破了两个C#的dll,那个用de4dot+Reflector就搞定了,注册机用vs.net做的。
这种VC程序没遇到过,还望指教。
总共两个验证,一个jle,一个jnz。
按你的说法把部分F5转成代码,看着就头大……
__int64 __fastcall sub_180002610(CWnd *this)
{
CWnd *v1; // rdi@1
__int64 v2; // rax@1
__int64 v3; // rax@2
__int64 v4; // rax@5
__int64 v6; // [sp+20h] [bp-58h]@1
char v7; // [sp+28h] [bp-50h]@1
__int64 v8; // [sp+30h] [bp-48h]@1
char v9; // [sp+38h] [bp-40h]@1
char v10; // [sp+40h] [bp-38h]@1
char v11; // [sp+48h] [bp-30h]@1
__int64 v12; // [sp+50h] [bp-28h]@1
char v13; // [sp+58h] [bp-20h]@1
char v14; // [sp+59h] [bp-1Fh]@1
char v15; // [sp+5Ah] [bp-1Eh]@1
char v16; // [sp+5Bh] [bp-1Dh]@1
char v17; // [sp+5Ch] [bp-1Ch]@1
char v18; // [sp+5Dh] [bp-1Bh]@1
char v19; // [sp+5Eh] [bp-1Ah]@1
char v20; // [sp+5Fh] [bp-19h]@1
char v21; // [sp+60h] [bp-18h]@1
v12 = -2i64;
v1 = this;
CDialog::OnInitDialog(this);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v8);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v9);
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>>>(&v10);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v11);
v13 = 104;
v14 = 105;
v15 = 115;
v16 = 101;
v17 = 110;
v18 = 115;
v19 = 101;
v20 = 48;
v21 = 0;
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::operator=(&v10, &v13);
LODWORD(v2) = sub_180002360(&v7);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::operator=(&v8, v2);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::~CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v7);
if ( *(_DWORD *)(v8 - 16) )
{
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::operator=(&v6, &v8);
}
else
{
LODWORD(v3) = sub_1800031A0(&v7);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::operator=(&v9, v3);
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>>>::operator=(&v6, &v9);
}
if ( *(_DWORD *)(v6 - 16) <= 2 )
{
AfxMessageBox("获得机器码时出错", 0, 0);
}
else
{
LODWORD(v4) = sub_180004B40((char *)v1 + 272, &v7, &v6, &v10);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::operator=((char *)v1 + 232, v4);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::~CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v7);
CWnd::UpdateData(v1, 0);
CWnd::SetDlgItemTextA(v1, 20000, *((const char **)v1 + 29));
}
CWnd::SetDlgItemTextA(v1, 20001, byte_18000AA30);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::~CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v11);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::~CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v10);
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>>>(&v9);
ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>::~CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char>>>(&v8);
return 1i64;
} |
|