一、搞免殺修改特徵碼需要熟練掌握的全部彙編知識
一.機械碼,又稱機器碼.
ultraedit開啟,編輯exe檔案時你會看到
許許多多的由0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f組成的數碼,這些數碼
就是機器碼.
修改程式時必須通過修改機器碼來修改exe檔案.
二.需要熟練掌握的全部彙編知識(只有這麼多)
不大容易理解,可先強行背住,混個臉兒熟,以後慢慢的就理解了
cmp a,b 比較a與b
mov a,b 把b的值送給a
ret 返回主程式
nop 無作用,英文「no operation」的簡寫,意思是「do nothing」(機器碼90)***機器碼的含義參看上面
(解釋:ultraedit開啟編輯exe檔案時你看到90,等同於彙編語句nop)
call 呼叫子程式
je 或jz 若相等則跳(機器碼74 或0f84)
jne或jnz 若不相等則跳(機器碼75或0f85)
jmp 無條件跳(機器碼eb)
jb 若小於則跳
ja 若大於則跳
jg 若大於則跳
jge 若大於等於則跳
jl 若小於則跳
jle 若小於等於則跳
pop 出棧
push 壓棧
三.常見修改(機器碼)
74=>75 74=>90 74=>eb
75=>74 75=>90 75=>eb
jnz->nop
75->90(相應的機器碼修改)
jnz -> jmp
75 -> eb(相應的機器碼修改)
jnz -> jz
75->74 (正常) 0f 85 -> 0f 84(特殊情況下,有時,相應的機器碼修改)
四.兩種不同情況的不同修改方法
機器碼轉彙編指令
在用logisim初步畫完cpu電路後,配合educoder除錯電路。提交 到educoder後,後台會檢測錯誤資訊,根據報錯資訊中的週期數或者pc值,可以找到錯誤的指令機器碼。但是機器碼太抽象,因此使用下面的程式將指令機器碼翻譯成指令名稱,進而繼續除錯電路。32位mips指令翻譯器 輸入一條16進...
機器數機器碼
定點數的機器碼中零的表示形式 正數的補碼就是其本身,負數的補碼其最高位 符號位 為1,其餘各位是對原碼取反再加1。所以,對於8位二進位制數,正0的原碼 補碼就是00000000,負數的原碼是10000000,反碼為11111111,被碼是反碼加1,就是 1 00000000。其中 1 是超出8位的進...
ARM機器碼分析
我們編寫的匯程式設計序還是不夠底層,cpu都是對機器碼進行操作的,所以還需要用彙編器將彙編 轉換成機器碼才能被cpu處理。下面舉幾個例子來說說分析arm機器碼的方法。對編譯連線之後得到的elf進行反彙編 arm linux objdump 檢視得到的反彙編 這裡如果想同時看到彙編 和機器碼,在編譯的...