日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小白第一次注册机编写,c/bat/易某言(不好意思说2333)

發布時間:2024/1/1 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小白第一次注册机编写,c/bat/易某言(不好意思说2333) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

小白第一次注冊機編寫,c/bat/易某言(不好意思說出口2333)

  • 零、視頻教程
  • 一、免責聲明
  • 二、軟件相關信息
  • 三、查殼
  • 四、分析軟件注冊流程
  • 五、IDA載入
  • 六、OD載入
    • (一)、找關鍵跳轉
      • 1、查看代碼
      • 2、搜索字符串
        • (1)、誤解
        • (2)、正解
    • (二)、嘗試爆破
      • 1、分析、猜測
      • 2、驗證猜想
    • (三)、嘗試追碼
      • 1、定位關鍵call
      • 2、去除花指令
      • 3、單步步過,猜測call的作用
      • 4、跟進關鍵call
      • 5、測試追出的真碼
    • (四)、注冊碼算法分析
      • 1、取消已有的注冊碼授權
      • 2、跟進關鍵call
      • 3、跟進生成四位數的call
  • 七、注冊機的實現
    • 易語言實現
    • C語言實現
      • C語言精簡版
      • c語言 (相對)完整版
      • VC的QT界面版
    • bat(cmd|dos)版
  • 全文終

話說我覺得,這是目前我離【精華】最近的一次了
注:之前得到的那個精華不算完全原創。。。
更準確地說應該是學習的筆記,而不是純自主的研究或是分析。。。
咳咳下面這個是原創的!!!!~~
第一次寫注冊機的教程,如有問題,還請大家斧正。

正文分界線:


零、視頻教程

受吾愛破解評論指點,特此錄制了視頻版的教程。。。
順便求個素質三連
分流鏈接!

【視頻教程】music studio pc版 由爆破、追碼、到注冊機的編寫
https://www.52pojie.cn/thread-962376-1-1.html
(出處: 吾愛破解論壇)

B站直鏈:https://b23.tv/av53311014

一、免責聲明

包含且不限于本文、截圖、分析,版權均歸本人所有,如需轉載,請與本人聯系(看雪|吾愛ID相同),軟件版權歸軟件官方所有,如有侵權,請聯系管理或本人刪帖。
僅供學術交流研究使用,不得用于非法、商業用途!!
請支持正版,購買正版以獲得新版更新及更好地服務。

二、軟件相關信息

軟件名:sofeh music studio 4551
軟件官網:http://www.sofeh.net/engl/?page_id=15
軟件類型:win
軟件大小:74.7MB
下載地址:http://dl.sofeh.net/download/soft-musicstudio4551.7z
注冊方式:請求碼(機器碼生成),本地注冊
分析方式:動態
使用軟件:吾愛專版 OD(Ollydbg)(下載見愛盤)
分析人員:濤之雨
分析環境:WinXp
鳴謝:感謝 @KaQqi大佬抽出寶貴時間進行指導。

安卓APP版本
請移步本人的另一篇文章
Google Play的一款專業電子琴。ORG 2020 漢化 && 破解版
https://www.52pojie.cn/thread-947671-1-1.html
(出處:吾愛破解論壇)

三、查殼

額。。我先說一下吧。。有能力的朋友也可以試驗一下脫殼。。。

KaQqi大佬說,這個軟件是:

enigma的殼upx的升級版虛擬殼
加了三次殼兩次enigma一次upx
越菜的人越喜歡加殼保護程序。。。
這個版本有點新,這個東西nop了crc就直接gg了
修復不了IAT”

咳咳。。其實我都不知道大佬說的是啥。。。直接復制過來了。。。。

查殼完畢,繼續。

四、分析軟件注冊流程

不管破解什么,如何破解,都是至少要對軟件注冊的流程十分熟悉,
如果不了解流程就去嘗試破解,有可能會誤入歧途,然后最終導致放棄。
流程如圖1所示:

Help-Activate the Professional freatures-輸入注冊碼-判斷是否成功-錯誤代碼


(圖1)

五、IDA載入

因為是加密壓縮殼,所以沒有分析出什么有效信息,故不附圖了,該做的流程還是要有的,以防萬一有什么發現。

