/********************************************************************** * Functions *********************************************************************/ BOOL CALLBACK IH_DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_INITDIALOG: { g_HWND=hwndDlg; EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_INLINE), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_COPY), FALSE); } return TRUE; case WM_HELP: { char id[10]=""; sprintf(id, "%d", IDS_HELPINLINE); SetEnvironmentVariableA("HELPID", id); SetEnvironmentVariableA("HELPTITLE", "Inline Help"); DialogBox(hInst, MAKEINTRESOURCE(DLG_HELP), hwndDlg, DlgHelp); } return TRUE; case WM_BROWSE: { strcpy(g_szFileName, (const char*)wParam); //Retrieve the directory of the file. int i=strlen(g_szFileName)-1; int j=0; while(g_szFileName[i]!='\\') { i--; j++; } strncpy(g_szTargetDir, g_szFileName, strlen(g_szFileName)-j-1); //Retrieve stuff. EnableWindow(GetDlgItem(g_HWND, IDC_BTN_INLINE), FALSE); EnableWindow(GetDlgItem(g_HWND, IDC_BTN_COPY), FALSE); SendDlgItemMessageA(g_HWND, IDC_EDT_OEP, EM_SETREADONLY, 0, 0); //Enable change of OEP... DragAcceptFiles(g_HWND, FALSE); g_FileIsDll=IH_Debugger(g_szFileName, &g_TargetData, IH_DebugEnd_Callback, IH_ErrorMessageCallback); } return TRUE; case WM_DROPFILES: { //Get the dropped file name. DragQueryFileA((HDROP)wParam, 0, g_szFileName, 256); //Retrieve the directory of the file. int i=strlen(g_szFileName)-1; int j=0; while(g_szFileName[i]!='\\') { i--; j++; } strncpy(g_szTargetDir, g_szFileName, strlen(g_szFileName)-j-1); //Retrieve stuff. EnableWindow(GetDlgItem(g_HWND, IDC_BTN_INLINE), FALSE); EnableWindow(GetDlgItem(g_HWND, IDC_BTN_COPY), FALSE); SendDlgItemMessageA(g_HWND, IDC_EDT_OEP, EM_SETREADONLY, 0, 0); //Enable change of OEP... DragAcceptFiles(g_HWND, FALSE); g_FileIsDll=IH_Debugger(g_szFileName, &g_TargetData, IH_DebugEnd_Callback, IH_ErrorMessageCallback); } return TRUE; case WM_COMMAND: { switch(LOWORD(wParam)) { case IDC_BTN_INLINE: { NoFocus(); if(!(g_TargetData.EmptyEntry)) { MessageBoxA(hwndDlg, "You need to specify the place to start the inline...", "N00B!", MB_ICONERROR); return TRUE; } char patch_filename[256]=""; patch_filename[0]=0; OPENFILENAME ofstruct; memset(&ofstruct, 0, sizeof(ofstruct)); ofstruct.lStructSize=sizeof(ofstruct); ofstruct.hwndOwner=hwndDlg; ofstruct.hInstance=hInst; if(!g_FileIsDll) ofstruct.lpstrFilter="Executable files (*.exe)\0*.exe\0\0"; else ofstruct.lpstrFilter="Executable files (*.dll)\0*.dll\0\0"; ofstruct.lpstrFile=patch_filename; ofstruct.nMaxFile=256; ofstruct.lpstrInitialDir=g_szTargetDir; ofstruct.lpstrTitle="Save file"; if(!g_FileIsDll) ofstruct.lpstrDefExt="exe"; else ofstruct.lpstrDefExt="dll"; ofstruct.Flags=OFN_EXTENSIONDIFFERENT|OFN_HIDEREADONLY|OFN_NONETWORKBUTTON|OFN_OVERWRITEPROMPT; GetSaveFileName(&ofstruct); if(!patch_filename[0]) { MessageBoxA(hwndDlg, "You must select a file...", "Warning", MB_ICONWARNING); return TRUE; } CopyFileA(g_szFileName, patch_filename, FALSE); SetPE32Data(patch_filename, 0, UE_OEP, g_TargetData.EmptyEntry-g_TargetData.ImageBase); long newflags=(long)GetPE32Data(patch_filename, g_TargetData.EntrySectionNumber, UE_SECTIONFLAGS); SetPE32Data(patch_filename, g_TargetData.EntrySectionNumber, UE_SECTIONFLAGS, (newflags|0x80000000)); IH_GenerateAsmCode(g_codeText, g_TargetData); CopyToClipboard(g_codeText); MessageBoxA(hwndDlg, "1) Open the file you just saved with OllyDbg\n2) Open Multimate Assembler v1.5+\n3) Paste the code\n4) Modify the code to do something with the Security DLL\n5) Save the patched file with OllyDbg\n6) Enjoy!", "Instructions", MB_ICONINFORMATION); } return TRUE; case IDC_EDT_FREESPACE: { char free_temp[10]=""; GetDlgItemTextA(hwndDlg, IDC_EDT_FREESPACE, free_temp, 10); sscanf(FormatTextHex(free_temp), "%X", &(g_TargetData.EmptyEntry)); } return TRUE; case IDC_BTN_COPY: { NoFocus(); if(g_codeText[0]) { IH_GenerateAsmCode(g_codeText, g_TargetData); CopyToClipboard(g_codeText); MessageBoxA(hwndDlg, "Code copied to clipboard!", "Yay!", MB_ICONINFORMATION); } else MessageBoxA(hwndDlg, "There is no code to copy, please load a file first...", "Error!", MB_ICONERROR); } return TRUE; case IDC_BTN_PLUGINS: { NoFocus(); PLUGFUNC PluginFunction; HINSTANCE PLUGIN_INST; char total_found_s[5]=""; char plugin_name[100]=""; char plugin_dll[100]=""; char dll_to_load[256]=""; char temp_str[5]=""; int total_found=0; GetPrivateProfileStringA("Plugins", "total_found", "", total_found_s, 4, sg_szPluginIniFilePath); sscanf(total_found_s, "%d", &total_found); if(total_found) { HMENU myMenu=0; myMenu=CreatePopupMenu(); for(int i=1; i!=(total_found+1); i++) { sprintf(temp_str, "%d", i); GetPrivateProfileStringA(temp_str, "plugin_name", "", plugin_name, 100, sg_szPluginIniFilePath); AppendMenuA(myMenu, MF_STRING, i, plugin_name); } POINT cursorPos; GetCursorPos(&cursorPos); SetForegroundWindow(hwndDlg); UINT MenuItemClicked=TrackPopupMenu(myMenu, TPM_RETURNCMD|TPM_NONOTIFY, cursorPos.x, cursorPos.y, 0, hwndDlg, 0); SendMessage(hwndDlg, WM_NULL, 0, 0); if(!MenuItemClicked) return TRUE; sprintf(temp_str, "%d", (int)MenuItemClicked); GetPrivateProfileStringA(temp_str, "plugin_dll", "", plugin_dll, 100, sg_szPluginIniFilePath); sprintf(dll_to_load, "plugins\\%s", plugin_dll); PLUGIN_INST=LoadLibraryA(dll_to_load); if(!PLUGIN_INST) MessageBoxA(hwndDlg, "There was an error loading the plugin", plugin_dll, MB_ICONERROR); else { PluginFunction=(PLUGFUNC)GetProcAddress(PLUGIN_INST, "PluginFunction"); if(!PluginFunction) MessageBoxA(hwndDlg, "The export \"PluginFunction\" could not be found, please contact the plugin supplier", plugin_dll, MB_ICONERROR); else { if(!g_TargetData.ImageBase) g_TargetData.ImageBase=0x400000; ShowWindow(GetParent(hwndDlg), 0); PluginFunction(PLUGIN_INST, hwndDlg, g_TargetData.SecurityAddrRegister, sg_szAKTDirectory, g_TargetData.ImageBase); ShowWindow(GetParent(hwndDlg), 1); FreeLibrary(PLUGIN_INST); SetForegroundWindow(hwndDlg); } } } else { HMENU myMenu=0; myMenu=CreatePopupMenu(); AppendMenuA(myMenu, MF_STRING|MF_GRAYED, 1, "No plugins found :("); POINT cursorPos; GetCursorPos(&cursorPos); SetForegroundWindow(hwndDlg); TrackPopupMenu(myMenu, TPM_RETURNCMD|TPM_NONOTIFY, cursorPos.x, cursorPos.y, 0, hwndDlg, 0); } } return TRUE; case IDC_EDT_OEP: { char temp_oep[10]=""; GetDlgItemTextA(hwndDlg, IDC_EDT_OEP, temp_oep, 10); sscanf(temp_oep, "%X", &(g_TargetData.OEP)); } return TRUE; } } return TRUE; } return FALSE; }
BOOL CALLBACK DlgAnalysis(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_INITDIALOG: { SetLevelList(hwndDlg); SetDlgItemTextA(hwndDlg, IDC_EDT_HWID, "0000-0000"); keyinfo_level=0; } return TRUE; case WM_CLOSE: { EndDialog(hwndDlg, 0); } return TRUE; case WM_HELP: { char id[10]=""; sprintf(id, "%d", IDS_HELPANALYZE); SetEnvironmentVariableA("HELPID", id); SetEnvironmentVariableA("HELPTITLE", "Analysis Help"); DialogBox(hInst, MAKEINTRESOURCE(DLG_HELP), hwndDlg, DlgHelp); } return TRUE; case WM_COMMAND: { switch(LOWORD(wParam)) { case IDC_BTN_ANALYZE: { NoFocus(); char keyinfo_name[1024]=""; char keyinfo_hwid[10]=""; char keyinfo_key[1024]=""; unsigned hwid=0; GetDlgItemTextA(hwndDlg, IDC_EDT_NAME, keyinfo_name, 1024); if(!GetDlgItemTextA(hwndDlg, IDC_EDT_SERIAL, keyinfo_key, 1024)) { SetDlgItemTextA(hwndDlg, IDC_EDT_ADVLOG, "You need to enter a serial!"); return TRUE; } int len=GetDlgItemTextA(hwndDlg, IDC_EDT_HWID, keyinfo_hwid, 10); if(len) { FormatHex(keyinfo_hwid); sscanf(keyinfo_hwid, "%X", &hwid); } KeyInformation info= {0}; if(RetrieveKeyInfo(keyinfo_level, keyinfo_name, hwid, keyinfo_key, &info, hwndDlg, IDC_EDT_ADVLOG)) { char temp[100]=""; HWND log=GetDlgItem(hwndDlg, IDC_EDT_ADVLOG); bool xorsym=false; if(hwid) { if(!xorsym) { xorsym=true; AddLogMessage(log, "Symmetric key changes:", false); } sprintf(temp, "%.8X^%.8X=%.8X (keytemplateID^hwid=sym)", (unsigned int)info.symkey^hwid, (unsigned int)hwid, (unsigned int)info.symkey); AddLogMessage(log, temp, false); } if(sym_xorval) { if(!xorsym) { xorsym=true; //TODO: remove? AddLogMessage(log, "Symmetric key changes:", false); } sprintf(temp, "%.8X^%.8X=%.8X (sym^xorval=newsym)", (unsigned int)info.symkey, (unsigned int)sym_xorval, (unsigned int)info.symkey^sym_xorval); AddLogMessage(log, temp, false); } sprintf(temp, "%.8X", (unsigned int)info.symkey^sym_xorval); SetDlgItemTextA(hwndDlg, IDC_EDT_SYM, temp); sprintf(temp, "%.4d-%.2d-%.2d", info.createdyear, info.createdmonth, info.createdday); SetDlgItemTextA(hwndDlg, IDC_EDT_DATE, temp); sprintf(temp, "%d", info.otherinfo[0]); SetDlgItemTextA(hwndDlg, IDC_EDT_OTHER0, temp); sprintf(temp, "%d", info.otherinfo[1]); SetDlgItemTextA(hwndDlg, IDC_EDT_OTHER1, temp); sprintf(temp, "%d", info.otherinfo[2]); SetDlgItemTextA(hwndDlg, IDC_EDT_OTHER2, temp); sprintf(temp, "%d", info.otherinfo[3]); SetDlgItemTextA(hwndDlg, IDC_EDT_OTHER3, temp); sprintf(temp, "%d", info.otherinfo[4]); SetDlgItemTextA(hwndDlg, IDC_EDT_OTHER4, temp); sprintf(temp, "%.8X", (unsigned int)info.uninstallcode); SetDlgItemTextA(hwndDlg, IDC_EDT_UNINSTALLCODE, temp); if(info.keystring_length) SetDlgItemTextA(hwndDlg, IDC_EDT_KEYSTRING, info.keystring); else SetDlgItemTextA(hwndDlg, IDC_EDT_KEYSTRING, "No KeyString embedded in this key..."); sprintf(temp, "%d", info.keystring_length); SetDlgItemTextA(hwndDlg, IDC_EDT_KEYSTRING_LENGTH, temp); SendMessageA(log, WM_VSCROLL, SB_BOTTOM, 0); } } return TRUE; case IDC_CHK_DIGITALRIVER: ///Digital River checkbox. { NoFocus(); if(IsDlgButtonChecked(hwndDlg, LOWORD(wParam))) { CheckDlgButton(hwndDlg, IDC_CHK_ESELLERATE, BST_UNCHECKED); sym_xorval=0x91827364; ///Official XOR value of DigitalRiver tagged keys... } else sym_xorval=0; } return TRUE; case IDC_CHK_ESELLERATE: ///eSellerate checkbox. { NoFocus(); if(IsDlgButtonChecked(hwndDlg, LOWORD(wParam))) { CheckDlgButton(hwndDlg, IDC_CHK_DIGITALRIVER, BST_UNCHECKED); sym_xorval=0x19283746; ///Official XOR value of eSellerate tagged keys... } else sym_xorval=0; } return TRUE; case IDC_COMBO_LEVEL: { switch(HIWORD(wParam)) { case CBN_SELCHANGE: { bool isNoSeperator=true; keyinfo_level=SendDlgItemMessageA(hwndDlg, LOWORD(wParam), CB_GETCURSEL, 0, 0); if(keyinfo_level==1 or keyinfo_level==6 or keyinfo_level==16) isNoSeperator=false; bool en=isNoSeperator; EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_NAME), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_SERIAL), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_HWID), en); EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_ANALYZE), en); EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_DIGITALRIVER), en); EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_ESELLERATE), en); if(keyinfo_level>1 and keyinfo_level<6) keyinfo_level--; else if(keyinfo_level>6 and keyinfo_level<16) keyinfo_level-=2; else if(keyinfo_level>16) keyinfo_level-=3; } return TRUE; } } return TRUE; } } return TRUE; } return FALSE; }
BOOL CALLBACK VF_DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_INITDIALOG: { g_shared_hwnd=hwndDlg; EnableWin(IDC_BTN_CALCFROMRAW, 0); CheckDlgButton(hwndDlg, IDC_CHK_LOG, log_version); } return TRUE; case WM_CLOSE: { EndDialog(hwndDlg, 0); } return TRUE; case WM_HELP: { char id[10]=""; sprintf(id, "%d", IDS_HELPVERSION); SetEnvironmentVariableA("HELPID", id); SetEnvironmentVariableA("HELPTITLE", "Version Help"); DialogBox(hInst, MAKEINTRESOURCE(DLG_HELP), hwndDlg, DlgHelp); } return TRUE; case WM_BROWSE: { strcpy(g_szFileName, (const char*)wParam); CreateThread(0, 0, VF_DebugThread, 0, 0, 0); } return TRUE; case WM_DROPFILES: { DragQueryFileA((HDROP)wParam, 0, g_szFileName, 256); CreateThread(0, 0, VF_DebugThread, 0, 0, 0); } return TRUE; case WM_COMMAND: { switch(LOWORD(wParam)) { case IDC_CHK_LOG: { NoFocus(); log_version=!!IsDlgButtonChecked(hwndDlg, LOWORD(wParam)); } return TRUE; case IDC_BTN_CALCFROMRAW: { NoFocus(); ResetContent(false); ARMA_OPTIONS op= {0}; EXTRA_OPTIONS eo= {0}; if(g_extra_options) { FillArmaExtraOptionsStruct(g_extra_options, &eo); FillArmaOptionsStruct(g_raw_options, g_version, &op, &eo, g_minimal); } else FillArmaOptionsStruct(g_raw_options, g_version, &op, 0, g_minimal); PrintArmaOptionsStruct(&op, 0, g_raw_options, g_extra_options); } return TRUE; case IDC_EDT_RAWOPTIONS: { char str[11]=""; if(GetDlgItemTextA(hwndDlg, IDC_EDT_RAWOPTIONS, str, 10)) { EnableWin(IDC_BTN_CALCFROMRAW, 1); sscanf(str, "%X", &g_raw_options); } } return TRUE; case IDC_EDT_EXTRAOPTIONS: { char str[11]=""; if(GetDlgItemTextA(hwndDlg, IDC_EDT_EXTRAOPTIONS, str, 10)) { EnableWin(IDC_BTN_CALCFROMRAW, 1); sscanf(str, "%X", &g_extra_options); } } return TRUE; } } return TRUE; } return FALSE; }
BOOL CALLBACK KG_DlgKeyGenerate(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_INITDIALOG: { SetLevelList(hwndDlg); SetDlgItemTextA(hwndDlg, IDC_EDT_HWID, "0000-0000"); bool en = false; EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_OTHER1), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_OTHER2), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_OTHER3), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_OTHER4), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_KEYSTRING), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_PVT), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_Y), en); ShowWindow(GetDlgItem(hwndDlg, IDC_CHK_BABOON), 0); keygenerate_level = -1; SYSTEMTIME systime = {0}; GetSystemTime(&systime); char temp[20] = ""; sprintf(temp, "%d", MakeDate(systime.wYear, systime.wMonth, systime.wDay)); SetDlgItemTextA(hwndDlg, IDC_EDT_DATE, temp); sprintf(temp, "%.4d-%.2d-%.2d", systime.wYear, systime.wMonth, systime.wDay); SetDlgItemTextA(hwndDlg, IDC_EDT_DATEYMD, temp); SendDlgItemMessageA(hwndDlg, IDC_EDT_KEYSTRING, EM_SETLIMITTEXT, 255, 0); } return TRUE; case WM_CONTEXTMENU: { if(GetDlgCtrlID((HWND)wParam) == IDC_EDT_SERIAL) { char serial[2048] = ""; int len = GetDlgItemTextA(hwndDlg, IDC_EDT_SERIAL, serial, 2048); if(!len) return TRUE; HMENU myMenu = 0; myMenu = CreatePopupMenu(); AppendMenu(myMenu, MF_STRING, 1, "Copy Serial"); POINT cursorPos; GetCursorPos(&cursorPos); SetForegroundWindow(hwndDlg); UINT MenuItemClicked = TrackPopupMenu(myMenu, TPM_RETURNCMD | TPM_NONOTIFY, cursorPos.x, cursorPos.y, 0, hwndDlg, 0); SendMessage(hwndDlg, WM_NULL, 0, 0); if(MenuItemClicked == 1) { CopyToClipboard(serial); MessageBeep(MB_ICONINFORMATION); } } } return TRUE; case WM_HELP: { char id[10] = ""; sprintf(id, "%d", IDS_HELPKEYGEN); SetEnvironmentVariableA("HELPID", id); SetEnvironmentVariableA("HELPTITLE", "KeyGen Help"); DialogBox(hInst, MAKEINTRESOURCE(DLG_HELP), hwndDlg, DlgHelp); } return TRUE; case WM_COMMAND: { switch(LOWORD(wParam)) { case IDC_BTN_GENERATE: { NoFocus(); char name[512] = ""; char keystring[512] = ""; char pvt[512] = ""; char y[512] = ""; char hwid[10] = ""; char sym[10] = ""; char templ[512] = ""; unsigned int sy = 0, hw = 0; GetDlgItemTextA(hwndDlg, IDC_EDT_NAME, name, 512); GetDlgItemTextA(hwndDlg, IDC_EDT_KEYSTRING, keystring, 256); GetDlgItemTextA(hwndDlg, IDC_EDT_HWID, hwid, 10); GetDlgItemTextA(hwndDlg, IDC_EDT_SYM, sym, 10); FormatHex(hwid); FormatHex(sym); sscanf(hwid, "%X", &hw); sscanf(sym, "%X", &sy); sprintf(sym, "%.8X", sy); SetDlgItemTextA(hwndDlg, IDC_EDT_SYM, sym); GetDlgItemTextA(hwndDlg, IDC_EDT_PVT, pvt, 512); int len = GetDlgItemTextA(hwndDlg, IDC_EDT_Y, y, 512); int comma_count = 0; for(int i = 0; i < len; i++) if(y[i] == ',') comma_count++; bool baboon = !!IsDlgButtonChecked(hwndDlg, IDC_CHK_BABOON); if(keygenerate_level == 29 and comma_count != 2 and !baboon) { AddLogMessage(GetDlgItem(hwndDlg, IDC_EDT_ADVLOG), "Invalid ECDSA Public format...\nUse: ", true); return TRUE; } if(((!*pvt) or (!*y)) and keygenerate_level != -1 and !baboon) { if(GetDlgItemTextA(hwndDlg, IDC_EDT_TEMPLATE, templ, 512)) { KG_GeneratePvtY(keygenerate_level, templ, pvt, y); SetDlgItemTextA(hwndDlg, IDC_EDT_PVT, pvt); SetDlgItemTextA(hwndDlg, IDC_EDT_Y, y); } else { AddLogMessage(GetDlgItem(hwndDlg, IDC_EDT_ADVLOG), "You should enter the values for the key signing...", true); return TRUE; } } int date = GetDlgItemInt(hwndDlg, IDC_EDT_DATE, 0, 0); int other0 = GetDlgItemInt(hwndDlg, IDC_EDT_OTHER0, 0, 0) & 65535; int other1 = GetDlgItemInt(hwndDlg, IDC_EDT_OTHER1, 0, 0) & 65535; int other2 = GetDlgItemInt(hwndDlg, IDC_EDT_OTHER2, 0, 0) & 65535; int other3 = GetDlgItemInt(hwndDlg, IDC_EDT_OTHER3, 0, 0) & 65535; int other4 = GetDlgItemInt(hwndDlg, IDC_EDT_OTHER4, 0, 0) & 65535; SetDlgItemInt(hwndDlg, IDC_EDT_DATE, date, 1); if(IsDlgButtonChecked(hwndDlg, IDC_CHK_MODKEY)) date = 65344; SetDlgItemInt(hwndDlg, IDC_EDT_OTHER0, other0, 0); if(keygenerate_level != -1) { SetDlgItemInt(hwndDlg, IDC_EDT_OTHER1, other1, 0); SetDlgItemInt(hwndDlg, IDC_EDT_OTHER2, other2, 0); SetDlgItemInt(hwndDlg, IDC_EDT_OTHER3, other3, 0); SetDlgItemInt(hwndDlg, IDC_EDT_OTHER4, other4, 0); } SetDlgItemTextA(hwndDlg, IDC_EDT_SERIAL, CreateSignedKey(keygenerate_level, sy, keygenerate_sym_xorval, pvt, y, keystring, date, name, hw, other0, other1, other2, other3, other4, baboon, GetDlgItem(hwndDlg, IDC_EDT_ADVLOG))); SendMessageA(GetDlgItem(hwndDlg, IDC_EDT_ADVLOG), WM_VSCROLL, SB_BOTTOM, 0); } return TRUE; case IDC_BTN_MAKEDATE: { NoFocus(); char date_text[20] = ""; char new_date[20] = ""; int len = GetDlgItemTextA(hwndDlg, IDC_EDT_DATEYMD, date_text, 20); for(int i = 0, j = 0; i < len; i++) if(date_text[i] != '-') j += sprintf(new_date + j, "%c", date_text[i]); len = strlen(new_date); UINT dest_id; HMENU myMenu = 0; myMenu = CreatePopupMenu(); if(len != 8) AppendMenuA(myMenu, MF_STRING | MF_GRAYED, 3, "Error!"); else { AppendMenu(myMenu, MF_STRING, 1, "Date"); AppendMenu(myMenu, MF_STRING, 2, "oth0"); } POINT cursorPos; GetCursorPos(&cursorPos); SetForegroundWindow(hwndDlg); UINT MenuItemClicked = TrackPopupMenu(myMenu, TPM_RETURNCMD | TPM_NONOTIFY, cursorPos.x, cursorPos.y, 0, hwndDlg, 0); SendMessage(hwndDlg, WM_NULL, 0, 0); switch(MenuItemClicked) { case 1: dest_id = IDC_EDT_DATE; break; case 2: dest_id = IDC_EDT_OTHER0; break; case 3: return TRUE; break; } char y[5] = "", m[3] = "", d[3] = ""; int y_ = 0, m_ = 0, d_ = 0; strncpy(y, new_date, 4); strncpy(m, new_date + 4, 2); strncpy(d, new_date + 6, 2); sscanf(y, "%d", &y_); sscanf(m, "%d", &m_); sscanf(d, "%d", &d_); sprintf(date_text, "%d", MakeDate(y_, m_, d_)); SetDlgItemTextA(hwndDlg, dest_id, date_text); } return TRUE; case IDC_CHK_BABOON: { NoFocus(); bool baboon = true; if(IsDlgButtonChecked(hwndDlg, IDC_CHK_BABOON)) baboon = false; EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_PVT), baboon); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_Y), baboon); } return TRUE; case IDC_BTN_CALC: { NoFocus(); char temp[1024] = ""; char temp2[256] = ""; UINT MenuItemClicked = 1; HMENU myMenu = 0; char clipboard[256] = ""; char pvt[1024] = ""; char y[1024] = ""; if(!GetDlgItemTextA(hwndDlg, IDC_EDT_TEMPLATE, temp, 1024)) return TRUE; KG_GeneratePvtY(keygenerate_level, temp, pvt, y); sprintf(temp, "%.8X", KG_GenerateSymmetric(keygenerate_level, temp)); if(keygenerate_level >= 0) { myMenu = CreatePopupMenu(); AppendMenuA(myMenu, MF_STRING, 4, "Sym Only"); if(keygenerate_level == 29) AppendMenu(myMenu, MF_STRING, 1, "Pvt, ECDSA, Sym"); else AppendMenu(myMenu, MF_STRING, 1, "Pvt, Y, Sym"); if(keygenerate_level == 29) AppendMenu(myMenu, MF_STRING, 2, "Pvt, ECDSA"); else AppendMenu(myMenu, MF_STRING, 2, "Pvt, Y"); PasteFromClipboard(clipboard, 256); FormatHex(clipboard); int len = strlen(clipboard); if(len and len < 9) { unsigned int clipboard_sym = 0; sscanf(clipboard, "%X", &clipboard_sym); if(keygenerate_level == 29) sprintf(temp2, "Pvt, ECDSA, Sym: %.8X", clipboard_sym); else sprintf(temp2, "Pvt, Y, Sym: %.8X", clipboard_sym); AppendMenu(myMenu, MF_STRING, 3, temp2); } POINT cursorPos; GetCursorPos(&cursorPos); SetForegroundWindow(hwndDlg); MenuItemClicked = TrackPopupMenu(myMenu, TPM_RETURNCMD | TPM_NONOTIFY, cursorPos.x, cursorPos.y, 0, hwndDlg, 0); SendMessage(hwndDlg, WM_NULL, 0, 0); } switch(MenuItemClicked) { case 1: { SetDlgItemTextA(hwndDlg, IDC_EDT_Y, y); SetDlgItemTextA(hwndDlg, IDC_EDT_PVT, pvt); SetDlgItemTextA(hwndDlg, IDC_EDT_SYM, temp); } break; case 2: { SetDlgItemTextA(hwndDlg, IDC_EDT_Y, y); SetDlgItemTextA(hwndDlg, IDC_EDT_PVT, pvt); } break; case 3: { SetDlgItemTextA(hwndDlg, IDC_EDT_Y, y); SetDlgItemTextA(hwndDlg, IDC_EDT_PVT, pvt); SetDlgItemTextA(hwndDlg, IDC_EDT_SYM, clipboard); } break; case 4: { SetDlgItemTextA(hwndDlg, IDC_EDT_SYM, temp); } break; } if(keygenerate_level >= 0) DestroyMenu(myMenu); } return TRUE; case IDC_CHK_DIGITALRIVER: ///Digital River checkbox. { NoFocus(); if(IsDlgButtonChecked(hwndDlg, LOWORD(wParam))) { CheckDlgButton(hwndDlg, IDC_CHK_ESELLERATE, 0); keygenerate_sym_xorval = 0x91827364; ///Official XOR value of DigitalRiver tagged keys... } else keygenerate_sym_xorval = 0; } return TRUE; case IDC_CHK_ESELLERATE: ///eSellerate checkbox. { NoFocus(); if(IsDlgButtonChecked(hwndDlg, LOWORD(wParam))) { CheckDlgButton(hwndDlg, IDC_CHK_DIGITALRIVER, 0); keygenerate_sym_xorval = 0x19283746; ///Official XOR value of eSellerate tagged keys... } else keygenerate_sym_xorval = 0; } return TRUE; case IDC_CHK_MODKEY: { NoFocus(); } return TRUE; case IDC_COMBO_LEVEL: { switch(HIWORD(wParam)) { case CBN_SELCHANGE: { bool isNoSeperator = true; keygenerate_level = SendDlgItemMessageA(hwndDlg, LOWORD(wParam), CB_GETCURSEL, 0, 0); if(keygenerate_level == 1 or keygenerate_level == 6 or keygenerate_level == 16) isNoSeperator = false; if(!keygenerate_level) keygenerate_level--; else if(keygenerate_level > 1 and keygenerate_level < 6) //signed v2 keygenerate_level -= 2; else if(keygenerate_level > 6 and keygenerate_level < 16) //signed v3 keygenerate_level += 3; else if(keygenerate_level > 16) //short v3 keygenerate_level += 3; bool en = isNoSeperator; EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_NAME), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_HWID), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_TEMPLATE), en); EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_CALC), en); EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_DIGITALRIVER), en); EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_ESELLERATE), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_SYM), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_DATEYMD), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_DATE), en); EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_MAKEDATE), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_OTHER0), en); EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_GENERATE), en); if(keygenerate_level == -1) en = false; EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_OTHER1), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_OTHER2), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_OTHER3), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_OTHER4), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_PVT), en); EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_Y), en); en = false; if(keygenerate_level > 18 and isNoSeperator) en = true; EnableWindow(GetDlgItem(hwndDlg, IDC_EDT_KEYSTRING), en); /*char temp[10]=""; sprintf(temp, "%d", keygenerate_level);*/ if(isNoSeperator) { SetDlgItemTextA(hwndDlg, IDC_EDT_PVT, ""); SetDlgItemTextA(hwndDlg, IDC_EDT_Y, ""); } bool baboon = false; if(keygenerate_level == 29) { SetDlgItemTextA(hwndDlg, IDC_STC_YPUB, "ECDSA Public:"); baboon = true; } else { SetDlgItemTextA(hwndDlg, IDC_STC_YPUB, "Y:"); CheckDlgButton(hwndDlg, IDC_CHK_BABOON, 0); } ShowWindow(GetDlgItem(hwndDlg, IDC_CHK_BABOON), baboon); } return TRUE; } } return TRUE; } } return TRUE; } return FALSE; }