MP3資訊批量處理器 2.1.6
軟體名稱: MP3資訊批量處理器
最新版本: 2.1.6
適用平臺: Win9x, WinME, WinNT, Win2000, WinXP
作者主頁: http://tfct.myrice.com
主要功能:
只要指定好資料夾,她便會將該資料夾中所有MP3檔案的Tag資料彙總於一個表格中,包括歌手名稱、專輯名稱、歌名、備註等等,便於你針對單一檔案或是檔案群做Tag的瀏覽與修改.
Mp3資訊批量處理器支援高速mp3 tag的資訊轉換,可以瞬間就將您的mp3檔案打上自己的標誌。
【軟體限制】:30次試用
【難 度】: so簡單,適合初學者練手
【作者宣告】:初學Crack,只是感興趣,沒有其它目的。失誤之處敬請諸位大俠賜教!
【破解工具】:olldydbg、IDA Pro、PeId 0.9、Aspack Die1.41
―――――――――――――――――――――――――――――――――
【過 程】:
用peid探測得殼為aspack2.12,用aspack die1.41很容易脫去,delphi程式。
首先注意到未註冊標題欄有'-未註冊版'字樣,於是
IDA中查詢,找到其引用之處:
CODE:0049E2BF mov ebx, eax
CODE:0049E2C1 lea edx, [ebp-4]
CODE:0049E2C4 mov eax, ds:dword_4A2CA0
CODE:0049E2C9 call @TControl@GetText$qqrv ; TControl::GetText(void)
CODE:0049E2CE lea eax, [ebp-4]
CODE:0049E2D1 mov edx, offset _str__________.Text
CODE:0049E2D6 call @System@@LStrCat$qqrv ; System::__linkproc__ LStrCat(void)
CODE:0049E2DB mov edx, [ebp-4]
CODE:0049E2DE mov eax, ds:dword_4A2CA0
CODE:0049E2E3 call @Controls@TControl@SetText$qqrx17System@AnsiString ; Controls::TControl::SetText(System::AnsiString)
CODE:0049E2E8
向上看尋找可疑跳轉
CODE:0049E271 call sub_49EA20 ; 可疑,進去看看
CODE:0049E276 test al, al
CODE:0049E278 jz short loc_49E2A3
sub_49EA20:
0049EA20 > $ 55 PUSH EBP
0049EA21 . 8BEC MOV EBP, ESP
0049EA23 . 83C4 CC ADD ESP, -34
0049EA26 . 53 PUSH EBX
0049EA27 . 56 PUSH ESI
0049EA28 . 33D2 XOR EDX, EDX
0049EA2A . 8955 CC MOV DWORD PTR SS:[EBP-34], EDX
0049EA2D . 8955 F0 MOV DWORD PTR SS:[EBP-10], EDX
0049EA30 . 8955 EC MOV DWORD PTR SS:[EBP-14], EDX
0049EA33 . 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
0049EA36 . 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
0049EA39 . E8 6E60F6FF CALL <unpacked.System::__linkproc__ LStrAddRef(void)>
0049EA3E . 33C0 XOR EAX, EAX
0049EA40 . 55 PUSH EBP
0049EA41 . 68 E1EB4900 PUSH <unpacked.loc_49EBE1>
0049EA46 . 64:FF30 PUSH DWORD PTR FS:[EAX]
0049EA49 . 64:8920 MOV DWORD PTR FS:[EAX], ESP
0049EA4C . C645 FB 00 MOV BYTE PTR SS:[EBP-5], 0
0049EA50 . 33C0 XOR EAX, EAX
0049EA52 . 55 PUSH EBP
0049EA53 . 68 AFEB4900 PUSH <unpacked.loc_49EBAF>
0049EA58 . 64:FF30 PUSH DWORD PTR FS:[EAX]
0049EA5B . 64:8920 MOV DWORD PTR FS:[EAX], ESP
0049EA5E . 8B4D FC MOV ECX, DWORD PTR SS:[EBP-4]
0049EA61 . B2 01 MOV DL, 1
0049EA63 . A1 68A14300 MOV EAX, DWORD PTR DS:[<dword_43A168>]
0049EA68 . E8 ABB7F9FF CALL <unpacked.unknown_libname_239>
0049EA6D . 8945 F4 MOV DWORD PTR SS:[EBP-C], EAX
0049EA70 . B2 01 MOV DL, 1
0049EA72 . A1 B4B04300 MOV EAX, DWORD PTR DS:[<dword_43B0B4>]
0049EA77 . E8 38C7F9FF CALL <unpacked.Registry::TRegistry::TRegistry(void)>
0049EA7C . 8945 E8 MOV DWORD PTR SS:[EBP-18], EAX
0049EA7F . BA 01000080 MOV EDX, 80000001
0049EA84 . 8B45 E8 MOV EAX, DWORD PTR SS:[EBP-18]
0049EA87 . E8 C8C7F9FF CALL <unpacked.Registry::TRegistry::SetRootKey(uint)>
0049EA8C . B1 01 MOV CL, 1
0049EA8E . BA FCEB4900 MOV EDX, unpacked.0049EBFC ; ASCII "SOFTWARERunTimes"
0049EA93 . 8B45 E8 MOV EAX, DWORD PTR SS:[EBP-18]
0049EA96 . E8 1DC8F9FF CALL <unpacked.Registry::TRegistry::OpenKey(System::AnsiStri>
0049EA9B . 6A 00 PUSH 0
0049EA9D . 8D45 F0 LEA EAX, DWORD PTR SS:[EBP-10]
0049EAA0 . 50 PUSH EAX
0049EAA1 . B9 18EC4900 MOV ECX, unpacked.0049EC18 ; ASCII "Name"
0049EAA6 . BA 28EC4900 MOV EDX, unpacked.0049EC28 ; ASCII "Register"
0049EAAB . 8B45 F4 MOV EAX, DWORD PTR SS:[EBP-C]
0049EAAE . 8B18 MOV EBX, DWORD PTR DS:[EAX]
0049EAB0 . FF13 CALL DWORD PTR DS:[EBX]
0049EAB2 . C745 D8 00000>MOV DWORD PTR SS:[EBP-28], 0
0049EAB9 . C745 DC 00000>MOV DWORD PTR SS:[EBP-24], 0
0049EAC0 . 837D F0 00 CMP DWORD PTR SS:[EBP-10], 0 ; 從ini檔案讀出的使用者名稱,不過最後註冊碼與使用者名稱無關
0049EAC4 . 0F84 C7000000 JE <unpacked.loc_49EB91>
0049EACA . 6A 00 PUSH 0
0049EACC . 8D45 EC LEA EAX, DWORD PTR SS:[EBP-14]
0049EACF . 50 PUSH EAX
0049EAD0 . B9 3CEC4900 MOV ECX, unpacked.0049EC3C ; ASCII "RegNum"
0049EAD5 . BA 28EC4900 MOV EDX, unpacked.0049EC28 ; ASCII "Register"
0049EADA . 8B45 F4 MOV EAX, DWORD PTR SS:[EBP-C]
0049EADD . 8B18 MOV EBX, DWORD PTR DS:[EAX]
0049EADF . FF13 CALL DWORD PTR DS:[EBX]
0049EAE1 . 837D EC 00 CMP DWORD PTR SS:[EBP-14], 0 ; 從ini檔案讀出的註冊碼
0049EAE5 . 0F84 A6000000 JE <unpacked.loc_49EB91>
0049EAEB . 8D4D F0 LEA ECX, DWORD PTR SS:[EBP-10]
0049EAEE . BA 4CEC4900 MOV EDX, unpacked.0049EC4C ; ASCII "Serial"
0049EAF3 . 8B45 E8 MOV EAX, DWORD PTR SS:[EBP-18]
0049EAF6 . E8 85C9F9FF CALL <unpacked.TRegistry::ReadString(AnsiString)>
0049EAFB . 8B45 F0 MOV EAX, DWORD PTR SS:[EBP-10] ; 從登錄檔中檔案讀出的使用者序列號
0049EAFE . E8 B95DF6FF CALL <unpacked.System::_16823>
0049EB03 . 8BD8 MOV EBX, EAX
0049EB05 . 85DB TEST EBX, EBX
0049EB07 . 7E 44 JLE SHORT <unpacked.loc_49EB4D>
0049EB09 . BE 01000000 MOV ESI, 1
0049EB0E > > 8D45 CC LEA EAX, DWORD PTR SS:[EBP-34]
0049EB11 . 50 PUSH EAX
0049EB12 . B9 01000000 MOV ECX, 1
0049EB17 . 8BD6 MOV EDX, ESI
0049EB19 . 8B45 F0 MOV EAX, DWORD PTR SS:[EBP-10]
0049EB1C . E8 1B7CF9FF CALL <unpacked.sub_43673C> ; * Reference to: StrUtils.MidStr(AnsiString;Integer;Integer):AnsiString;overload;
0049EB21 . 8B45 CC MOV EAX, DWORD PTR SS:[EBP-34] ; 讀取使用者序列號一位元組
0049EB24 . 8D55 E4 LEA EDX, DWORD PTR SS:[EBP-1C]
0049EB27 . E8 00A2F6FF CALL <unpacked.sub_408D2C> ; * Reference to: SysUtils.TryStrToInt(AnsiString;Integer;Integer):Boolean;
0049EB2C . 84C0 TEST AL, AL
0049EB2E . 74 19 JE SHORT <unpacked.loc_49EB49>
0049EB30 . 6A 00 PUSH 0
0049EB32 . 6A 05 PUSH 5
0049EB34 . 8B45 E4 MOV EAX, DWORD PTR SS:[EBP-1C]
0049EB37 . 99 CDQ
0049EB38 . 0345 D8 ADD EAX, DWORD PTR SS:[EBP-28]
0049EB3B . 1355 DC ADC EDX, DWORD PTR SS:[EBP-24]
0049EB3E . E8 3569F6FF CALL <unpacked.sub_405478> ; * Reference to: System.@_llmul; or System.@_llmulo;
0049EB43 . 8945 D8 MOV DWORD PTR SS:[EBP-28], EAX
0049EB46 . 8955 DC MOV DWORD PTR SS:[EBP-24], EDX
0049EB49 > > 46 INC ESI
0049EB4A . 4B DEC EBX
0049EB4B .^ 75 C1 JNZ SHORT <unpacked.loc_49EB0E>
0049EB4D > > 8B45 EC MOV EAX, DWORD PTR SS:[EBP-14]
0049EB50 . E8 83A1F6FF CALL <unpacked.Sysutils::StrToInt(System::AnsiString)>
0049EB55 . 85C0 TEST EAX, EAX
0049EB57 . 79 03 JNS SHORT <unpacked.loc_49EB5C>
0049EB59 . 83C0 07 ADD EAX, 7
0049EB5C > > C1F8 03 SAR EAX, 3 ; 使用者輸入值轉為int後除以8
0049EB5F . 99 CDQ ; 擴充套件為64位整數
0049EB60 . 8945 D0 MOV DWORD PTR SS:[EBP-30], EAX ; 取低32位
0049EB63 . 8955 D4 MOV DWORD PTR SS:[EBP-2C], EDX ; 取高32位
0049EB66 . 8B45 D8 MOV EAX, DWORD PTR SS:[EBP-28]
0049EB69 . 8B55 DC MOV EDX, DWORD PTR SS:[EBP-24]
0049EB6C . 3B55 D4 CMP EDX, DWORD PTR SS:[EBP-2C] ; 比較高32位
0049EB6F . 75 03 JNZ SHORT <unpacked.loc_49EB74>
0049EB71 . 3B45 D0 CMP EAX, DWORD PTR SS:[EBP-30] ; 比較低32位
0049EB74 > > 74 07 JE SHORT <unpacked.loc_49EB7D>
0049EB76 . E8 E554F6FF CALL <unpacked.System::__linkproc__ TryFinallyExit(void)>
0049EB7B . EB 39 JMP SHORT <unpacked.loc_49EBB6>
...
關於試用期:在檔案中查詢"date"項,容易找到這裡
0049EEE3 |. B1 01 MOV CL, 1
0049EEE5 |. BA E4EF4900 MOV EDX, unpacked.0049EFE4 ; ASCII "SOFTWARERunTimes"
0049EEEA |. 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
0049EEED |. E8 C6C3F9FF CALL <unpacked.Registry::TRegistry::OpenKey(System::AnsiStri>
0049EEF2 |. 8D4D F4 LEA ECX, DWORD PTR SS:[EBP-C]
0049EEF5 |. BA 00F04900 MOV EDX, unpacked.0049F000 ; ASCII "Date"
0049EEFA |. 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
0049EEFD |. E8 7EC5F9FF CALL <unpacked.TRegistry::ReadString(AnsiString)>
0049EF02 |. 33C0 XOR EAX, EAX
0049EF04 |. 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
0049EF07 |. 8D55 F0 LEA EDX, DWORD PTR SS:[EBP-10]
0049EF0A |. 8B45 F4 MOV EAX, DWORD PTR SS:[EBP-C]
0049EF0D |. E8 AAFAFFFF CALL <unpacked.unknown_libname_577>
0049EF12 |. 8B45 F0 MOV EAX, DWORD PTR SS:[EBP-10]
0049EF15 |. E8 BE9DF6FF CALL <unpacked.Sysutils::StrToInt(System::AnsiString)>
0049EF1A |. 83E8 1E SUB EAX, 1E ; 是否到30次了?
0049EF1D |. 85C0 TEST EAX, EAX
0049EF1F |. 7E 0E JLE SHORT <unpacked.loc_49EF2F>
0049EF21 |. C745 FC 01000>MOV DWORD PTR SS:[EBP-4], 1
0049EF28 |. 33C0 XOR EAX, EAX
0049EF2A |. A3 A82C4A00 MOV DWORD PTR DS:[4A2CA8], EAX
0049EF2F >|> 8B45 F0 MOV EAX, DWORD PTR SS:[EBP-10]
0049EF32 |. E8 A19DF6FF CALL <unpacked.Sysutils::StrToInt(System::AnsiString)>
0049EF37 |. 83E8 1E SUB EAX, 1E
0049EF3A |. 79 57 JNS SHORT <unpacked.loc_49EF93>
0049EF3C |. 8B45 F0 MOV EAX, DWORD PTR SS:[EBP-10]
0049EF3F |. E8 949DF6FF CALL <unpacked.Sysutils::StrToInt(System::AnsiString)>
0049EF44 |. 40 INC EAX ; 若未到則使用次數加1
0049EF45 |. 8D55 EC LEA EDX, DWORD PTR SS:[EBP-14]
0049EF48 |. E8 4F9CF6FF CALL <unpacked.sub_408B9C>
0049EF4D |. 8B55 EC MOV EDX, DWORD PTR SS:[EBP-14]
0049EF50 |. 8D45 F0 LEA EAX, DWORD PTR SS:[EBP-10]
0049EF53 |. E8 3C57F6FF CALL <unpacked.System::__linkproc__ LStrLAsg(void)>
0049EF58 |. 8B45 F0 MOV EAX, DWORD PTR SS:[EBP-10]
0049EF5B |. E8 789DF6FF CALL <unpacked.Sysutils::StrToInt(System::AnsiString)>
0049EF60 |. BA 1E000000 MOV EDX, 1E
0049EF65 |. 2BD0 SUB EDX, EAX
0049EF67 |. 8915 A82C4A00 MOV DWORD PTR DS:[4A2CA8], EDX
0049EF6D |. 8D55 E8 LEA EDX, DWORD PTR SS:[EBP-18]
0049EF70 |. 8B45 F0 MOV EAX, DWORD PTR SS:[EBP-10]
0049EF73 |. E8 C8FEFFFF CALL <unpacked.unknown_libname_578>
0049EF78 |. 8B55 E8 MOV EDX, DWORD PTR SS:[EBP-18]
0049EF7B |. 8D45 F0 LEA EAX, DWORD PTR SS:[EBP-10]
0049EF7E |. E8 1157F6FF CALL <unpacked.System::__linkproc__ LStrLAsg(void)>
0049EF83 |. 8B4D F0 MOV ECX, DWORD PTR SS:[EBP-10]
0049EF86 |. BA 00F04900 MOV EDX, unpacked.0049F000 ; ASCII "Date"
0049EF8B |. 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-8]
0049EF8E |. E8 C1C4F9FF CALL <unpacked.sub_43B454> ; 重新寫登錄檔"date"項
0049EF93 >|> 33C0 XOR EAX, EAX
...
來看看使用次數編碼函式
<unpacked.unknown_libname_578>
0049EE40 >/$ 55 PUSH EBP
0049EE41 |. 8BEC MOV EBP, ESP
0049EE43 |. 51 PUSH ECX
0049EE44 |. 53 PUSH EBX
0049EE45 |. 56 PUSH ESI
0049EE46 |. 8BF2 MOV ESI, EDX
0049EE48 |. 8945 FC MOV DWORD PTR SS:[EBP-4], EAX
0049EE4B |. 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
0049EE4E |. E8 595CF6FF CALL <unpacked.System::__linkproc__ LStrAddRef(void)>
0049EE53 |. 33C0 XOR EAX, EAX
0049EE55 |. 55 PUSH EBP
0049EE56 |. 68 91EE4900 PUSH <unpacked.loc_49EE91>
0049EE5B |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0049EE5E |. 64:8920 MOV DWORD PTR FS:[EAX], ESP
0049EE61 |. 8B45 FC MOV EAX, DWORD PTR SS:[EBP-4]
0049EE64 |. E8 6F9EF6FF CALL <unpacked.Sysutils::StrToInt(System::AnsiString)> ; 已使用次數
0049EE69 |. 69D8 7CB20000 IMUL EBX, EAX, 0B27C ; 經簡單演算法運算
0049EE6F |. 83F3 08 XOR EBX, 8 ;
0049EE72 |. 8BD6 MOV EDX, ESI
0049EE74 |. 8BC3 MOV EAX, EBX
0049EE76 |. E8 219DF6FF CALL <unpacked.sub_408B9C> ; 轉為字串
0049EE7B |. 33C0 XOR EAX, EAX
0049EE7D |. 5A POP EDX
0049EE7E |. 59 POP ECX
0049EE7F |. 59 POP ECX
0049EE80 |. 64:8910 MOV DWORD PTR FS:[EAX], EDX
0049EE83 |. 68 98EE4900 PUSH <unpacked.loc_49EE98>
0049EE88 >|> 8D45 FC LEA EAX, DWORD PTR SS:[EBP-4]
0049EE8B |. E8 6C57F6FF CALL <unpacked.System::__linkproc__ LStrClr(System::AnsiStri>
0049EE90 . C3 RETN
註冊演算法十分簡單,第一次執行先呼叫ole32.dll 的CoCreateGuid來生成使用者碼,儲存在登錄檔HKCUSOFTWARERunTimes下Serial項,
註冊碼就是使用者Serial中所有數字項從左向右,RegNum = 5*(上一次的RegNum + 此次數字值)迭代而得。
使用次數經簡單編碼後也放在HKCUSOFTWARERunTimes下的date項中。
使用者名稱和註冊碼儲存在同一目錄下的MP3TAG.ini檔案中,類似
[Register]
Name=sky
RegNum=17617160
初學delphi,用delphi寫個序號產生器練練:
procedure TForm1.Button1Click(Sender: TObject);
var
strSerial:string;
I:Integer;
J:Integer;
intRegNum : Int64;
strRegNum:String;
begin
J:= 0;
intRegNum := 0;
strSerial := Edit1.text;
for I:=1 to length(strSerial) do
begin
if (ord(strSerial[I])>=48)and(ord(strSerial[I])<=57) then
begin
J := ord(strSerial[I])-48;
intRegNum := 5*(intRegNum + J);
end;
end;
intRegNum := intRegNum * 8 ;
strRegNum := intTostr(intRegNum);
label3.Caption := strRegNum;
end;
end.
相關文章
- MySQL使用Batch批量處理2014-04-29MySqlBAT
- node js 批量處理pdf,提取關鍵資訊,並匯出excel2018-07-05JSExcel
- Python批量處理圖片2019-07-10Python
- SpringBatch批量處理策略2019-01-14SpringBAT
- 批量處理檔名稱(上)2020-11-13
- mac 命令列批量處理照片2016-11-13Mac命令列
- Python 批量處理檔案2017-07-13Python
- 海量資料處理_批量插入2011-05-31
- 海量資料處理_批量更新2011-05-30
- P處理 批量更改檔名2012-07-05
- sap 批量處理異常tRFC2009-05-04
- React setState合併和批量處理2020-03-14React
- 正規表示式處理批量插入2018-06-07
- 如何批量處理word中的表格2014-07-11
- 批次改MP3資訊2024-04-06
- JavaScript 批量註冊事件處理函式2018-11-13JavaScript事件函式
- PDF Checkpoint for mac(pdf批量處理軟體)2021-10-17Mac
- Entity Framework中 批量提交 事務處理2013-05-31Framework
- 通過佇列實現批量處理2016-06-14佇列
- Linux下使用Ansible處理批量操作2021-07-14Linux
- for迴圈批量註冊事件處理函式2018-07-16事件函式
- JDBC連線批量處理資料入庫2020-11-30JDBC
- js如何批量註冊事件處理函式2017-03-14JS事件函式
- 批量處理物理備庫出現archive gap2011-10-13Hive
- 大批量資料處理操作小記2013-03-19
- [TEAP早期試讀]真正的好處:客戶端批量處理2012-03-14客戶端
- 異常錯誤資訊處理2019-12-16
- python非同步IO與批量請求處理2018-01-17Python非同步
- javascript關於批量處理物件導向程式碼2017-02-11JavaScript物件
- MP3編碼器:MP3 Encoder for Mac2024-01-15Mac
- 資訊抽取(UIE)技術:讓保險理賠資訊處理流程便捷高效2024-08-14UI
- CPU(中央處理器)和GPU(影像處理器)的區別2024-07-24GPU
- 利用實體bean物件批量資料傳輸處理2021-05-20Bean物件
- 批量插入資料時主鍵衝突的處理2017-12-31
- CSS 前處理器2023-02-04CSS
- 語言處理器2018-01-25
- 處理器快取2006-01-18快取
- cortex-A處理器2024-03-16