六、OD載入

因為沒有檢測調試器,可以直接拖入OD調試,或是附加調試。

這里推薦附加的方法,因為是虛擬殼,直接載入有時有可能會出問題。這里我們附加到調試器。

如圖2,圖3所示:右上角文件-附加-選擇【music studio】進程-確定。


(圖2)


(圖3)

因為是附加調試會暫停在系統領空,先按圖4所示:

點運行程序(F9)讓程序跑起來,
點E(快捷鍵:Alt+E【Modules】,)顯示模塊列表
雙擊Music Studio.exe軟件主模塊,


(圖4)

(一)、找關鍵跳轉

1、查看代碼

進入軟件,發現軟件內機器碼全部都是00(圖5中所示)應該是虛擬化后釋放了(通過舊版OD可以看到變化前后的內容,如動圖1)


(圖5)


(動圖1)

2、搜索字符串

(1)、誤解

直接如圖6所示,進行右鍵-中文搜索引擎-智能搜索的操作。

結果如圖7,在這里是搜不到任何字符串的,因為虛擬殼,會把代碼(一般是入口)虛擬到內存的其他模塊/進程申請的內存里,因此需要回到軟件的領空,才能搜到軟件內部的字符串。


(圖6)


(圖7)

(2)、正解

在說完誤解就要想辦法回到軟件的內存里,如圖8、圖9所示:右鍵-轉到-表達式(快捷鍵:Ctrl+G)【Goto】-輸入00401000


(圖8)


(圖9)

(注:winxp軟件的基址一般都是401000,如果是win7及以上版本的系統則不一定。需要自行點M(快捷鍵:Alt+M)[memory]查看內存,獲取基址。詳細教程可以看論壇的教程或是到搜索引擎進行搜索)

就可以轉到軟件的內存了。此處重復剛才錯誤的位置所做的操作,即:

如圖6所示,進行右鍵-中文搜索引擎-智能搜索的操作。

搜索結果如圖10。


(圖10)

根據四、分析軟件注冊流程的結果,需要找到彈窗的call

由彈窗的信息,可以嘗試搜索關鍵詞Error, activation, code, wrong等以定位彈窗的call,從而向上查找關鍵跳轉。

注:搜索關鍵詞的時候可以稍微減少一點,類比網絡搜索關鍵詞,自然是:***越少搜索的范圍越多,精度越差;關鍵詞越多搜索的范圍越小,精度越高。***可以嘗試用稍微短一點的關鍵詞以匹配更多的字符串,以防關鍵詞被拆分。

如圖11所示,本人搜索的就是activation,因為一般的英文軟件里都會有error或sorry之類的詞語,重復率會比較高。搜到了,且僅有一處。上下字符串的內容也是符合該處其他內容的,因此可以初步判斷,該處即為彈窗的內容。


(圖11)

(二)、嘗試爆破

雙擊改行(或是選中該行后按Enter鍵),查看該處代碼。

1、分析、猜測

如圖12


(圖12)

該段代碼比較長,因此可以猜測此處上方有判斷語句,

向下觀察,發現有一處jmp指令,再次猜測上方有個跳轉,可以實現跳過該段錯誤提示的彈窗。

向上觀察,發現有一處jnz指令,鼠標點擊改行指令,根據左側的引導線箭頭可知,恰好跳過了錯誤彈窗的一段內容。

因此,猜測該處為關鍵跳轉。

2、驗證猜想

經過分析,猜測如圖12中005D81C2處為判斷是否注冊成功的關鍵跳轉。

如圖13所示:選中改行-右鍵-斷點-切換(快捷鍵:F2)在該處下一個INT3斷點(又稱CC斷點,CC指令)


(圖13)

如圖14所示,再次重復注冊操作,可以看到再點擊Activate后,軟件立即(根據計算機執行能力,或等一會)斷在了下斷點改行,并且左上角顯示暫停字樣。


(圖14)

斷點行左側引導線為灰色,證明跳轉不成立,雙擊右側寄存器窗口的控制符Z以使該跳轉成立。

