重啟驗證軟體破解思路二――無敵檔案批處理大師 V1.0.1
重啟驗證軟體破解思路二
破解作者
yzez[DFCG][BCG][FCG]
破解物件
無敵檔案批處理大師 V1.0.1
軟體介紹
軟體大小: 688 KB
軟體語言: 簡體中文
軟體類別: 國產軟體 / 共享版 / 檔案更名
應用平臺: Win9x/NT/2000/XP
介面預覽: 無
加入時間: 2003-11-14 09:23:39
下載次數: 24
計算機使用者必備!口號:我們處理一切關於“檔案批次處理”。功能:檔案和資料夾各種方式的更名、
批次檔案分割、檔案內容替換等功能,並且在以後陸續增加圖片大小轉換、影像格式轉換、音樂檔案壓縮
比更改等更多實用功能,該軟體的設計以人為本,處處為使用者著想,沒有華麗的外表,卻有眾多強大且實
用的功能,既能滿足一般使用者的需求,也能照顧到高階的使用者。
下載地址
http://www.skycn.com/soft/14515.html
破解工具
pe-scan、OllyDbg 1.09、C32Asm(PLL621的作品,很感謝)
破解目的
只為交流技術,請不要用於商業目的,多支援國產軟體。
破解過程
說明:這個軟體注不註冊,影響並不太大,沒有使用時期限制,是否有功能限制我沒有去看,寫這篇
文章只為說明重啟驗證破解的一種思路,這個軟體重啟後,還是會彈出註冊介面,前面我寫過兩篇關於這
種情況重啟驗證軟體的破解思路,這篇文章將從另一角度來說明它的破解。這種破解方法是充分利用軟體
的有用資訊去找關鍵點,下面看過程。
1、用pe-scan查殼,是ASPack 2.11的殼,用pe-scan輕鬆脫殼,脫殼後的程式正常執行。用C32Asm反彙編,
查詢有用資訊,用W32DASM反彙編沒有反應,我倒!不知怎麼一回事,找有用資訊:已註冊。
::004E94D2:: PUSH EBP
::004E94D3:: PUSH 4E95ED
::004E94DB:: MOV FS:[EAX],ESP
::004E94DE:: CALL 004C8C98 ************這是關鍵CALL嗎?在此設斷吧!
::004E94E3:: MOV EBX,EAX
::004E94E5:: MOV [ESI+428],BL
::004E94EB:: TEST BL,BL****************測試BL的值是否為0,為0就跳,跳到何處?
::004E94ED:: JE SHORT 004E9522*********為0就跳,跳到004E9522,跳過了下面的已註冊!不跳會怎樣?
::004E94EF:: LEA EDX,[EBP-C]
::004E94F2:: MOV EAX,[4EEDC4]
::004E94F7:: MOV EAX,[EAX]
::004E94F9:: CALL 004673C4
::004E94FE:: PUSH DWORD PTR [EBP-C]
::004E9501:: PUSH 4E9604 ->: V1.01
::004E9506:: PUSH 4E9614 ->: 已註冊*****看,我們找到這裡!往上找一找,有什麼!
::004E950B:: LEA EAX,[EBP-8]
2、執行脫殼後的程式,輸入註冊碼:1234567890,點確定程式要求重啟驗證,我們就退出程式,然後用
OllyDbg 1.09載入脫殼後的程式,在004E94DE處設定好斷點,按F9程式執行,一會兒就被斷在這個地方:
004E94D8 PUSH DWORD PTR FS:[EAX]
004E94DB MOV DWORD PTR FS:[EAX], ESP
004E94DE CALL unpack.004C8C98***********我們在此設斷,按F9執行程式,被斷,關鍵CALL按F7跟進!
004E94E3 MOV EBX, EAX
004E94E5 MOV BYTE PTR DS:[ESI+428], BL
004E94EB TEST BL, BL********************註冊成功,BL的值為1,反之則為0
004E94ED JE SHORT unpack.004E9522*****為0就跳,跳就失敗!
004E94EF LEA EDX, [LOCAL.3]
004E94F2 MOV EAX, DWORD PTR DS:[4EEDC4]
004E94F7 MOV EAX, DWORD PTR DS:[EAX]
004E94F9 CALL unpack.004673C4
004E94FE PUSH [LOCAL.3]
004E9501 PUSH unpack.004E9604
004E9506 PUSH unpack.004E9614
004E950B LEA EAX, [LOCAL.2]
004E950E MOV EDX, 3
======================================================================================
關鍵CALL的程式碼:
004C8C98 MOV EAX, DWORD PTR DS:[4EEF8C]
004C8C9D MOV EAX, DWORD PTR DS:[EAX]
004C8C9F MOV EAX, DWORD PTR DS:[EAX+8]
004C8CA2 CALL unpack.004C8AE8***************演算法CALL,按F7跟進!程式碼看下面!
004C8CA7 RETN**********************************返回指令!
========================================================================================
演算法CALL的程式碼:
004C8AE8 PUSH EBP********跟進演算法CALL我們停在這裡!
004C8AE9 MOV EBP, ESP
004C8AEB XOR ECX, ECX
004C8AED PUSH ECX
*********************省略!************************************
004C8B1D MOV EAX, EBX
004C8B1F CALL unpack.0040E9A8
004C8B24 MOV EAX, [LOCAL.1]***********試驗碼移入EAX
004C8B27 CALL unpack.00404D1C
004C8B2C CMP EAX, 10******************EAX的值是0A(十進位制值是10)試驗碼的位數,比較0A和10(十進位制值是16)
**************也就是說試驗碼必須是16位
004C8B2F JE SHORT unpack.004C8B38****相等就跳到下面進一步處理!
004C8B31 XOR EBX, EBX*****************不相等往下,EBX清0,BL的值就為0,失敗!
004C8B33 JMP unpack.004C8C3C**********無條件跳到:004C8C3C處,所以重新來過,輸入試驗碼:1234567887654321
004C8B38 MOV EAX, [LOCAL.1]***********相等跳到此,試驗碼:1234567887654321移入EAX
004C8B3B CALL unpack.004A3CEC**********此CALL檢驗輸入的試驗碼是否是0--9之間的數字,是就置AL的值為1,反之為0
004C8B40 TEST AL, AL*******************測試AL的值是否為0
004C8B42 JNZ SHORT unpack.004C8B4B****不為0就跳,為0就不跳,往下,失敗!
004C8B44 XOR EBX, EBX*****************不相等往下,EBX清0,BL的值就為0,失敗!
004C8B46 JMP unpack.004C8C3C**********無條件跳到:004C8C3C處
004C8B4B LEA ECX, [LOCAL.3]************跳到這裡!
004C8B4E MOV EDX, 1********************賦EDX常數1
004C8B53 MOV EAX, [LOCAL.1]************試驗碼入EAX
004C8B56 CALL unpack.004A3EBC
004C8B5B MOV EAX, [LOCAL.3]
004C8B5E CALL unpack.004093AC***********取試驗碼的最後一位1入EAX
004C8B63 MOV ECX, EAX******************EAX的初始值是1,把這個值移入ECX
004C8B65 MOV EAX, ECX
004C8B67 MOV ECX, 3********************把3送入ECX
004C8B6C CDQ*******************************EDX清0
004C8B6D IDIV ECX***********************EAX=EAX/ECX=1/3,商0放EAX,餘數1放EDX
004C8B6F MOV ESI, EDX******************把餘數1送到ESI
004C8B71 XOR EBX, EBX******************EBX清0
004C8B73 LEA EAX, [LOCAL.4]
004C8B76 PUSH EAX
004C8B77 MOV EDX, EBX******************EBX的值是0,這個值移入到EDX中
004C8B79 ADD EDX, EDX******************EDX自身相加,0+0=0
004C8B7B ADD EDX, ESI******************EDX=EDX+ESI=0+1=1
004C8B7D ADD EDX, 2********************EDX=EDX+2=1+2=3,
004C8B80 MOV ECX, 1
004C8B85 MOV EAX, [LOCAL.1]************把試驗碼送入EAX,取試驗碼的第3位:3
004C8B88 CALL unpack.00404F74
004C8B8D MOV EDX, [LOCAL.4]
004C8B90 LEA EAX, [LOCAL.2]
004C8B93 CALL unpack.00404D24
004C8B98 INC EBX***********************EBX加1
004C8B99 CMP EBX, 6********************比較EBX是否等於6!
004C8B9C JNZ SHORT unpack.004C8B73********迴圈,迴圈6次,這個迴圈取試驗的值,依次取:3、5、7、9、11、13
**********************6位,連線起來就是:357864
004C8B9E XOR ESI, ESI*********************ESI清0
004C8BA0 MOV EBX, 1***********************賦EBX的值為1,EBX做計數器!
004C8BA5 LEA EAX, [LOCAL.5]***************賦EAX地址值
004C8BA8 MOV EDX, [LOCAL.1]***************試驗碼入EDX
004C8BAB MOV DL, BYTE PTR DS:[EDX+EBX-1]**取試驗碼的第1位:1
004C8BAF CALL unpack.00404C44
004C8BB4 MOV EAX, [LOCAL.5]
004C8BB7 CALL unpack.004093AC**************此CALL把取出的第1位試驗碼:1送入EAX
004C8BBC ADD ESI, EAX*********************ESI=ESI+EAX=0+1=1
004C8BBE INC EBX**************************EBX加1,做計數器!
004C8BBF CMP EBX, 11**********************比較EBX的值是否等於11
004C8BC2 JNZ SHORT unpack.004C8BA5********迴圈,這個迴圈是把試驗碼的各位相加:1+2+3+4+5+6+-----+1=48,值存放在ESI
004C8BC4 MOV EAX, [LOCAL.2]***************把上面取出的6位試驗碼:357864入EAX
004C8BC7 MOV EDX, unpack.004C8C80*********固定字串值472008入EDX
004C8BCC CALL unpack.00404E60
004C8BD1 JB SHORT unpack.004C8BE6********比較:357864和472008,低於就跳走!一跳就失敗!
004C8BD3 MOV EAX, [LOCAL.2]***************把上面取出的6位試驗碼:357864入EAX
004C8BD6 MOV EDX, unpack.004C8C90*********固定字串值500000入EDX
004C8BDB CALL unpack.00404E60
004C8BE0 JA SHORT unpack.004C8BE6********比較:357864和500000,高於就跳走!一跳就失敗!
004C8BE2 MOV BL, 1************************不跳到這裡,賦BL的值為1
004C8BE4 JMP SHORT unpack.004C8BE8********無條件跳!
004C8BE6 XOR EBX, EBX********************跳到這裡EBX清0
004C8BE8 TEST BL, BL**********************004C8BE2處跳來,測試BL的值!
004C8BEA JE SHORT unpack.004C8C3C*******為0就跳,跳就失敗!不跳往下!
004C8BEC XOR EBX, EBX********************EBX清0
004C8BEE CMP ESI, 39*********************比較ESI與39,ESI的值是:48
004C8BF1 JL SHORT unpack.004C8BFA*******小於就跳走
004C8BF3 CMP ESI, 39*********************比較ESI與39
004C8BF6 JG SHORT unpack.004C8BFA*******大於就跳走!相等呢?不跳!就成功
004C8BF8 MOV BL, 1***********************賦BL的值為1
004C8BFA CMP ESI, 47*********************同上!
004C8BFD JL SHORT unpack.004C8C06
004C8BFF CMP ESI, 48*********************同上!
004C8C02 JG SHORT unpack.004C8C06*******大於就跳,等於48就不跳!就成功
004C8C04 MOV BL, 1
004C8C06 CMP ESI, 64
004C8C09 JL SHORT unpack.004C8C12
004C8C0B CMP ESI, 65
004C8C0E JG SHORT unpack.004C8C12*******等於65就成功!
004C8C10 MOV BL, 1
004C8C12 CMP ESI, 6F
004C8C15 JL SHORT unpack.004C8C1E
004C8C17 CMP ESI, 6F
004C8C1A JG SHORT unpack.004C8C1E******等於6F就成功!
004C8C1C MOV BL, 1
004C8C1E CMP ESI, 7D
004C8C21 JL SHORT unpack.004C8C2A
004C8C23 CMP ESI, 7D
004C8C26 JG SHORT unpack.004C8C2A******等於7D就成功
004C8C28 MOV BL, 1
004C8C2A CMP ESI, 88
004C8C30 JL SHORT unpack.004C8C3C
004C8C32 CMP ESI, 88
004C8C38 JG SHORT unpack.004C8C3C*****等於88就成功!
004C8C3A MOV BL, 1*********************賦BL的值為1
004C8C3C XOR EAX, EAX
004C8C3E POP EDX
004C8C3F POP ECX
004C8C40 POP ECX
004C8C41 MOV DWORD PTR FS:[EAX], EDX
004C8C44 PUSH unpack.004C8C5E
004C8C49 LEA EAX, [LOCAL.5]
004C8C4C MOV EDX, 5
004C8C51 CALL unpack.00404A88
004C8C56 RETN
3、演算法分析:
這個軟體註冊成功必須滿足下列條件:
第一:註冊碼必須是16位!
第二:從註冊碼中取出6位,必須不能小於472008,不能大於500000,註冊碼的6位取法:取註冊碼的最後1位,
與3除,由除的餘數來控制從第幾位取,如最後一位是1,則餘數為1,1+2=3,就從第3位取,如是2,則餘數是2,2+2=4,
從第4位取,以下類推,然後每隔一位取1位,取完6位為止。
第三:把註冊碼的各位相加,設值為X,則X必須等於:39、48、65、6F、7D、88中的任何一個就成功!
給幾個可用的註冊碼:1243858867111101、8488999999999999
相關文章
- 再來篇輸入驗證+重啟驗證的軟體破解2015-11-15
- window 批處理檔案2019-05-10
- 批處理檔案命令2010-05-13
- Windows批處理檔案2012-10-04Windows
- bat批處理檔案2013-03-07BAT
- 開啟windows批處理大門2023-05-13Windows
- xCDKing 光碟管理 (Key檔案,重啟驗證)2003-06-28
- 切換IP批處理檔案2011-12-01
- Python批處理:檔案操作2024-05-01Python
- 設定Oralce啟動和停止的批處理檔案2018-05-08
- django-驗證碼/靜態檔案處理2018-03-21Django
- Windows批處理學習(二)——批處理(3)薦2013-07-27Windows
- 07 Windows批處理之檔案操作2024-09-09Windows
- 批處理檔案 bat 後臺執行2020-03-30BAT
- windows刪除檔案的批處理操作2017-12-25Windows
- 用批處理檔案執行備份2005-10-31
- 重啟驗證----系統增強工具Magic Utilities的破解!2003-07-06
- Hammerspoon for Mac自動化批處理軟體2020-11-18Mac
- 防止防毒軟體被病毒禁用的批處理2016-06-20防毒
- 如何處理大體積 XLSX/CSV/TXT 檔案?2022-03-03
- 大體積XML檔案處理效能問題2010-06-02XML
- Jenkins執行批處理檔案失敗2016-02-19Jenkins
- 批處理檔案(bat檔案)註冊dll批量註冊dll2013-09-29BAT
- MongoDB for Windows使用批處理檔案啟動閃退之空格惹的禍2018-03-15MongoDBWindows
- Python處理大檔案2014-04-12Python
- 使用Java處理大檔案2014-04-10Java
- 批處理檔備份oracle2006-01-04Oracle
- Linux學習之檔案處理命令(二)目錄處理命令 && 檔案處理命令2017-06-20Linux
- 批處理以當前時間為檔名建立檔案2020-04-04
- 批處理 壓縮zip 並過濾部分檔案2018-09-15
- 用批處理檔案編譯並執行java2006-02-26編譯Java
- 10 Windows批處理之呼叫例程和bat檔案2024-09-13WindowsBAT
- Python 如何處理大檔案2020-12-03Python
- 系統優化大師12.15 重啟驗證的演算法分析2015-11-15優化演算法
- 使用無伺服器實現檔案處理的批處理 - DZone Cloud2019-06-23伺服器Cloud
- 批處理檔案:將目錄下所有的jar檔案都加到CLASSPATH2013-11-29JAR
- oracle 中使用批處理檔案,同時執行,多個.sql檔案。2011-03-11OracleSQL
- 將DOS批處理檔案轉換為Shell指令碼2017-06-16指令碼