今週は逆Si3.5(バージョン3.5.66.0)されている、暗号化アルゴリズムには、それらを復元することですが、彼らは怠け者であるため、RIを書きたくはありません。フィルモアには休憩SIを意味しない、実際には、ありませんので、私は、トリッキーな方法で無制限に使用するSIの多様性を試すことができます。
アクティブSIのために裁判の後、すべてのスタートは、裁判の残りの日数を表示します。
赤い部分は、文字列定数、IDAオープンは、その文字列を検索することができ、「%d日で期限切れトライアルライセンス」のような形をしなければなりません。
参照文字そのコードの一部を見つけるために、それに従ってください:
.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 _sprint
SIコール_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
私は、その後、実行SIを聞かせてODが04A72B1で減算命令を修正する使用しようと、SIは、すでにショーを延長が実際に35日間の試用期間があります。
=>
ああ、実際には、このステージには成功したひび割れと考えられています。しかし、すべての時間はあなたが圧力を期限切れにすぐに総ソフトウェアを与え、日SI合計数十人だけでなく、ディスプレイを開きます。もしそうなら、変更、とても利用できる残りの日数が大きいこと。これは、より少ない被減数と減数TRIALDAYS totalTrialDaysを変更するよりも、算術、何の基礎知識です。IDAはtotalTrialDays / TRIALDAYS番号を参照して、ソフトウェアを比較して、私はそれをカット取得することを決めたので、totalTrialDays比較的少数のは、引用しました。
再びビューtotalTrialDays参照は、著名な命令、 "MOVのtotalTrialDays、23" が見つかりました:
指令23進35はそうではありませんか?必ず保護観察・ソースがそれをinsight3.5ことではないですか?まあ、大きなすぐに変更を入れて、それはとにかく、私はコードが表示されない、100年後、100年に変更しました。