更改后,效果如圖15,引導線變為紅色,即跳轉成立。點擊如圖15所示左上角運行按鈕(快捷鍵:F9)。


(圖15)

運行后發現成功!

結果如圖16所示。


(圖16)

再次運行該軟件,發現存在如圖17所示的問題:

軟件依舊為試用版,未解鎖專業版
軟件注冊按鈕沒有消失(官網說注冊成功后Activate按鈕會消失)


(圖17)

因此破解到此尚未成功。

(三)、嘗試追碼

1、定位關鍵call

回到剛才下斷點的地址,

注:如果沒有找到可以

1:按上文【誤解】的內容跳轉到指定地址。)
2:點擊菜單下側B按鈕(快捷鍵:Alt+B)【Break】

向上查看關鍵比較代碼

如圖18,關鍵跳轉上方的三個call都很可疑,均需要分析。


(圖18)

2、去除花指令

另外注意到圖18最上方所示的代碼有點奇怪,有一個跳轉。

因好奇心趨勢,前去查看。

詳情如圖19所示:從005D8155的ret返回后到005D8187的紫紅色選中區域到處都是00和FF(如圖19中藍、黃顏色框選的內容)


(圖19)

因此判斷該處為花指令,如圖20所示,選中該區域,右鍵-二進制-用00填充。


(圖20)

注:下一行的數據里存在有用的數據,不可填充。

效果圖見圖21。OD成功的把之前錯誤識別的push ebp翻譯出來了,接著需要檢驗該處分析是否正確。


(圖21)

在分析出的該行push ebp按F2下一個INT3斷點,再次重復注冊操作。成功的斷在改行,沒有報錯,說明分析正確無誤。

3、單步步過,猜測call的作用

如圖22,一路按F8單步步過(圖22中右側綠色箭頭所示按鈕;白色箭頭所示為:單步步入),不跟入call內部,先猜測每個call的作用,然后重點分析懷疑對象,以提高效率和成功率。


(圖22)

跟到如圖23所示的地方,剛剛經過一個call,通過分析、查看下側信息窗口、右側寄存器窗口及堆棧窗口返回的數值,可以猜測005D81A6處call是得到假碼的call,繼續分析下面兩個call可以猜測出下面第二個call 判斷注冊是否成功,而根據返回的al標志符的值,判斷是否注冊成功。


(圖23)

4、跟進關鍵call

因此需要著重跟進該處call進行分析

如圖24所示,在該處call下斷點,重復注冊操作,進程在該處斷下,按F7單步跟入,追蹤真碼。


(圖24)

如圖25所示,發現在上下移動代碼行后,EIP所在行出現了錯誤。看來又是花指令。如法炮制,去之。


(圖25)

去完花,代碼如圖26所示,因為篇幅原因,下面的兩個call已經分析過了,依然是單步步過下幾行。


(圖26)

分析如下圖27。至此,真碼已經出爐了。在寄存器的EAX和EDX中,已經把真碼告訴我們了。。。


(圖27)

5、測試追出的真碼

如圖28所示,雖然已經確認了是真的注冊碼,但測試一下還是要令人愉悅的23333。
至此可以利用論壇的其他教程寫出內存注冊機了。(善用論壇搜索功能)


(圖28)

(四)、注冊碼算法分析

1、取消已有的注冊碼授權

要分析算法,首先要取消剛剛注冊碼,方法如下,任選其一即可:

1) 再次打開注冊窗口,改動注冊碼,按回車鍵;
2) 如圖29所示,在軟件根目錄下,注冊成功后會新生成一個Activation注冊文件,以文本方式打開該文件,即可發現請求碼和注冊碼。刪掉該文件即可。

注:軟件需要重新打開才會生效


(圖29)

2、跟進關鍵call

之前追碼追到的算法關鍵call地址,如圖30所示,我的電腦是004DFE68,觀察下面的代碼,發現OD識別出了字符-,結合上面的je跳轉判斷,再聯系到注冊碼的結構,應該是在此處進行連接的,但是前面沒有4個call,因此只可能是循環了。


(圖30)

依然是單步步過每一個call,分析、猜測每一個call可能的含義。如圖31所示,第一此到達該je的時候為跳轉狀態(沒有連接符-),注意到后面的jnz前的判斷代碼:

