歡迎您光臨本站 註冊首頁

破解的一般思路

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

①跟蹤輸入註冊碼之後的判斷,從而找到註冊碼

文本API:GetWindowTextA()、GetDlgItemTextA()、GetDlgItemInt()

顯示API:MessageBox()、MessageBoxExAmple()、DialogBoxParamA()..CreateDialogIndirectParam()..DialogBoxIndirectParamA()..SreateDialogParamA()..MessageBoxIndirectA()..ShowWindow()

②跟蹤程序啟動時對註冊碼的判斷.很據序列號存放位置的不同可用不同的斷點.

註冊表中:RegQueryValueExA()

INI文件:GetPrivateProfileStringA()、GetProfileStringA()、GetPrivateProfileIntA()、GetProfileIntA()

一般文件:CreateFileA()、_lopen()

1.數據約束性的秘訣

2.那個不能用的萬能斷點hmemcpy

3.利用消息斷點:WM_LBUTTONDOWN(0201h),WM_LBUTTONUP(0202h)

4.利用提示消息


  重啟驗證
  目標:找驗證類型
  1)註冊表類型
  2)文件類型
  1)ini文件類型
  2)其他文件類型
  方法:1)訪問註冊表類常用API
  RegOpenKeyA  打開一個現有的註冊表項
  RegOpenKeyExA  打開一個現有的註冊表項
  RegCreateKeyA 在指定的項下創建或打開一個項
  RegCreateKeyExA 在指定項下創建新項的更複雜的方式
  RegDeleteKeyA 刪除現有項下方一個指定的子項
  RegDeleteValueA 刪除指定項下方的一個值
  RegQueryValueA 獲取一個項的設置值
  RegQueryValueExA 獲取一個項的設置值
  RegSetValueA 設置指定項或子項的值
  RegSetValueExA 設置指定項的值
  RegCloseKey 關閉系統註冊表中的一個項(或鍵)
  2)訪問文件類常用API
  CreateFileA 打開和創建文件、管道、郵槽、通信服務、設備以及控制台
  OpenFile 這個函數能執行大量不同的文件操作
  ReadFile 從文件中讀出數據
  ReadFileEx 與ReadFile相似,只是它只能用於非同步讀操作,並包含了一個完整的回調


  GetFileSize 文件大小
  3)INI文件API
  GetPrivateProfileStringA 獲取ini文件信息(讀取、寫入)

有一種寫註冊機方法是不分析其運算過程,用OllyDbg的Asm2Clipboard插件、IDA等工具可之際將序列號演演算法的彙編代碼提取出來,再嵌入到高級語言中.代碼轉換中要注意對戰平衡、數據進位、彙編語法格式、字元串引用等.

計時器:

1.使用SetTimer()函數

2.使用高精度的多媒體計時器

3.GetTickCount()函數

4.timeGetTime()函數

去的時間API函數一般有GetSystemTime()、GetLocalTime()、GetFileTime()

軟體將菜單或窗口變灰或變為不可用,一般採用下面幾個函數

1.EnableMenuItem()

2.EnableWindow()

KeyFile保護

一般思路:

1.先用FileMon等工具監視軟體對文件的操作,已找到keyFile的文件名

2.偽造一個KeyFile文件.用十六進位工具編輯和修改KeyFile

3.在調試器里用CreateFile函數設置斷點查看打開文件名指針,並記下返回的句柄

4.用ReadFile函數設斷,分析傳給ReadFile的文件句柄和緩衝區地址,對緩衝區存放的位元組設內存斷點,監視讀進來的KeyFile內容

網路驗證:

相關函數:send()   recv()

一般思路:如果驗證包的內容固定可以將數據包抓取,寫個本地服務端模擬器;如果驗證的數據包內容不固定,則必須分析出其結構,找出相應的演演算法

CD-Check(貌似想如今沒什麼用了)

相關函數:GetDrivetypeA()、GetLogicalDrives()、GetLogicalDriveStrings()、GetFileAttibutesA()

只運行一個實例:

實現方法:

1.查找窗口法:運行程序前用FindWindow、GetWindowText函數查找具有相同窗口類名和標題的函數

2.使用互斥對象:一般用CreateMutex函數實現

3.使用共享區塊

   


[火星人 ] 破解的一般思路已經有387次圍觀

http://coctec.com/docs/security/show-post-58797.html