(8)去除自校驗

2021-06-09 22:51:28 字數 1346 閱讀 7334

今天我們就掌握一下怎麼去除自校驗,軟體是乙個網咖註冊工具,看了下只要修改一處自校驗就可以讓程式正常執行,所以拿出來做例項,有些厲害的自校驗強度又大而且有多重不同自校驗,以前有個乙個crackme,

居然有10

處自校驗,夠**的。

一: 例項問題解決之去除自校驗

(檔案大小自校驗)(實現未實現的跳)

看操作吧。

當然進行下面的而操作前提是你的先脫殼並修復,執行後沒反應。

1. 對比法。

①:源程式和脫後的進行跟蹤比較,找到不同的條件跳。

原程式除錯到oep

,和脫殼後的程式載入

od,然後慢慢向下跟蹤除錯,檢查條件跳轉是否跳轉

(如:cmp eax,1117004 

語句)。

其中eax

中存放的是程式自身的大小,

eax小於

1117004

則跳。那麼我們可以檢視脫後檔案的大小(以位元組為單位),將

1117004

該為脫後大小

+n(以滿足條件跳,小於則跳),注意修改前後要保持位數一致,多的去掉後面的。彙編後儲存即可。

②:可以手動實現為實現的跳,及該條件跳轉為無條件跳cmp

如:該cmp 

下的jle

為jmp  

儲存即可

2. 找exitprocess函式

f9執行程式,讓程式跑飛。在堆疊視窗到到

exitprocess

得下面第乙個返回,右鍵在反彙編視窗中跟隨,這樣就直接來到了要修改大小的下面附近,然後用方法一改大小即可。用這種方法的好處就在於不用對比得到校驗大小的地方,但此法僅限於檔案大小自校驗。

原理分析:

1: 005e5d4d   .  e8 663df5ff   call unpack_.00539ab8

2: 005e5d52   .  3d 00171100   cmp eax,111700

3: 005e5d57   .  7e 05         jle short unpack_.005e5d5e

4: 005e5d59   .  e8 52f3e1ff   call unpack_.004050b0

5: 005e5d5e   >  8d55 e4       lea edx,dword ptr ss:[ebp-1c]

6: 005e5d61   .  a1 00f75e00   mov eax,dword ptr ds:[5ef700]

f9執行後跑飛後會執行到程式設計的如果校驗失敗則呼叫的函式中(

call unpack_.004050b0

),一般在該函式中會呼叫

exitproces

函式退出程式。

簡單delphi自校驗

很簡單的一種 類似getfilesize 原理是對比程式最後修改時間,因為如果你不動他的話,那個時間是不會變的 這裡用的是findfirstfile 查詢檔案,這個api會填充乙個win32 find data資料,裡面遍有lastwritetime,這個是filetime,轉成systemtinm...

逆向 自校驗繞過 1

對於有些程式,如果脫殼後執行時無效,則應該考慮是否存在程式的自校驗。比較常用的自校驗技巧是用getfilesize 函式對檔案的前後大小做比較。因為脫殼後一般檔案大小會比脫殼前的大很多。所以通過getfilesize api 的對檔案大小的取值進行判斷,可以判斷檔案是否被脫殼。如果被脫殼,則直接退出...

mysql 去除列的自增長 mysql自增長列

自增長列必須是索引列,否則無法建立成功表,對myisma和innodb都一樣 localhost testdb root create table test5 id int auto increment,name varchar 10 engine innodb error 1075 42000 l...