inc esi cmp esi,0x4

即:如果esi不大于4則跳轉到上面(循環)。


(圖31)

單步步過下面四個call以猜測每個call的含義。

相關段代碼如下,手機可能不方便查看代碼,本段詳細含義見圖32。

004DFE68 55 push ebp 004DFE69 8BEC mov ebp,esp 004DFE6B 83C4 F8 add esp,-0x8 004DFE6E 53 push ebx 004DFE6F 56 push esi 004DFE70 33C9 xor ecx,ecx 004DFE72 894D F8 mov dword ptr ss:[ebp-0x8],ecx 004DFE75 8BDA mov ebx,edx 004DFE77 8945 FC mov dword ptr ss:[ebp-0x4],eax 004DFE7A 8B45 FC mov eax,dword ptr ss:[ebp-0x4] 004DFE7D E8 0258F2FF call MusicStu.00405684 ; 得到請求碼 004DFE82 33C0 xor eax,eax 004DFE84 55 push ebp 004DFE85 68 E6FE4D00 push MusicStu.004DFEE6 004DFE8A 64:FF30 push dword ptr fs:[eax] 004DFE8D 64:8920 mov dword ptr fs:[eax],esp 004DFE90 8BC3 mov eax,ebx 004DFE92 E8 3D53F2FF call MusicStu.004051D4 ; 對生成的注冊碼進行判斷 004DFE97 33F6 xor esi,esi 004DFE99 833B 00 cmp dword ptr ds:[ebx],0x0 ; 是否為第2|3|4段注冊碼, 004DFE9C 74 0C je short MusicStu.004DFEAA ; 如果不是則跳轉 004DFE9E 8BC3 mov eax,ebx 004DFEA0 BA FCFE4D00 mov edx,MusicStu.004DFEFC ; 加上【-】連接符 004DFEA5 E8 F255F2FF call MusicStu.0040549C ; 連接字符 004DFEAA 55 push ebp 004DFEAB 8BC6 mov eax,esi 004DFEAD E8 4EFFFFFF call MusicStu.004DFE00 ; 關鍵算法-2,生成一組4位注冊碼 004DFEB2 59 pop ecx 004DFEB3 8D55 F8 lea edx,dword ptr ss:[ebp-0x8] 004DFEB6 E8 3DA5F2FF call MusicStu.0040A3F8 ; 把剛剛新鮮生成的一組注冊碼轉換為字符串 004DFEBB 8B55 F8 mov edx,dword ptr ss:[ebp-0x8] 004DFEBE 8BC3 mov eax,ebx 004DFEC0 E8 D755F2FF call MusicStu.0040549C ; 連接字符 004DFEC5 46 inc esi ; esi自減 004DFEC6 83FE 04 cmp esi,0x4 ; 判斷是否夠4組 004DFEC9 ^ 75 CE jnz short MusicStu.004DFE99 ; 如果不是則跳轉 004DFECB 33C0 xor eax,eax 004DFECD 5A pop edx 004DFECE 59 pop ecx 004DFECF 59 pop ecx 004DFED0 64:8910 mov dword ptr fs:[eax],edx 004DFED3 68 EDFE4D00 push MusicStu.004DFEED 004DFED8 8D45 F8 lea eax,dword ptr ss:[ebp-0x8] 004DFEDB BA 02000000 mov edx,0x2 004DFEE0 E8 1353F2FF call MusicStu.004051F8 004DFEE5 C3 retn


(圖32)

到此厘清了軟件注冊碼生成結構和流程:

判斷是否需要加上"-" 連接字符串 生成四位數(整數) 轉換為字符串 如果不滿四位,轉到1生成了四段,則退出循環

接下來就是一個找到如圖32中004DFEAD的call對應的生成算法了。

3、跟進生成四位數的call

如圖33所示,單步步入該函數,依舊是花指令,去之!去后效果如圖34所示。


(圖33)


(圖34)

如圖35,單步步過到第一個call處,寄存器eax出現請求碼,應該是傳入該call。


(圖35)

