一个Crackme的机器码的生成

    技术2022-05-11  127

     

    BOOL CCrackWindowDlg::OnInitDialog() { CDialog::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0== IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) {  CString strAboutMenu;  strAboutMenu.LoadString(IDS_ABOUTBOX);  if (!strAboutMenu.IsEmpty())  {   pSysMenu->AppendMenu(MF_SEPARATOR);   pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);  } } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 //  执行此操作 SetIcon(m_hIcon, TRUE);   // 设置大图标 SetIcon(m_hIcon, FALSE);  // 设置小图标 // TODO: 在此添加额外的初始化代码 CString str; DWORD SeriaNumber = NULL; char temp[MAX_PATH];//暂存字符串 long SeriaNum; ::GetVolumeInformation("c:/",NULL,NULL,&SeriaNumber,NULL,NULL,NULL,NULL);  //格式化为字符串 sprintf(temp,"%x",SeriaNumber);  for(int i = 0; i < strlen(temp); i++{  if(temp[i] >= 'a' && temp[i] <= 'f')  {   temp[i] = temp[i] - 32;//转化为大写  } } SeriaNum = StrToNum16(temp);//十六进制字符串转化为十进制数字 //以十进制形式计算 SeriaNum = SeriaNum * 12345 + 188968999;//取硬盘序列号*0x3039 + 0xB437027 //再次格式化为字符串 sprintf(temp,"%x",SeriaNum);  for(int _i = 0; _i < strlen(temp); _i++ ) {  if(temp[_i] >= 'a' && temp[_i] <= 'f')  {   temp[_i] = temp[_i] - 32;  } }  str = temp;  SeriaNum = StrToNum16(str);//十六进制字符串转化为十进制数字 //讲数字格式化为无符号字符串 str.Format("%u",SeriaNum); //个人习惯问题  Seria.SetWindowText(str.Left(str.GetLength())); m_btnOK.SetInactiveBgColor(RGB(0,0,0));//默认 return TRUE;  // 除非设置了控件的焦点,否则返回 TRUE}

    最新回复(0)