檔案加鎖王 8.1演算法分析
檔案加鎖王 8.1演算法分析
檔案加鎖王 8.1演算法分析
作者:onlyu[FCG][DFCG]
【軟體名稱】檔案加鎖王 8.1
【下載地址】http://hnpy.onlinedown.net/down/lockFile.rar
【應用平臺】Win9x/NT/2000/XP
【軟體大小】297k
【軟體限制】20次限次版
【破解宣告】破解只是感興趣,無其它目的。失誤之處敬請諸位大俠賜教!
【破解工具】regshot v1.10,trw2000 v1.22
【軟體簡介】檔案保護工具
【分析過程】執行軟體,發現是20次限次版本,先看一下它把使用次數記錄在哪裡,執行regshot ,先進行一次掃描,執行軟體,再關閉,用regshot 進行第二次掃描,比較,得到如下結果:
**Original contents Maybe deleted or modified**H.L.KSoftwareMicrosoftWindowsRuntimes:
"2"H.U.DEFAULTSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerNoLogoff:
0x00000000H.U.DEFAULTSoftwareMicrosoftWindowsCurrentVersionPoliciessystemDisableTaskMgr:
0x00000000H.U.DEFAULTSoftwareMicrosoftWindowsCurrentVersionPoliciessystemDisableLockWorkstation:
0x00000000H.U.DEFAULTSoftwareMicrosoftWindowsCurrentVersionPoliciessystemDisableChangePassword:
0x00000000**Keys&values Modified | Added in the
2ndShot**H.L.KSoftwareMicrosoftWindowsRuntimes: "3"H.U.DEFAULTSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerNoLogoff:
0x00000001H.U.DEFAULTSoftwareMicrosoftWindowsCurrentVersionPoliciessystemDisableTaskMgr:
0x00000001H.U.DEFAULTSoftwareMicrosoftWindowsCurrentVersionPoliciessystemDisableLockWorkstation:
0x00000001H.U.DEFAULTSoftwareMicrosoftWindowsCurrentVersionPoliciessystemDisableChangePassword: 0x00000001
真是一目瞭然啊!它把使用次數資訊記錄在H.L.KSoftwareMicrosoftWindowsRuntimes鍵值中,怎麼去除使用次數限制不用我說了吧。下面分析一下它的註冊演算法。來到註冊視窗,它會告訴我的電腦ID號碼:659428341。好,輸入我的試練碼:78787878,下萬能斷點:bpx hmemcpy,結果不停地黑頻,**!,沒辦法,只能用其他方法了,按cntl+m,進入TRW,下s 0 l -1 '78787878',找到了,為30:805c7f32(注:每次都不一樣),下bpm 805c7f32。f5來到程式,點確定輸入,終於截下了,下pmodule,來到:
0167:0044A7EA CMP EAX,EBX
0167:0044A7EC FNCLEX
0167:0044A7EE JNL 0044A808
0167:0044A7F0 MOV ECX,[EBP+FFFFFF10]
0167:0044A7F6 PUSH DWORD A0
0167:0044A7FB PUSH DWORD 00422F9C
0167:0044A800 PUSH ECX
0167:0044A801 PUSH EAX
0167:0044A802 CALL `MSVBVM60!__vbaHresultCheckObj`
0167:0044A808 MOV EAX,[EBP-28]
0167:0044A80B LEA EDX,[EBP-44]
0167:0044A80E MOV [EBP-3C],EAX
0167:0044A811 LEA EAX,[EBP-54]
0167:0044A814 PUSH EDX
0167:0044A815 PUSH EAX
0167:0044A816 MOV [EBP-28],EBX
0167:0044A819 MOV DWORD [EBP-44],08
0167:0044A820 CALL `MSVBVM60!rtcTrimVar`
0167:0044A826 MOV EAX,00422260
0167:0044A82B LEA ECX,[EBP-54]
0167:0044A82E MOV [EBP+FFFFFF54],EAX
0167:0044A834 MOV [EBP+FFFFFF44],EAX
0167:0044A83A LEA EDX,[EBP+FFFFFF4C]
0167:0044A840 PUSH ECX
0167:0044A841 LEA EAX,[EBP-64]
0167:0044A844 PUSH EDX
0167:0044A845 PUSH EAX
呵呵,是VB程式,還好不是Pcode的,按F10繼續往下走,來到:
0167:0044A979 FF1564104000 CALL `MSVBVM60!__vbaHresultCheckObj`
0167:0044A97F 8B8D18FFFFFF MOV ECX,[EBP+FFFFFF18]<------[EBP+FFFFFF18]儲存我的ID號碼
0167:0044A985 FF1580104000 CALL `MSVBVM60!__vbaI4Abs`<--------求ecx的絕對值
0167:0044A98B 8BC8 MOV ECX,EAX<-------------EAX=0
0167:0044A98D 81E969FE0B00 SUB ECX,000BFE69<--------ECX=ECX-BFE69
0167:0044A993 0F80E0050000 JO NEAR 0044AF79
0167:0044A999 FF1580104000 CALL `MSVBVM60!__vbaI4Abs`<--------求ecx的絕對值EAX=|ECX|
0167:0044A99F 8BC8 MOV ECX,EAX<----------------------ECX=EAX
0167:0044A9A1 B8D3200DD2 MOV EAX,D20D20D3<-----------------EAX=D20D20D3
0167:0044A9A6 F7E9 IMUL ECX<--------------------------EAX*ECX
0167:0044A9A8 03D1 ADD EDX,ECX<----------------------EDX=EDX+ECX
0167:0044A9AA C1FA06 SAR EDX,06<-----------------------EDX=EDX sar 6
0167:0044A9AD 8BCA MOV ECX,EDX<----------------------EDX裡儲存的就是註冊碼了
0167:0044A9AF C1E91F SHR ECX,1F
0167:0044A9B2 03D1 ADD EDX,ECX
0167:0044A9B4 52 PUSH EDX
0167:0044A9B5 FF1514104000 CALL `MSVBVM60!__vbaStrI4`
0167:0044A9BB 894594 MOV [EBP-6C],EAX<-----------------[EAX]->"8444132"我的註冊碼
0167:0044A9BE 8D558C LEA EDX,[EBP-74]
0167:0044A9C1 8D857CFFFFFF LEA EAX,[EBP+FFFFFF7C]
0167:0044A9C7 52 PUSH EDX
0167:0044A9C8 50 PUSH EAX
0167:0044A9C9 C7458C08000000 MOV DWORD [EBP-74],08
0167:0044A9D0 FF15A8104000 CALL `MSVBVM60!rtcTrimVar`
0167:0044A9D6 8D4DAC LEA ECX,[EBP-54]
0167:0044A9D9 8D954CFFFFFF LEA EDX,[EBP+FFFFFF4C]
0167:0044A9DF 51 PUSH ECX
0167:0044A9E0 8D459C LEA EAX,[EBP-64]
0167:0044A9E3 52 PUSH EDX
0167:0044A9E4 50 PUSH EAX
0167:0044A9E5 C78544FFFFFF6022+MOV DWORD [EBP+FFFFFF44],00422260
0167:0044A9EF C7853CFFFFFF0800+MOV DWORD [EBP+FFFFFF3C],08
0167:0044A9F9 FF1540114000 CALL `MSVBVM60!__vbaVarCat`
可以看出這個軟體的註冊演算法極其簡單,記憶體序號產生器如下:
1、程式名稱:LockFile.exe
2、新增資料:
中斷地址:44A9BB
中斷次數:1
第一位元組:89
指令長度:3
3、選擇記憶體方式暫存器EAX,寬字元,生成。
下面引用BKSY[DFCG]用VC編寫的序號產生器原始碼:
#include <stdio.h>
int abs(int n)
{
if(n<0) n*=(-1);
return n;
}
void main()
{
int id;
printf("input your id:");
scanf("%d",&id);
id=abs(id);
id-=0xBFE69;
id=abs(id);
__asm
{
mov ecx,id
mov eax,0xD20D20D3
imul ecx
add edx,ecx
sar edx,6
mov id,edx
}
printf("
Your code is %d
",id);
}
最後感謝BKSY[DFCG]和laoxuetong[DFCG]的幫助。
相關文章
- For Update 加鎖分析2022-01-24
- 自動建立pid檔案,並加鎖2015-10-26
- Linux中給檔案或者資料夾加鎖,解鎖2020-12-17Linux
- InnoDB 事務加鎖分析2020-02-10
- MySQL加鎖處理分析2015-02-28MySql
- MySQL 加鎖處理分析2016-05-27MySql
- 從ReentrantLock加鎖解鎖角度分析AQS2020-11-05ReentrantLockAQS
- MySQL死鎖系列-常見加鎖場景分析2020-05-28MySql
- 檔案鎖2013-01-21
- 超全面 MySQL 語句加鎖分析(上篇)2020-02-16MySql
- 超全面 MySQL 語句加鎖分析(中篇)2020-02-16MySql
- 超全面 MySQL 語句加鎖分析(下篇)2020-02-16MySql
- LINUX多執行緒讀寫同一個檔案 加鎖2016-07-26Linux執行緒
- InnoDB事務鎖之行鎖-insert加鎖-隱式鎖加鎖原理2018-02-04
- 驚!史上最全的select加鎖分析(Mysql)2019-08-19MySql
- 【Mysql】MySQL加鎖處理分析--何登成2016-04-07MySql
- 故障分析 | 從 Insert 併發死鎖分析 Insert 加鎖原始碼邏輯2023-04-26原始碼
- golang原始碼分析:sync.Pool 如何從讀寫加鎖到無鎖2020-12-14Golang原始碼
- Redis分散式鎖加鎖案例2021-12-17Redis分散式
- mysql加鎖讀2018-01-10MySql
- MYSQL 對錶最大ID 搶加鎖時的阻塞分析2019-09-28MySql
- C語言檔案與目錄(五)檔案鎖2015-11-06C語言
- InnoDB事務鎖之行鎖-聚集索引加鎖流程2018-01-31索引
- php檔案鎖是什麼2021-09-11PHP
- ThunderSoft File Lock for Mac檔案鎖2021-01-15Mac
- 再說PHP檔案鎖,共享鎖和排它鎖注意點2014-06-23PHP
- 刪除Win8.1系統休眠檔案有妙招2016-08-30
- Redisson 分散式鎖原始碼 01:可重入鎖加鎖2021-07-02Redis分散式原始碼
- MySQL鎖(四)行鎖的加鎖規則和案例2020-12-18MySql
- APK 檔案分析2018-12-16APK
- hex檔案分析2018-04-17
- 加資料檔案引起load上升2010-02-25
- 淺談併發加鎖2020-01-05
- Mysql加鎖與實踐2018-10-19MySql
- 鎖機制到加鎖的必要性2024-09-08
- 檔案鎖fcntl()函式的使用2016-07-09函式
- InnoDB事務鎖之行鎖-delete流程update階段加鎖2018-02-02delete
- Linux程式間通訊中的檔案和檔案鎖2016-08-07Linux