如圖36,再次步過該call下一行eax變為00000047(H),即71(D),聯系傳入的注冊碼,發現是注冊碼的位數(注:每臺計算機的請求碼位數不統一)。


(圖36)

繼續分析代碼,代碼如下。手機可以直接查看分析的截圖,如圖37、圖38所示。

004DFE00 55 push ebp 004DFE01 8BEC mov ebp,esp 004DFE03 53 push ebx 004DFE04 56 push esi 004DFE05 8BF0 mov esi,eax 004DFE07 33DB xor ebx,ebx 004DFE09 8B45 08 mov eax,dword ptr ss:[ebp+0x8] 004DFE0C 8B40 FC mov eax,dword ptr ds:[eax-0x4] 004DFE0F E8 8056F2FF call MusicStu.00405494 ; 取請求碼長度(71) 004DFE14 8BD0 mov edx,eax ; 存到edx中 004DFE16 85D2 test edx,edx 004DFE18 7E 22 jle short MusicStu.004DFE3C 004DFE1A B8 01000000 mov eax,0x1 ; eax賦值為1(第一位數) 004DFE1F 8B4D 08 mov ecx,dword ptr ss:[ebp+0x8] ; (類似于二級指針??) 004DFE22 8B49 FC mov ecx,dword ptr ds:[ecx-0x4] ; 得到請求碼地址 004DFE25 0FB64C01 FF movzx ecx,byte ptr ds:[ecx+eax-0x1]; 獲取第x位 004DFE2A 0FAFC8 imul ecx,eax ; 第x位數*x 004DFE2D 03D9 add ebx,ecx ; 求和 004DFE2F 40 inc eax ; 下一位 004DFE30 4A dec edx ; 判斷是否結束 004DFE31 ^ 75 EC jnz short MusicStu.004DFE1F ; 循環 004DFE33 EB 07 jmp short MusicStu.004DFE3C ; 跳出循環 004DFE35 D1FB sar ebx,1 ; ebx邏輯右移二進制的1位->(10->01)->十進制/2 004DFE37 79 03 jns short MusicStu.004DFE3C ; ┌貌似沒用到?還是為了軟件的兼容性? 004DFE39 83D3 00 adc ebx,0x0 ; └不知道。。。本人第一次跟算法。。沒有經驗 004DFE3C 8BC3 mov eax,ebx ; 保存ebx到eax(相當于臨時變量) 004DFE3E C1E0 04 shl eax,0x4 ; eax邏輯左移二進制的4位->16進制的1位(0001->1000)->十進制*16 004DFE41 99 cdq ; 把eax擴展為64位,變為edx:eax,edx為eax的最高位,即符號位 ; idiv有符號除法,除數是32位的,被除數要64位的,把edx擴展為符號位, ; 既不改變eax,又擴展為64位。【注】:本注解摘自 t.cn/EKZPEfn 004DFE42 F73CB5 ACDF6000 idiv dword ptr ds:[esi*4+0x60DFAC] ; 除以獲取計算參數(姑且這么稱呼)四次取到的值分別為{27,16,47,34} 004DFE49 3D 0F270000 cmp eax,0x270F ; 和9999(D)進行比較(四位數) 004DFE4E ^ 7F E5 jg short MusicStu.004DFE35 ; 大于則繼續循環 004DFE50 8BC3 mov eax,ebx ; ┌此處重新生成剛才臨時判斷的值 004DFE52 C1E0 04 shl eax,0x4 ; │感覺這里的算法有點煩啊 004DFE55 99 cdq ; │還是因為反匯編分析的原因? 004DFE56 F73CB5 ACDF6000 idiv dword ptr ds:[esi*4+0x60DFAC]; └回頭我們拿其他語言實現一下算法 004DFE5D 8BD8 mov ebx,eax ; 另存得到的一組數據 004DFE5F 8BC3 mov eax,ebx 004DFE61 5E pop esi 004DFE62 5B pop ebx 004DFE63 5D pop ebp 004DFE64 C3 retn


(圖37)


(圖38)

七、注冊機的實現

易語言實現

咳咳大佬誤笑。。

在吾愛發易語言會被笑話的 ————by某大佬(不打昵稱了怕給您拉仇恨)

