wintools premium 24.10.1 注册分析
wintools premium 24.10.1
目录
- wintools premium 24.10.1
- NAGSCREEN_proc_472350
- check_472BF0
- py
- ps
win32 程序,程序注册逻辑简单,关注窗口事件、控件id可快速定位到关键逻辑。
NAGSCREEN_proc_472350
INT_PTR __thiscall NAGSCREEN_proc_472350(void *this, HWND hDlg, UINT a3, WPARAM id, LPARAM a5)
{
// [COLLAPSED LOCAL DECLARATIONS. PRESS KEYPAD CTRL-"+" TO EXPAND]
if ( a3 == 272 )
{
memset(String, 0, 520);
v17 = GetDlgItem;
DlgItem = GetDlgItem(hDlg, 10006);
GetWindowTextW(DlgItem, String, 260);
WritePrivateProfileStringW(L"o", L"c", String, &FileName);
i_time = _time64(0);
switch ( Edition_4CC1D8 )
{
case 100:
ImageW = LoadImageW(hInst, (LPCWSTR)0x4F21, 0, 79, 264, 0x1000u);
break;
case 200:
ImageW = LoadImageW(hInst, (LPCWSTR)0x4F22, 0, 79, 264, 0x1000u);
break;
case 300:
ImageW = LoadImageW(hInst, (LPCWSTR)0x4F23, 0, 79, 264, 0x1000u);
break;
default:
LABEL_38:
PrivateProfileIntW = GetPrivateProfileIntW(L"OPTIONS", L"Transparent", 5, &FileName);
sub_480B00(hDlg, 100 - PrivateProfileIntW);
psz1 = 0;
memset(v65, 0, sizeof(v65));
if ( !SHGetSpecialFolderLocation(0, 26, &ppidl) )
{
SHGetPathFromIDListW(ppidl, &psz1);
StrCatW(&psz1, L"\\WinTools");
CreateDirectoryW(&psz1, 0);
}
StrCatW(&psz1, &xx_dll_4E4F50);
memset(&mbp, 0, sizeof(mbp));
memset(data_str, 0, sizeof(data_str));
GetPrivateProfileStringW(L"OPTIONS", L"Data", &pszFaceName, (LPWSTR)&mbp, 0x14u, &psz1);
if ( !LOWORD(mbp.cbSize) )
{
if ( GetPrivateProfileIntW(L"OPTIONS", L"Data", 0, &FileName) )
{
set_reg_4722D0(v22, &word_4B32E4);
}
else
{
Buffer = 0;
v60 = 0;
v61 = 0;
v58 = 0i64;
v59 = 0i64;
swprintf_s(&Buffer, 0x14u, L"%I64i", i_time);
WritePrivateProfileStringW(L"OPTIONS", L"Data", &Buffer, &psz1);
WritePrivateProfileStringW(L"OPTIONS", L"Data", &Buffer, &FileName);
}
}
GetPrivateProfileStringW(L"OPTIONS", L"Data", &pszFaceName, data_str, 0x14u, &FileName);
GetPrivateProfileStringW(L"OPTIONS", L"Data", &pszFaceName, (LPWSTR)&mbp, 0x14u, &psz1);
if ( StrCmpW(data_str, (PCWSTR)&mbp) )
set_reg_4722D0(v23, &word_4B32E4);
*(_QWORD *)&qword_4CB9B8 = (i_time - (unsigned int)toint_35((int)data_str)) / 86400;
v24 = GetDlgItem(hDlg, 19989);
SendMessageW(v24, 0x402u, 0, 0);
v25 = GetDlgItem(hDlg, 19989);
SendMessageW(v25, 0x401u, 0, 1376256);
v42 = qword_4CB9B8;
v26 = GetDlgItem(hDlg, 19989);
SendMessageW(v26, 0x402u, v42, 0);
v27 = sub_478640(L"NAG", L"0");
SetWindowTextW(hDlg, v27);
v45 = sub_478640(L"NAG", &word_4B32E4);
v28 = GetDlgItem(hDlg, 19991);
SetWindowTextW(v28, v45);
v46 = sub_478640(L"NAG", L"2");
v29 = GetDlgItem(hDlg, 19990);
SetWindowTextW(v29, v46);
v47 = sub_478640(L"NAG", L"3");
v30 = GetDlgItem(hDlg, 19992);
SetWindowTextW(v30, v47);
v48 = sub_478640(L"NAG", L"4");
v31 = GetDlgItem(hDlg, 10235);
SetWindowTextW(v31, v48);
v49 = sub_478640(L"NAG", &word_4B32CC);
v32 = GetDlgItem(hDlg, 19994);
SetWindowTextW(v32, v49);
v50 = sub_478640(L"NAG", L"6");
v33 = GetDlgItem(hDlg, 19995);
SetWindowTextW(v33, v50);
memset(code, 0, 300);
v34 = *(&qword_4CB9B8 + 1);
if ( (*(&qword_4CB9B8 + 1) & 0x80000000) != 0 )
{
v35 = qword_4CB9B8;
}
else if ( (int)*(&qword_4CB9B8 + 1) > 0 || (v35 = qword_4CB9B8, qword_4CB9B8 > 0x15) )
{
v35 = 21;
v34 = 0;
*(_QWORD *)&qword_4CB9B8 = 21i64;
}
v51 = v34;
v43 = v35;
v36 = sub_478640(L"NAG", L"7");
swprintf_s(code, 0x96u, v36, v43, v51);
v37 = GetDlgItem(hDlg, 10005);
SetWindowTextW(v37, code);
memset(v66, 0, 1000);
if ( dword_4E4F40 )
{
dword_4E4F40 = 0;
v38 = L"9";
}
else
{
v38 = L"8";
}
v39 = sub_478640(L"NAG", v38);
StrCpyW(v66, v39);
v40 = 0;
if ( lstrlenW(v66) > 0 )
{
do
{
if ( v66[v40] == 64 )
v66[v40] = 10;
++v40;
}
while ( v40 < lstrlenW(v66) );
v17 = GetDlgItem;
}
v41 = v17(hDlg, 19998);
SetWindowTextW(v41, v66);
return 1;
}
v44 = (LPARAM)ImageW;
v20 = GetDlgItem(hDlg, 19999);
SendMessageW(v20, 0x172u, 0, v44);
goto LABEL_38;
}
if ( a3 != WM_COMMAND )
return 0;
if ( (unsigned __int16)id > 19991u )
{
if ( (unsigned __int16)id == 19992 )
HtmlHelpW(hDlg, &pszFile, 0xFu, 1u);
}
else
{
switch ( (unsigned __int16)id )
{
case 19991u:
HtmlHelpW(hDlg, &pszFile, 0xFu, 0x13u);
break;
case 2u:
EndDialog(hDlg, 1);
break;
case 19990u:
ArgList = 0;
if ( *(__int64 *)&qword_4CB9B8 > 20 )
{
ArgList = 1;
set_reg_4722D0((int)this, &word_4B32E4);
}
memset(code, 0, sizeof(code));
v6 = GetDlgItem(hDlg, 10006); // code
GetWindowTextW(v6, code, 260);
v7 = (void (__stdcall *)(HWND, INT_PTR))EndDialog;
if ( code[0] )
{
if ( lstrlenW(code) <= 20 )
goto LABEL_22;
v8 = -1;
code_len = lstrlenW(code);
//内存布局
// -000013E0 data_str dw 20 dup(?)
// -000013B8 code dw 260 dup(?)
// len(code)-20d +4
crc32 = &data_str[code_len + 4]; // data_str 0x14
for ( i = lstrlenW(&data_str[code_len + 4]);
i > 0;
v8 = CRC32_table_4BB070[(unsigned __int8)(v8 ^ v11)] ^ (v8 >> 8) )
{
v11 = *crc32++;
--i;
}
psz1 = 0;
memset(v65, 0, sizeof(v65));
StrCpyW(&psz1, code);
if ( (unsigned int)(code_len * 2 - 0x20) >= 0x208 )
{
sub_48EBA6((int)crc32, (int)hDlg, v8);
JUMPOUT(0x472BE4);
}
*(WCHAR *)((char *)&psz1 + code_len * 2 - 0x20) = 0;
if ( ~v8 == (unsigned int)_wtoi64(&psz1) )
{
v12 = code;
if ( code[0] )
{
v13 = code[0];
do
{
*v12++ = v13 ^ 1;
v13 = *v12;
}
while ( *v12 );
}
WritePrivateProfileStringW(L"o", L"c", code, &FileName);
v7 = (void (__stdcall *)(HWND, INT_PTR))EndDialog;
EndDialog(hDlg, 0);
if ( sub_472210() )
{
set_reg_4722D0(v14, L"0");
check_472BF0();//check2
}
v15 = sub_478640(L"NAG", L"10");
StrCpyW(String, v15);
v16 = sub_478640(L"NAG", L"11");
StrCpyW(v66, v16);
mbp.hInstance = hInst;
mbp.hwndOwner = ::hDlg;
mbp.lpszCaption = v66;
mbp.lpszText = String;
mbp.cbSize = 40;
mbp.dwStyle = 262272;
mbp.lpszIcon = (LPCWSTR)107;
MessageBoxIndirectW(&mbp);
}
else
{
LABEL_22:
v7 = (void (__stdcall *)(HWND, INT_PTR))EndDialog;
}
}
if ( sub_472210() || ArgList )
v7(hDlg, 1);
else
v7(hDlg, 0);
break;
}
}
return 1;
}
check_472BF0
int check_472BF0()
{
// [COLLAPSED LOCAL DECLARATIONS. PRESS KEYPAD CTRL-"+" TO EXPAND]
j___free_base((void *)lpString);
lpString = (LPCWSTR)calloc(0x32u, 2u);
result = GetPrivateProfileStringW(L"o", L"c", &pszFaceName, (LPWSTR)lpString, 0x32u, &FileName);
if ( result )
{
result = lstrlenW(lpString);
if ( result >= 20 )
{
v1 = lstrlenW(lpString);
// Professional
qmemcpy(
psz1,
L"UYFA8Y5FMG9A84Y57Y4O789YGURIYHKKJGTIX48E57YX47JY5IXK734YJSYH4G78TH47Y7J84SY5S8IYW234I87YS28IJY78YS1J7YJ178YTISJ7"
"YI81YJ87TY187YJ17YTI8S7TY3JI78Y4TK78TY7YH1J7YHF714YK74Y174YHYUHTR5FG1E5D5413ES154GD541DTF56D3RG543F1G56FRG651F2"
"3T1GD63TG1F543DE5475F73JDJK846T1TDF34515641D6541DG546RD1654EW65RF6516D4FYJ47YI847J1Y8IY41JK78Y4FK871YJ8I7Y3DIK8"
"173YJ871IDY478TYG1J7Y48IK7YJDK47YJ71Y187YJ418Y4J8I7Y1GJ7Y47ETM85LKA84357WF74IK5G7W948573FLKVE51IUM18U18Y389Y1UI"
"Y187Y871Y71R1FR1D56G1DRT65RD363D787138IDH18I3YJ813YJD781Y3I87Y1J7DY31K7438AT83476KI873YD18I74Y781TY78TYJ78TY174"
"Y178YJ1Y487YK17YJGFHU4JHDK4GFNH481JK7FNY4Y17NY174FYN71NFY47814YJD17Y4JF17YR7Y4H78DYH81IYG1H74YIJD7Y431I87JYD48I"
"YJ14Y7IJG17DY4781Y4J87YI81JDFY4178YJ47J1Y47J1HY478YHT784YTJ1874HYG14J7YD1J487YF18748MFK34574S42YH871GYJ4Y1JI87Y"
"4FJ817Y4GJ817J4Y1GI8J74Y781YTJ4",
0x654u);
memset(&psz1[810], 0, 0x1ACu);
StrCpyW(&word_4E4F98, L"prowt");
StrCpyW(&xx_dll_4E4F50, L"\\prowt.dll");
if ( Edition_4CC1D8 == 100 )
{
// Classic
StrCpyW(&word_4E4F98, L"clscwt");
StrCpyW(&xx_dll_4E4F50, L"\\clscwt.dll");
StrCpyW(
psz1,
L"M1890U198Y171917809179H1789J1719HDYJF7Y1FHJYF173Y78RY783RY18YHR871YR3H871YJF3YF178H3YF718JFY3178SYJHY3FH1J7YG7"
"YG7JY17G3YN178Y3G7Y178T3YH178YR78Y1J87R3HY18Y3J71YI387TYH1738YJD1H7Y3RJ871Y38RYJF7HYI3TGH7YI81YH87YH318Y3J71Y"
"73HY17I3Y8YE7YE7HY1D873YJFTA87K437783217Y474YH73Y178YTH73Y78JRYH47814J71YJ784Y1J874FH7814J7HY64T87YJ87Y1871Y3"
"87YJF87Y781Y87J3YT781YH817Y3TH781Y38716Y781YTJ8H3Y87JYR3178Y3TH87J48R7JF47H387JDKUFR734HW25TPYN5373178YG178YG"
"J8Y71487YHT7Y8F1JU7YDJ87Y487IYH478Y178YD748Y178Y187RY18Y781Y7Y178TY48J1FUY4NF743847583F187YH781YH471Y78YJ7DEY"
"4781YE87Y4R87Y1TGJ87Y4H871Y4TJ7841YI81Y74G71Y1D7UY4178Y4871HG7Y78FY4871Y4JG71Y4I871Y8RY78Y6H1T73Y8JT73Y8J71YT"
"31J7Y87YD73Y178Y3781Y3H781YT3781YH6T78YT78Y784JD45F78748F3Y17YU47Y187Y41784YH17YT47Y4T71Y874Y17HY47H1YJ4D7Y17"
"YH71Y4781Y4T87H1Y7Y1784DHY17Y4J17Y471Y578Y");
}
else if ( Edition_4CC1D8 == 300 )
{
// Premium
StrCpyW(&word_4E4F98, L"remwt");
StrCpyW(&xx_dll_4E4F50, L"\\remwt.dll");
StrCpyW(
psz1,
L"N7W934GJ2746J9827456T8O97YH5I4YGWTJ5DRYHTNU4Y56N78Y8Y34O879Y4O879YN4587Y3N9O73N75Y3UY435UYH345FTCX5TREX4TRE35X"
"3TREX5T435XDCGTB34XV5TC34BT5RDXC4TB5FCT34534YUI5YM34UY5MKI34NY5KI34NUY5K34UMY5NI8374JY5UI4353F45CT3C54T3CT53C"
"4T5XC3TB45FC34BGF5CB34RB5CT3G4BF5T3FT54V345KHJMI3YUMYI346HIM3Y48IY58H734U53J4C5TF34T5T34JH5T3DF4JT534JH5T34D5"
"CJT34FD5T34CD5TXC34TFC5D34TG5CVTG3454KJHM34N5YHLIK3U4MYN5IUY43MI5Y45NU443JH4KNJH3Y5NUY4HK5IUNY4H32MKLI4HLM2JH"
"34L2M3UH4N2L3KYN5H43RKUS45OG434S39472J34FHSF38274K28394FHYNHLIU4Y5LIU3Y4ML5I8Y73L4895YJL89347Y6O8Y3JIK546UHUK"
"45YJKH6U8Y4JIHKUTY56I8JK4H7Y5678YGJ4576YH487IJ5H6Y4875YH6I45YJ684YH5KI876YF4K5J7H6YF4H75Y6HK457Y6TK54JY6TKH4Y"
"56JTHY456HJTK4756IJ78T4658IKJTY45IH67Y4J856YG8I4H7Y564JT56HI847YH6ITK4Y5KIJ6H7G46YJG4I857H6YGJ4756YHK4IJT6HYT"
"475J6H4Y757674UJ5Y6T84Y75K6JT4HY567HJ4");
}
v2 = psz1;
if ( psz1[0] )
{
v3 = psz1[0];
do
{
*v2++ = v3 ^ 1;
v3 = *v2;
}
while ( *v2 );
}
if ( StrStrW(psz1, &lpString[v1 - 12]) )
{
if ( !SHGetSpecialFolderLocation(0, 26, &ppidl) )
{
SHGetPathFromIDListW(ppidl, pszPath);
StrCatW(pszPath, L"\\WinTools");
CreateDirectoryW(pszPath, 0);
}
StrCatW(pszPath, &xx_dll_4E4F50);
DeleteFileW(pszPath);
v5 = L"0";
}
else
{
result = sub_472210();
if ( result )
{
dword_4E4F34 = 1;
dword_4E4F38 = 1;
dword_4E4F3C = 1;
dword_4E4F44 = 1;
dword_4E4F48 = 1;
dword_4E4F30 = 1;
return result;
}
v5 = &word_4B32E4;
}
return set_reg_4722D0(v4, v5);
}
}
return result;
}
py
ss
'''
premium
7876632734272G7VYMOX87YVJ
3005207633516OX87YVJMXC7Y
1629819872181497JYDFKJ7YJE
prof
28583290066947JGKWE49J57GJ
16967628558681F9VSDF78SWT7
6003987853474HT8IJR6GY76R
19339473533736W8E7RT98ST89
'''
import binascii
import random
# 100d
Classic='M1890U198Y171917809179H1789J1719HDYJF7Y1FHJYF173Y78RY783RY18YHR871YR3H871YJF3YF178H3YF718JFY3178SYJHY3FH1J7YG7YG7JY17G3YN178Y3G7Y178T3YH178YR78Y1J87R3HY18Y3J71YI387TYH1738YJD1H7Y3RJ871Y38RYJF7HYI3TGH7YI81YH87YH318Y3J71Y73HY17I3Y8YE7YE7HY1D873YJFTA87K437783217Y474YH73Y178YTH73Y78JRYH47814J71YJ784Y1J874FH7814J7HY64T87YJ87Y1871Y387YJF87Y781Y87J3YT781YH817Y3TH781Y38716Y781YTJ8H3Y87JYR3178Y3TH87J48R7JF47H387JDKUFR734HW25TPYN5373178YG178YGJ8Y71487YHT7Y8F1JU7YDJ87Y487IYH478Y178YD748Y178Y187RY18Y781Y7Y178TY48J1FUY4NF743847583F187YH781YH471Y78YJ7DEY4781YE87Y4R87Y1TGJ87Y4H871Y4TJ7841YI81Y74G71Y1D7UY4178Y4871HG7Y78FY4871Y4JG71Y4I871Y8RY78Y6H1T73Y8JT73Y8J71YT31J7Y87YD73Y178Y3781Y3H781YT3781YH6T78YT78Y784JD45F78748F3Y17YU47Y187Y41784YH17YT47Y4T71Y874Y17HY47H1YJ4D7Y17YH71Y4781Y4T87H1Y7Y1784DHY17Y4J17Y471Y578Y'
# 200d
Professional='UYFA8Y5FMG9A84Y57Y4O789YGURIYHKKJGTIX48E57YX47JY5IXK734YJSYH4G78TH47Y7J84SY5S8IYW234I87YS28IJY78YS1J7YJ178YTISJ7YI81YJ87TY187YJ17YTI8S7TY3JI78Y4TK78TY7YH1J7YHF714YK74Y174YHYUHTR5FG1E5D5413ES154GD541DTF56D3RG543F1G56FRG651F23T1GD63TG1F543DE5475F73JDJK846T1TDF34515641D6541DG546RD1654EW65RF6516D4FYJ47YI847J1Y8IY41JK78Y4FK871YJ8I7Y3DIK8173YJ871IDY478TYG1J7Y48IK7YJDK47YJ71Y187YJ418Y4J8I7Y1GJ7Y47ETM85LKA84357WF74IK5G7W948573FLKVE51IUM18U18Y389Y1UIY187Y871Y71R1FR1D56G1DRT65RD363D787138IDH18I3YJ813YJD781Y3I87Y1J7DY31K7438AT83476KI873YD18I74Y781TY78TYJ78TY174Y178YJ1Y487YK17YJGFHU4JHDK4GFNH481JK7FNY4Y17NY174FYN71NFY47814YJD17Y4JF17YR7Y4H78DYH81IYG1H74YIJD7Y431I87JYD48IYJ14Y7IJG17DY4781Y4J87YI81JDFY4178YJ47J1Y47J1HY478YHT784YTJ1874HYG14J7YD1J487YF18748MFK34574S42YH871GYJ4Y1JI87Y4FJ817Y4GJ817J4Y1GI8J74Y781YTJ4'
# 300d
Premium='N7W934GJ2746J9827456T8O97YH5I4YGWTJ5DRYHTNU4Y56N78Y8Y34O879Y4O879YN4587Y3N9O73N75Y3UY435UYH345FTCX5TREX4TRE35X3TREX5T435XDCGTB34XV5TC34BT5RDXC4TB5FCT34534YUI5YM34UY5MKI34NY5KI34NUY5K34UMY5NI8374JY5UI4353F45CT3C54T3CT53C4T5XC3TB45FC34BGF5CB34RB5CT3G4BF5T3FT54V345KHJMI3YUMYI346HIM3Y48IY58H734U53J4C5TF34T5T34JH5T3DF4JT534JH5T34D5CJT34FD5T34CD5TXC34TFC5D34TG5CVTG3454KJHM34N5YHLIK3U4MYN5IUY43MI5Y45NU443JH4KNJH3Y5NUY4HK5IUNY4H32MKLI4HLM2JH34L2M3UH4N2L3KYN5H43RKUS45OG434S39472J34FHSF38274K28394FHYNHLIU4Y5LIU3Y4ML5I8Y73L4895YJL89347Y6O8Y3JIK546UHUK45YJKH6U8Y4JIHKUTY56I8JK4H7Y5678YGJ4576YH487IJ5H6Y4875YH6I45YJ684YH5KI876YF4K5J7H6YF4H75Y6HK457Y6TK54JY6TKH4Y56JTHY456HJTK4756IJ78T4658IKJTY45IH67Y4J856YG8I4H7Y564JT56HI847YH6ITK4Y5KIJ6H7G46YJG4I857H6YGJ4756YHK4IJT6HYT475J6H4Y757674UJ5Y6T84Y75K6JT4HY567HJ4'
def generate(Edition:str=Premium):
n=random.randint(0,len(Edition)-16)
t_code=Edition[n:n+16]
i_crc=binascii.crc32(t_code.encode(),0)
code=str(i_crc)+t_code
# print(code)
return code
def check(x:bytes):
# x=b'7876632734272G7VYMOX87YVJ'
# x=b'1629819872181497JYDFKJ7YJE'
n=len(x)-16
# print(n)
y=int(x[:n])
print('code crc32:',y,y.to_bytes(4,'little').hex())
ret=binascii.crc32(x[n:],0)
print('calc crc32:',ret,ret.to_bytes(4,'little').hex())
print('result:',y==ret)
if __name__=="__main__":
x=generate()
print(x)
# check(x.encode())