取巧方式无限制试用Source insight3.5
? ? 這周一直在逆向Si3.5(版本號3.5.66.0),加密算法被還原出來了,但是因為懶惰,不想寫注冊機。沒有注冊機,其實等于沒有破解SI,于是,我嘗試各種取巧的辦法可以無限制使用si。
? ? 以試用方式激活si后,每次啟動時,都會顯示剩余的試用天數:
紅字部分應該是形如"Trial License expire in %d days"的字符串常量,打開IDA,可以搜索這串字符:
順藤摸瓜,找到引用該字符的代碼片:
.text:004A7263 loc_4A7263: ; CODE XREF: sub_4A7077+1D1↑j ... .text:004A72AC mov eax, totalTrialDays ;si3.5試用版設定的試用天數 .text:004A72B1 sub eax, trialDays ;已經試用的天數 .text:004A72B7 mov [ebp+remainDays], eax .text:004A72BD push 0FFh ; color .text:004A72C2 push [ebp+hdc] ; hdc .text:004A72C5 call ds:SetTextColor ;設置字體顏色 .text:004A72CB mov [ebp+color], eax .text:004A72D1 cmp [ebp+remainDays], 0 .text:004A72D8 jle short loc_4A72F6 .text:004A72DA push [ebp+remainDays] .text:004A72E0 push offset trialRemainDays ; "Trial License expires in %d days." .text:004A72E5 lea eax, [ebp+String] .text:004A72EB push eax ; char * .text:004A72EC call _sprintsi調用_sprint格式化字符串,而指令
.text:004A72DA push [ebp+remainDays]正好將變量[ebp+remainDays]作為占位符%d的參數壓棧。恰好,修改變量[ebp+remainDays]的語句就在附近:
.text:004A72AC mov eax, totalTrialDays ;si3.5試用版設定的試用天數 .text:004A72B1 sub eax, trialDays ;已經試用的天數 .text:004A72B7 mov [ebp+remainDays], eax注意,totalTrialDays和trialDays是全局變量,位于數據段:
.data:005E6F8C trialDays dd ? ; DATA XREF: sub_445B93:loc_445BC4↑r .data:005E6F8C ; sub_448894+185↑w ... .data:005E6F90 totalTrialDays dd ? ; DATA XREF: sub_445B93+36↑r我嘗試著用OD修改了一把04A72B1處的減法指令,然后讓si運行,本來已經超期的si居然又顯示還有35天的試用期:
=>
嗯,其實,到這步已經算是成功破解了。但是每次打開si總顯示還有幾十天,總給人一種軟件馬上要過期的壓迫感。既然這樣,再改一把,讓剩余可用天數變大。這是小學算術知識了,無外乎改減數trialDays和被減數totalTrialDays。用IDA比較了一下軟件對totalTrialDays/trialDays的引用數量,發現totalTrialDays被引用的次數相對較少,于是,我決定拿它開刀。
再次查看totalTrialDays的引用,發現一個顯眼的指令,"mov totalTrialDays,23":
指令中的23不就是10進制的35嗎?這不就是source insight3.5總的試用期嗎?好,就把這個立即數改大,改成100年吧,反正100年后我也不用看代碼了。
總結
以上是生活随笔為你收集整理的取巧方式无限制试用Source insight3.5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于JAVA早教课程管理系统计算机毕业设
- 下一篇: 制造商将注意力转向轻质量以进一步提高LE