完整代碼就不貼了,以防被大佬笑話。。。只上圖吧。

全工程代碼:見圖39、圖40。


(圖39)


(圖40)

實驗結果:如圖41所示,算法無誤,成功!


(圖41)

C語言實現

咳咳既然易語言會被嘲笑。。那我又不會界面咋辦,qt,mfc都不懂。。。剛開始學習。。
那就用控制臺打印一個界面吧。。

C語言精簡版

這其實算是第一版的注冊機。。。要手動輸入或右鍵粘貼請求碼,生成的注冊碼也不方便取出。

代碼的截圖及運行截圖如圖42、圖43所示:


(圖42)


(圖43)

#include <stdio.h> #include <windows.h> #include <string.h>int getSignCode ( long myCode ) {int mySignedCode[4]= {27,16,47,34},i=0,retSignCode[4];for ( ; i<4; i++ ){long a,b;a = myCode;while ( 1 ){b = a * 16 / mySignedCode[i];if ( b <= 9999 )break;a = a /2;}retSignCode[i]=b;printf ( "%ld",b);if(i!=3) printf("-");}return *retSignCode; } int main() {char code[90];long codeSum=0;int i;//printf ( "please enter your request code!\n" );//scanf ( "%s",code );strcpy ( code,"459111219222217181919201718181927282329343637-121525877-7161211-8126676" );//我的注冊碼printf ( "\n" );for ( i=0; i<strlen ( code )+1; i++ )codeSum+=code[i]* ( i+1 );printf ( "\n請求碼算出的校驗值為%ld\n\n",codeSum );getSignCode ( codeSum );return 0; }

c語言 (相對)完整版

在上一段代碼的基礎上加上了讀取剪貼板、寫入剪貼板的功能,
添加上了吾愛的免責聲明。
源代碼附在下面,需要的可以自行修改、編譯

注:自行腦補成CSDN吧23333

代碼的截圖及運行截圖如圖44、圖45所示:


(圖44)


(圖45)

