介紹如何手動清除花指令,供大家參考
我見到的一個比較花的花指令。
介紹如何手動清除花指令,供大家參考
某程式W32DASM編譯後如下:
:10001000
55 push
ebp
:10001001 8BEC
mov ebp, esp
:10001003 81EC10030000
sub esp, 00000310
:10001009 53
push ebx
:1000100A 56
push esi
:1000100B
57 push
edi
:1000100C 780D
js 1000101B
:1000100E 87ED
xchg ebp, ebp ;==nop
:10001010
7704 ja 10001016
:10001012
87DB xchg
ebx, ebx ;==nop
:10001014 7400
je 10001016
:10001016 7008
jo 10001020----\
:10001018
90 nop
|==jmp 10001020
:10001019 7105
jno 10001020---/
:1000101B
7700 ja 1000101D
;==nop
:1000101D EBEF
jmp 1000100E
:1000101F 86EB
xchg bl, ch-----> 這裡被花了 也就是說1000100C--1000101F都要nop掉
:10001021 07
pop es
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10001029(U)
|
:10001022
8BDB mov
ebx, ebx
:10001024 7006
jo 1000102C
:10001026 90
nop
:10001027 7103
jno 1000102C
:10001029 EBF7
jmp 10001022
:1000102B
D86804 fsubr dword
ptr [eax+04]
:1000102E 0100
add dword ptr [eax], eax
:10001030 008D85FCFEFF
add byte ptr [ebp+FFFEFC85], cl
:10001036
FF508B call [eax-75]
:10001039
4D dec
ebp
:1000103A 0851FF
or byte ptr [ecx-01], dl
:1000103D 1598710910
adc eax, 10097198
改一下,再W32DASM編譯
顯示如下:
:10001000 55
push ebp
:10001001 8BEC
mov ebp, esp
:10001003 81EC10030000
sub esp, 00000310
:10001009 53
push ebx
:1000100A
56 push
esi
:1000100B 57
push edi
:1000100E 90
nop
:1000100F 90
nop
:10001010 90
nop
:10001011
90 nop
:10001012
90 nop
:10001013
90 nop
:10001014
90 nop
:10001015
90 nop
:10001016
90 nop
:10001017
90 nop
:10001018
90 nop
:10001019
90 nop
:1000101A
90 nop
:1000101B
90 nop
:1000101C
90 nop
:1000101D
90 nop
:1000101E
90 nop
:1000101F
90 nop
:10001020
EB07 jmp
10001029<---------------暈,這也是花指令的一部分
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10001029(U)
|
:10001022
8BDB mov
ebx, ebx<------------==nop
:10001024 7006
jo 1000102C----\
:10001026 90
nop
|==jmp 1000102C
:10001027 7103
jno 1000102C---/
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10001020(U)
|
:10001029
EBF7 jmp
10001022<--------------還要跳
:1000102B D86804
fsubr dword ptr [eax+04]<------這裡是真正被花的地方
:1000102E
0100 add
dword ptr [eax], eax
:10001030 008D85FCFEFF
add byte ptr [ebp+FFFEFC85], cl
:10001036 FF508B
call [eax-75]
:10001039 4D
dec ebp
:1000103A
0851FF or byte ptr
[ecx-01], dl
:1000103D 1598710910
adc eax, 10097198
把10001020----1000102B
全部nop掉,再編譯
:10001000
55 push
ebp
:10001001 8BEC
mov ebp, esp
:10001003 81EC10030000
sub esp, 00000310
:10001009 53
push ebx
:1000100A 56
push esi
:1000100B
57 push
edi
:1000100C 90
nop
:1000100D 90
nop
:1000100E 90
nop
:1000100F 90
nop
:10001010 90
nop
:10001011
90 nop
:10001012
90 nop
:10001013
90 nop
:10001014
90 nop
:10001015
90 nop
:10001016
90 nop
:10001017
90 nop
:10001018
90 nop
:10001019
90 nop
:1000101A
90 nop
:1000101B
90 nop
:1000101C
90 nop
:1000101D
90 nop
:1000101E
90 nop
:1000101F
90 nop
:10001020
90 nop
:10001021
90 nop
:10001022
90 nop
:10001023
90 nop
:10001024
90 nop
:10001025
90 nop
:10001026
90 nop
:10001027
90 nop
:10001028
90 nop
:10001029
90 nop
:1000102A
90 nop
:1000102B
90 nop
:1000102C
6804010000 push 00000104
:10001031
8D85FCFEFFFF lea eax, dword ptr [ebp+FFFFFEFC]
:10001037
50 push
eax
:10001038 8B4D08
mov ecx, dword ptr [ebp+08]
:1000103B 51
push ecx
*
Reference To: KERNEL32.GetModuleFileNameA, Ord:00FCh
|
:1000103C FF1598710910 Call
dword ptr [10097198]
整理這個Call
:10001000
55 push
ebp
:10001001 8BEC
mov ebp, esp
:10001003 81EC10030000
sub esp, 00000310
:10001009 53
push ebx
:1000100A 56
push esi
:1000100B
57 push
edi
:1000102C 6804010000 push
00000104
:10001031 8D85FCFEFFFF lea
eax, dword ptr [ebp+FFFFFEFC]
:10001037 50
push eax
:10001038 8B4D08
mov ecx, dword ptr [ebp+08]
:1000103B
51 push
ecx
* Reference To:
KERNEL32.GetModuleFileNameA, Ord:00FCh
|
:1000103C
FF1598710910 Call dword ptr [10097198]
1000100C--1000102B,32個位元組,全部是干擾程式碼,把他們全nop掉我們看到了一個API函式,不容易呀:)
希望透過這個例子你能真正學會如何去除花指令:-)
ZMWorm[CCG]
相關文章
- Elasticsearch 參考指南(介紹)2018-10-11Elasticsearch
- DOM參考手冊及事件參考手冊2015-05-24事件
- swift初探(供objective c開發者參考)2014-06-14SwiftObject
- MT7682參考手冊,MT7682晶片設計原理資料介紹2018-10-26晶片
- 華為的Java面試題,僅供參考。2020-01-13Java面試題
- IOC注入反轉思路-僅供參考2020-09-15
- SR 提交email 標準格式 --- 供參考2012-11-13AI
- 常用的Oracle指令碼參考2008-05-21Oracle指令碼
- Nosql大家族介紹2015-05-05SQL
- JavaScript物件參考手冊2018-08-11JavaScript物件
- JQuery 1.6參考手冊2011-05-11jQuery
- 參考手冊總結2012-07-31
- MySQL 5.1參考手冊2010-07-14MySql
- mysql 5.1 參考手冊2007-06-23MySql
- MTK最新資料,MT6261參考設計介紹2019-03-05
- restFul介面設計規範[僅供參考]2022-03-01REST
- 我寫了一個Winzip8.0的序號產生器供大家參考 (225字)2001-04-09
- 8086彙編指令快速參考2018-04-07
- HP-UX基本指令快速參考2007-11-21UX
- DOJO API 中文參考手冊2018-04-20API
- Oracle X$ table 參考手冊2013-12-04Oracle
- Git命令參考手冊(轉)2015-03-19Git
- JavaScript語言參考手冊2009-03-07JavaScript
- SQL語法參考手冊2007-01-28SQL
- 從系統檢視中生成儲存過程的單元測試指令碼的指令碼(供參考)2006-06-14儲存過程指令碼
- 針對Hbuilderx內建終端無法輸入問題,總結了三種方法供大家參考2021-08-27UI
- 從國外網站摘抄的主流移動CPU分數供自己參考2011-08-11網站
- Laravel 驗證碼類實現 (供學習、參考)2019-05-07Laravel
- 關於mssql的學習體會,僅供參考!2010-11-05SQL
- MySQL配置(Ubuntu篇 供新使用者參考)(轉)2007-08-15MySqlUbuntu
- PHP-imap 使用參考手冊2020-01-07PHP
- Python os模組參考手冊2019-02-16Python
- Python sys模組參考手冊2019-02-16Python
- PLSQL包和TYPE參考手冊2011-07-01SQL
- SQL 語法參考手冊(轉)2007-06-28
- delphi函式參考手冊 (轉)2007-12-11函式
- SQL語法參考手冊(轉)2007-08-13SQL
- 清除SQL Server日誌的方法介紹2009-03-10SQLServer