#include <stdio.h> #include <windows.h> #include <string.h> #include <stdlib.h> #include<ctype.h> //需要使用到判斷字符的函數void echo52PJ() {printf ( "#########################################################\n" );printf ( "版權聲明:不得用于非法及盈利用途\n" );printf ( "請支持正版!到官網購買正品以獲取最新版和更好地服務\n" );printf ( "POWER BY 濤之雨\n" );printf ( "吾愛破解獨發!\n" );printf ( "未經被人允許禁止轉載!\n" );printf ( "#########################################################\n" );printf ( "\n\n" );printf ( "免責聲明:\n" );printf ( "吾愛破解所發布的一切破解補丁、注冊機和注冊信息及軟件的解密分析文章僅限用于學習和研究目的;不得將上述內容用于商業或者非法用途,否則,一切后果請用戶自負。本站信息來自網絡,版權爭議與本站無關。您必須在下載后的24個小時之內,從您的電腦中徹底刪除上述內容。如果您喜歡該程序,請支持正版軟件,購買注冊,得到更好的正版服務。如有侵權請郵件與我們聯系處理。\n\n\n" );return; } int * getSignCode ( long myCode ) {int mySignedCode[4]= {27,16,47,34},i=0;static int retSignCode[4];for ( ; i<4; i++ ){long a,b;a = myCode;while ( 1 ){b = a * 16 / mySignedCode[i];if ( b <= 9999 )break;a = a /2;}retSignCode[i]=b;//printf ( "%ld", b );//if(i!=3) printf("-");}return retSignCode; }BOOL setClipCode ( char* setStr ) {HGLOBAL hclip;//剪切板句柄if ( OpenClipboard ( NULL ) ==0 ){printf ( "打開剪切板失敗!\n" );return FALSE;}if ( !EmptyClipboard( ) ){printf ( "清空剪切板失敗!\n" );CloseClipboard();return FALSE;}TCHAR *strToSet=setStr;hclip = GlobalAlloc ( GMEM_MOVEABLE, ( ( strlen ( strToSet )+1 ) *sizeof ( TCHAR ) ) );if ( !hclip ){printf ( "內存分配失敗!\n" );CloseClipboard();return FALSE;}LPSTR lpstr= ( LPSTR ) GlobalLock ( hclip ); //加鎖,返回一個VOID類型的指針memcpy ( lpstr,strToSet, ( ( strlen ( strToSet ) ) *sizeof ( TCHAR ) ) );//lpstr[strlen ( strToSet )]= ( TCHAR ) 0; //字符串結尾的'\0'GlobalUnlock ( hclip ); //解鎖SetClipboardData ( CF_TEXT,lpstr );CloseClipboard();printf("注冊碼已成功復制到剪貼板");return TRUE; } char * getClipCode() {//局部變量static char *pbuf=NULL;HANDLE hclip;//剪切板句柄//打開剪切板,獲取里面的數據if ( OpenClipboard ( NULL ) ==0 ){printf ( "打開剪切板失敗!\n" );return "ERR";}//剪切板當中的數據是不是文本類型的if ( !IsClipboardFormatAvailable ( CF_TEXT ) ){printf ( "剪切板當中的數據類型非文本!\n自動跳過。" );CloseClipboard();//關閉剪切板,不然其他程序無法正常0使用剪切板return "ERR";}//獲取剪切板里面的數據hclip=GetClipboardData ( CF_TEXT );pbuf= ( char * ) GlobalLock ( hclip ); //加鎖,返回一個VOID類型的指針GlobalUnlock ( hclip ); //解鎖//清除前導的非字母和數字字符while ( *pbuf&&!isalnum ( *pbuf ) )++pbuf;//測試剪切板是否能使用printf ( " 檢測到剪貼板內的文本如下:\n =======================================================================\n %s\n =======================================================================\n 是否使用該數據作為請求碼?\n\nY/N\n",pbuf );CloseClipboard();//關閉剪切板,不然其他程序無法正常0使用剪切板Sleep(1000);char Kword=getchar();if ( Kword!='y'&&Kword !='Y' ) return "ERR";return pbuf; } int main ( void ) {system ( "color 1f" );system ( "mode con:cols=80 lines=20" );system ( "title 請支持正版!到官網購買正品以獲取最新版和更好地服務 POWER BY 吾愛破解 濤之雨" );echo52PJ();printf ( "按下回車鍵開始,并且表示接受以上條款!!" );getchar();system ( "cls" );long codeSum=0;int i;char code[90];strcpy ( code,getClipCode() );if ( !strcmp ( code,"ERR" ) ){printf ( " 請手動輸入請求碼,形如\n =======================================================================\n 459111219222217181919201718181927282329343637-121525877-7161211-8126676\n =======================================================================\n 按回車繼續\n" );scanf ( "%s",code );}system ( "cls" );printf ( " 獲取到的請求碼如下:\n =======================================================================\n %s\n =======================================================================\n",code );//strcpy ( code,"459111219222217181919201718181927282329343637-121525877-7161211-8126676" );printf ( "\n" );for ( i=0; i<strlen ( code )+1; i++ ){codeSum+=code[i] * ( i+1 );}printf ( "\n請求碼算出的校驗值為%ld\n",codeSum );int *regCode=getSignCode ( codeSum );printf ( "\n\n計算出的注冊碼為:\n\n" );for ( i=0; i<4; i++ ){sprintf ( code+i*5,"%d", regCode[i] );if ( i!=3 ) strcat ( code-1,"-");}printf ( "%s", code );printf ( "是否將該注冊碼復制到剪貼板?\n\nY/N\n" );char Kwd;scanf("%c",&Kwd);Kwd=getchar();//scanf("%c",&Kword);if ( Kwd=='y'||Kwd=='Y' ){setClipCode ( code );}printf ( "\n\n任意鍵鍵退出\n\n POWER By 濤之雨" );system ( "pause>nul" );return 0; }

VC的QT界面版

請移步KaQqi大佬的

【原創破解】music studio算法注冊機
https://www.52pojie.cn/thread-953570-1-1.html
(出處:吾愛破解論壇)

bat(cmd|dos)版

話說本來沒有準備寫這個的。。。
步過看起來,這個算法不是很復雜,于是順手就寫了一下。。。
bat沒有獲取ASCII的方法,所以很蛋疼的寫了個call,不是很聰明的辦法。
使用起來其實比上面兩個都簡單:
復制該段代碼,新建一個文本,粘貼代碼,保存,后綴改為.bat|.cmd雙擊即可使用。。。
界面就沒做,懶得。。。

注:因為論壇的網頁編碼是UTF-8,因此直接復制到文本也是UTF-8的。
而bat文件需要ACSII格式,因此直接復制保存會亂碼,如圖46所示,
因此需要轉碼,最簡單的辦法就是如圖47所示,另存為的時候選擇全部文件-編碼為ACSI-手動輸入后綴".bat|.cmd"-確定。


(圖46)


(圖47)

@echo off setlocal enableextensions enabledelayedexpansion title 請支持正版!到官網購買正品以獲取最新版和更好地服務 POWER BY 吾愛破解 濤之雨 color 1f mode con:cols=80 lines=20 cls set z=0 set /p w=請輸入請求碼,以回車鍵結束: echo 加載中。。。。set q=1 :nextiif not "%w%"=="" (set w_%q%=%w:~0,1%call :v !w_%q%!set x=!errorlevel!set "x=!x!*%q%"set /a "z=!x!+!z!"set "w=%w:~1%"set /a q+=1goto :nexti) echo 請稍后。。 set str=- for /l %%i in (1,1,4) do (call :s !z! %%iset x=!errorlevel!set m=!m!!x!if %%i neq 4 set m=!m!%str%) echo 請求碼算出的校驗值為:!m! ping 127.0.0.1 > nul echo 任意鍵退出 pause>nul exist :vif %1==9 exit /b 57if %1==8 exit /b 56if %1==7 exit /b 55if %1==6 exit /b 54if %1==5 exit /b 53if %1==4 exit /b 52if %1==3 exit /b 51if %1==2 exit /b 50if %1==1 exit /b 49if %1==0 exit /b 48if %1==- exit /b 45 exit /b 0 :sif %2==1 set l= 27if %2==2 set l= 16if %2==3 set l= 47if %2==4 set l= 34set /a tempcode = %1set b = 0:whilestartset /a b = !tempcode! * 16 / lif !b! leq 9999 exit /b !b!set /a tempcode = !tempcode! /2goto whilestart

效果圖見圖48。


(圖48)

#結束語

小計:

本文較完整的記錄了本人由爆破,到追碼,再到編寫注冊機的全過程
全過程,是因為本文寫的十分詳細,就是為了想和那些想寫注冊機,又沒有多少基礎的小白們一起學習,共同進步,
較完整,是因為其實寫出來的是想做為教程,而不是完整的再現我是如何一步步走錯而又從頭開始分析的,
我需要告訴大家的是正確的(或者是比較正確)過程,而不是和大家分享我是如何走錯的,
這個軟件我破解的時候大概用了三四種方法找到這個關鍵的call,
但是其他的或多或少都會有一些繁瑣或是錯誤之處,最后,在寫教程的時候,我才發現之前走錯的路是多么奇葩,
經過這次教程,我本身也學到很多,為什么前面幾大塊沒有什么內容,我依然要打出來?不是為了字數,而是思路。。。

之前破解的時候,因為搜索了過多的(還是打錯了)關鍵詞,沒有搜索到關鍵的字符串,即六-(一)-2的步驟,
所以我是通過了彈窗回溯的方法、還有按鈕事件的方法

注:有興趣的朋友也可以自己試驗一下,就會發現這么走是多么的困難。
另外,本軟件是MFC寫的,但是貌似是把MFC內置了?
萬能斷點是能用的,不過要在程序領空才能找到,一開始走了很多的彎路,正文沒有體現出來,就在最后稍微吐個槽吧23333~

最后,祝大家都能在吾愛破解學有所成,
伸手、模仿的進步是微弱甚至沒有的,需要自行鉆研,不會就去查資料。
有疑惑就去提問
(最后再次感謝KaQqi 大佬對本文的支持)

全文終

全文終!撒花~~~~

總結

以上是生活随笔為你收集整理的小白第一次注册机编写,c/bat/易某言(不好意思说2333)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。