匯編xoredi
㈠ 匯編語言程序設計的問題
1.如下:
.386
.modelflat,stdcall
optioncasemap:none
.data
xdb?
ydb?
zdb?
.code
start:
xoreax,eax
inceax
movz,al
movesi,x
movedi,y
cmpesi,edi
jaext
decal
cmpesi,edi
jeext
decal
ext:
nop
endstart
2.如下:
.386
.modelflat,stdcall
optioncasemap:none
.data
DATAdb100DUP(?)
MAXdb0
.code
start:
xoreax,eax
xoresi,esi
movecx,100
L1:
cmpeax,[DATA+esi]
jaeL2
moveax,[DATA]
L2:
loopL1
movMAX,eax
endstart
㈡ 一個簡單的匯編語言編程
用16位匯編忒麻煩,用masm8.0寫了個,玩一下:
.386
.model flat, stdcall
option casemap :none
includelib kernel32.lib
includelib msvcrt.lib
printf proto C :VARARG
putchar proto C :DWORD
system proto C :DWORD
ExitProcess proto :DWORD
CTXT MACRO quoted_text:VARARG
LOCAL local_text
.data
local_text db quoted_text, 0
align 4
.code
EXITM <local_text>
ENDM
SADD MACRO quoted_text:VARARG
EXITM <addr CTXT(quoted_text)>
ENDM
; matrix的維度
M equ 10
N equ 10
P equ 10
.data
; ------------------------
; matrix1 M * N
; ------------------------
mx1 dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
; ------------------------
; matrix2 N * P
; ------------------------
mx2 dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
dd 1,1,1,1,1,1,1,1,1,1
; ------------------------
; matrix3 M * P
; ------------------------
mx3 dd M*P p(0)
.code
start:
xor eax, eax
lp1:
jmp ts1
up1:
pop eax
inc eax
ts1:
cmp eax, M
jge over
push eax
lp2:
xor ebx, ebx
jmp ts2
up2:
pop ebx
inc ebx
ts2:
cmp ebx, P
jge jtb_up1
push ebx
lp3:
xor ecx, ecx
jmp ts3
up3:
pop ecx
inc ecx
ts3:
cmp ecx, N
jge jtb_up2
push ecx
mov edx, eax
imul edx, edx, P*4
push edx
mov esi, mx3[edx+ebx*4]
mov edx, eax
imul edx, edx, N*4
mov edi, mx1[edx+ecx*4]
mov edx, ecx
imul edx, edx, P*4
imul edi, mx2[edx+ebx*4]
add esi, edi
pop edx
mov mx3[edx+ebx*4], esi
jmp up3
jtb_up2:
push eax
mov edx, eax
imul edx, edx, P*4
invoke printf, SADD("%2d "), dword ptr mx3[edx+ebx*4]
pop eax
jmp up2
jtb_up1:
invoke putchar, 10
jmp up1
over:
invoke system, SADD("pause")
invoke ExitProcess, 0
end start
現學現賣,用WINDLX寫的,簡單點了,而且你主要是要觀察流水線操作:
.data
mx1: .word 1,2,3,4,5,6
mx2: .word 1,2,3,4,5,6
mx3: .word 0,0,0,0,0,0 ; mx3 = mx1 * mx2
.text
.global main
xor r0, r0, r0
add r1, r0, 0
add r3, r0, 0
loop:
lw r4, mx1(r3)
lw r5, mx2(r3)
multu r6, r4, r5
sw mx3(r3), r6
add r3, r3, 4
add r1, r1, 1
sgeui r2, r1, 6
bnez r2, finish
j loop
finish:
trap 0
㈢ 高手給個匯編RC4代碼,
comment *
rc4_setkey proto :DWORD, :DWORD
rc4_crypt proto :DWORD, :DWORD
.data?
rc4keytable db 256 p(?)
.code
rc4_setkey proc ptrInkey:DWORD, ptrInkey_length:DWORD
xor ebx,ebx
@_r1:
mov [rc4keytable+ebx],bl
inc ebx
cmp ebx,256
jnz @_r1
mov esi,ptrInkey
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edi,edi
@_r3:
mov al,[rc4keytable+ecx]
add bl,byte ptr [esi+edi]
add bl,al
mov dl,[rc4keytable+ebx]
mov [rc4keytable+ecx],dl
mov [rc4keytable+ebx],al
inc edi
cmp edi,ptrInkey_length
jl @_r2
xor edi,edi
@_r2:
inc ecx
cmp ecx,256
jnz @_r3
ret
rc4_setkey endp
rc4_crypt proc ptrIndata:DWORD, ptrIndata_length:DWORD
xor eax,eax
xor ebx,ebx
xor edi,edi
xor edx,edx
mov esi,ptrIndata
@_r1:
mov cl,[rc4keytable+1+eax]
add dl,cl
mov bl,[rc4keytable+edx]
mov [rc4keytable+edx],cl
add bl,cl
mov bl,[rc4keytable+ebx]
xor [esi+edi],bl
inc eax
inc edi
cmp ptrIndata_length,edi
jnz @_r1
ret
rc4_crypt endp 我也是匯編初學的 上網給你找了個
㈣ 匯編語言ShellCode的問題
保存當前堆棧指針 清空edi 保存以後,可以通過訪問ebp+4+4n來訪問壓入堆棧的第n個參數 這樣可以避免過程中因為儲存ebx,ecx,edx等等造成的堆棧指針的修改
㈤ 匯編 xor dword ptr [edi], ebp 是什麼意思啊
al寄存器的數字減去31,也就是計算a1寄存器中存儲的數據與"1"的ASCII之差
㈥ 匯編程序
; 題目名稱:輸入成績,分別升序、降序排序
; 題目來源:http://..com/question/132061481.html
; 操作說明:成績按百分制,輸入成績時,最多3位數,即100分;小於100分的成績,按回車確認
; 本程序在MASMPlus 1.2集成環境下通過編譯,經過調試,運行正確。
Code Segment
Assume CS:Code,DS:Code
CR equ 000DH
LF equ 000AH
KBBack equ 0008H
; -------------------------------------
; 功能:顯示指定地址(Str_Addr)的字元串
; 入口:
; Str_Addr=字元串地址(要求在數據段)
; 用法: Output Str_Addr
; 用法舉例:Output PromptStr
Output MACRO Str_Addr
push ax
lea dx,Str_Addr
mov ah,9
int 21h
pop ax
EndM
; -------------------------------------
; 功能:在當前游標位置顯示一個字元
; 入口:dl=要顯示的字元
Output_Chr proc Near
push ax
mov ah,2
int 21h
pop ax
ret
Output_Chr Endp
; -------------------------------------
; 功能:取游標位置
; 入口:無
; 出口:DH=行號,DL=列號
GetCursor Proc Near
PUSH DS
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH CS
POP DS
XOR BX,BX
MOV AH,3
INT 10H
MOV Cursor_Row,DH
MOV Cursor_Col,DL
POP DX
POP CX
POP BX
POP AX
POP DS
RET
Cursor_Row DB ?
Cursor_Col DB ?
GetCursor EndP
; -------------------------------------
; 功能:置游標位置
; 入口:Cursor_Row=行坐標; Cursor_Col: 列坐標)
SetCursor Proc Near
PUSH DS
PUSH DX
PUSH CX
PUSH BX
PUSH AX
PUSH CS
POP DS
MOV DH,Cursor_Row
MOV DL,Cursor_Col
XOR BX,BX
MOV AH,2
INT 10H
POP AX
POP BX
POP CX
POP DX
POP DS
RET
SetCursor EndP
; -------------------------------------
; 功能:鍵盤輸入一個指定位數(N)的十進制數字,將其轉換成二進制數並保存在指定的內存單元。
; 輸足N位的,自動結束輸入;不足N位的,空格結束輸入。
; 由於限定最大數據類型為字,所以,數字位數最多:5,最大無符號數:65536
; 約定:直接回車,視為數字0
; 入口:cs:@@Digits=數字位數;es:di=保存輸入的數字首地址
; cs:@@Type_Data=保存的數據類型,B=位元組類型,W=字類型。
; 出口:轉換後的二進制數保存在di所指的單元
Input_Dec Proc Near
push ds
push dx
push cx
push bx
push di
push cs
pop ds
call GetCursor ;取游標位置
mov dx,WORD PTR Cursor_Row
mov @@Tmp_Cursor,dx ;保存起始游標位置
lea di,@@Save_Tmp
push di
cld
mov cl,@@Digits
xor ch,ch
push cx
@@Input_Dec: call GetCursor ;取游標位置
mov ah,1 ;從鍵盤接受一個字元
int 21h
cmp al,27 ;Esc?
jz @@Return
cmp al,CR ;若鍵入的是回車,已經鍵入的數字不足N位
jz @@ASC_Dec ;轉去處理已經鍵入的數字
cmp al,KBBack
jz @@KB_Back ;若是回空鍵,重新輸入
cmp al,'0'
jb @@KBBack ;若低於數字'0',重新輸入
cmp al,'9'
ja @@KBBack ;若高於數字'9',重新輸入
jmp @@Save_Dig
@@KB_Back: cmp cl,cs:@@Digits ;十進制數字位數
jz @@Input_Dec
inc cx
dec di
dec Cursor_Col
@@KBBack: call SetCursor ;置游標位置
jmp @@Input_Dec
@@Save_Dig: and al,0fh ;轉換成二進制數
stosb ;保存
loop @@Input_Dec ;接受下一個數字
@@ASC_Dec: mov ax,cx
pop cx
pop si
sub cx,ax ;實際輸入的數字位數
xor bp,bp
xor dx,dx
xor ax,ax
jcxz @@Save_Ret ;若直接回車,沒有輸入任何數字,按輸入'0'處理
dec cx ;實際輸入的數字位數減1,准備把輸入的這一串數字轉換成二進制數
jcxz @@One_Digit ;若輸入的數字只有一位,轉去直接保存這個二進制數
mov bx,10
@@Mul_Ten: lodsb
xor ah,ah
add ax,bp
mul bx
mov bp,ax
loop @@Mul_Ten
@@One_Digit: lodsb
xor ah,ah
add ax,bp
@@Save_Ret: pop di
cmp @@Type_Data,'B' ;位元組類型?
jz $+5
stosw
jmp $+3
stosb
pop bx
pop cx
pop dx
pop ds
clc
ret
@@Return: pop cx
pop di
pop di
pop bx
pop cx
pop dx
pop ds
stc
ret
@@Tmp_Cursor dw ? ;起始游標位置
@@Digits db ? ;十進制數字位數
@@Type_Data db 'B' ;保存的數據類型。B=位元組類型,W=字類型
@@Save_Tmp db 7 p(?)
Input_Dec EndP
; -------------------------------------
; 功能:把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,並送顯示屏顯示
; 入口:AX=二進制數
; 出口:在當前游標位置顯示轉換後的ASCII碼數字
Unsi_Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[5]
mov BYTE PTR [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,ax
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 6 p(?)
Unsi_Dec_ASCII EndP
; -------------------------------------
Input_Score proc Near
mov @@Digits,3 ;十進制數字位數
mov @@Type_Data,'B' ;保存的數據類型。B=位元組類型,W=字類型
lea di,Buffer ;成績保存地址
Output Prompt_Str ;提示輸入成績
@@Input_Scores:call Input_Dec ;鍵盤輸入一個指定位數(N)的十進制數字,將其轉換成二進制數並保存在指定的內存單元
pushf
inc Cursor_Col
call Setcursor
mov dl,20h
call Output_Chr ;顯示一個空格
popf
jnc @@Input_Scores
mov cx,di
sub cx,offset Buffer ;成績個數
mov Counter,cx ;保存
ret
Input_Score Endp
; -------------------------------------
Increase_Sort proc Near
mov BYTE ptr @@Compare[5],76h
jmp @@Sorting
Increase_Sort Endp
; -------------------------------------
Decrease_Sort proc Near
mov BYTE ptr @@Compare[5],73h
@@Sorting: lea si,Buffer
mov cx,Counter ;成績個數
dec cx ;外循環次數
cld
@@Scanning: push cx ;入棧保存外循環次數
push si ;入棧保存數組地址
@@Compare: mov di,si ;當前數組元素地址賦給目的變址寄存器,以備交換之用
lodsb ;將當前數組元素讀入累加器
cmp al,[si] ;當前數組元素與相鄰的下一個數組元素相比較
jae @@NextOne ;若大於或等於,不作數據交換,處理下一個數組元素
xchg al,[si] ;若小於,交換數組元素
stosb ;保存數值較小者
@@NextOne: loop @@Compare ;處理下一個數組元素
pop si ;數組地址出棧
pop cx ;外循環次數出棧
loop @@Scanning ;下一趟比較
mov WORD ptr Cursor_Row,12
call SetCursor ;置游標位置
lea si,Buffer
mov cx,Counter ;成績個數
@@List_Scores: lodsb
xor ah,ah
call Unsi_Dec_ASCII ;把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,並送顯示屏顯示
mov dl,20h
call Output_Chr ;顯示一個空格
loop @@List_Scores
ret
Decrease_Sort Endp
; -------------------------------------
Prompt_Menu db 35 p(20h),'Main Menu',13,10
db 30 p(20h),201,18 p(205),187,13,10
db 30 p(20h),186,' 1. input scores ',186,13,10
db 30 p(20h),186,' 2. increase sort ',186,13,10
db 30 p(20h),186,' 3. decrease sort ',186,13,10
db 30 p(20h),186,' 0. Return to DOS ',186,13,10
db 30 p(20h),200,18 p(205),188,13,10
db 32 p(20h),'Choice(0-3):$'
Cursor_Tmp dw ?
Counter dw ? ;成績個數
Proc_Addr dw Input_Score,Increase_Sort,Decrease_Sort
Prompt_Str db 13,10,10,'Please input scores:',13,10,'$'
Press_Key db 7,13,12 p(10),'The complated. Press any key to exit...$'
Start: push cs
pop ds ;使數據段與代碼段同段
mov ax,3 ;設置25*80字元顯示方式
int 10h
Output Prompt_Menu ;顯示主菜單
xor bx,bx
mov ah,3
int 10h
mov Cursor_Tmp,dx
mov ax,0b800h
mov es,ax ;設置字元顯示方式緩沖區段地址
mov di,35*2+1
mov al,13 ;LightMagenta
mov cx,10
cld
Attribute: stosb
inc di
loop Attribute
mov di,160*2+32*2+1
stosb
add di,159
stosb
add di,159
stosb
add di,159
stosb
mov di,160*7+39*2+1
stosb
inc di
stosb
inc di
stosb
push cs
pop es ;使附加段與代碼段同段
Choice_Func: mov dx,Cursor_Tmp
xor bx,bx
mov ah,2
int 10h
mov ah,1
int 21h
cmp al,'0'
jz Exit_Proc
cmp al,'1'
jb Choice_Func
cmp al,'3'
ja Choice_Func
and ax,0fh
mov bx,ax
dec bx
shl bx,1
call Proc_Addr[bx]
jmp Choice_Func
; -------------------------------------
Exit_Proc: Output Press_Key ;提示操作完成,按任意鍵結束程序
mov ah,1
int 21h
mov ah,4ch ;結束程序
int 21h
Buffer db ? ;數據緩沖區
Code ENDS
END Start ;編譯到此結束
㈦ szBuffer db 'hello world', 0 mov edi, szBuffer xor eax, eax mov ecx, 11 cld rep stosb 三四條的作用
匯編的編譯器有masm tasm nasm。你是初學者就用masm吧 ide就不要用了 有是有 像masmplus radmasm都是不錯的 但是初學的話也用不到。
下面的代碼我編譯過了 可以顯示hello word!圖我就不上了。
data segment
db 'HELLO WORD!'
data ends
assume ds:data,cs:code
code segment
start:mov ax,data
mov ds,ax //置段寄存器ds值
mov ax,0b800H
mov es,ax //置段寄存器es值
mov cx,11 //設置循環次數
xor bx,bx //清bx值
xor di,di //清di值
s1:
mov al,[di]
mov byte ptr es:[bx],al //將hello word!每一位送入顯存
add bx,2 //送下一位
inc di
loop s1
mov ax,4c00h
int 21h //將dos控制交還給command
code ends
end start
用masm編譯 命令是masm+文件名 編譯出obj之後 link+文件名。
㈧ 下面匯編代碼是什麼意思
push ebp
mov ebp,esp ;
xor edi,edi
push edi ;局部變數
sub esp,04h ;局部變數
mov [ebp-08h],63h //c
mov [ebp-07h],6Dh //m
mov [ebp-06h],64h //d
mov [ebp-05h],2Eh //.
mov [ebp-04h],65h //e
mov [ebp-03h],78h //x
mov [ebp-02h],65h //e 局部變數賦值
push 1 ;壓入參數
lea eax,[ebp-08h]
push eax ;壓入參數,字元串的首地址
mov edx,0x7c86114d
call edx ;調用winexec
leave //mov esp,ebp pop ebp
很簡單,就是調用一個API函數,該函數在0x7c86114d。這個和WINDOWS版本有關,在win sp2上是winexec函數,相當於:
winexec("cmd.exe", 1)
㈨ 匯編語言等價替換法
cmp-sub很多很多MOV EBP,ESP--------AND AH,CH
MOV EBX,DWORD PTR DS:[ESI]---------XOR EBX,DWORD PTR DS:[ESI]
sub ebp,7---------- add ebp,-7
add dword ptr ss:[ebp-130],edx -------- adc dword ptr ss:[ebp-130],edx
jnb short fsg2_0.0040015D-------------- ja short fsg2_0.0040015D
sub ebx,eax----------sbb esi,ecx
call 復件_(4).004CF607 ----------------- push 復件_(4).004CF607
SBB ECX,DWORD PTR DS:[ESI+2]----------ADC ECX,DWORD PTR DS:[ESI+2]
XOR [EAX],AL---------------MOV [EAX],AL
JMP NEAR [1071c]---------------------JMP NEAR [1071B]
JNS ---------------POP ECX
JNS -------------- jnc-jnb
JE--------------jnz
JE--------------JB
CMP DWORD PTR DS:[100170A4],0 -------------sub
MOV [EBP-18],ESP-------------------MOV [EBP-18],AH
JNB -----------------JGE
mov [ebp-256], eax -------------adc [ebp-226], eax PUSH EAX PUSH EBX
MOV EAX,[ESP+10] MOV EAX,[ESP+10]
MOV [ESP+10],EBP MOV [ESP+10],EBP
LEA EBP,[ESP+10] LEA EBP,[ESP+10]
SUB ESP,EAX SUB ESP,EAX
PUSH EBX PUSH EDI
PUSH ESI PUSH EAX
PUSH EDI PUSH ESI
MOV EDI,[EBP+10]-------------MOV EDI,[EBP+11]
TEST ESI,ESI-------------- AND ESI,ESI
XOR EAX,EAX------------OR EAX,EAX
--------------------------------------------------
修改jd該為JG還可以看下JB一般都是2個位元組,2進制看下
ascll嗎,基本上還可以修改大小的,還有的是看下跳轉
jb-------------jg
-----------------------------------------------
CALL ---------看到了CALL跟隨進去看NOP就可以把CALL的地址該成NOP
方法2--看下附近有沒有MOV修該成NOP看下可以免殺不。可以的話該XOR
方法3--看附近jnz跳轉該下跳轉的地址/可免殺不/
JNZ 00874E85---PUSH DWORD PTR DS:[88F658]
PUSH下面MOV ECX,88C0AC就可以JNZ該到MOV連接
------------------------------------------------------------
jnz--je-jmp修改中要看下跳的地址是不是很重要說明[1]
JNZ 00874E85--MOV EAX,88B6D0 可以是該成JE
-----------------------------------------------------------
005E 01 ADD BYTE PTR DS:[ESI+1],BL 修改方法
006E 01 ADD BYTE PTR DS:[ESI+1],CH 這樣的成功機會不大看運氣
------------------------------------------------------------
修改這樣的命令要看下 1071C的地址,有沒有,可以修改的
本身怎個命令是不可以修改的
JMP DWORD PTR DS:[1071C]----DS:[1071b]
還可以看下上下有沒有空的代碼來換下位置
------------------------------------------------------------
看下面的命令 觀察上下的指令來修改|
CALL EAX |CALL EBX
MOV DWORD PTR SS:[EBP-1C],EAX |MOV DWORD PTR SS:[EBP-1C],EBX
---------------------------------------------------------------
比效指令 CMP:看下是個比效指令 在看下JNZ條件轉移指令
就是說CMP比效正確就跳那我們可以把CMP用NOP掉在把JNZ該成JMP
不進行CMP比效
CMP ESI,1
JNZ SHORT VVV.1000D793
---------------------------------------------------------------
看下MOV數據傳送指令 很明白就是將ESI給ESP+14
那看下JE跳下去的指令XOR AL,AL沒有用可以NOP掉
MOV [ESP+14],ESI
JE 1000A74B 跳轉去下個指令XOR AL,AL
修改成
MOV ESP,ESI
ADD ESP,14
----------------------------------------------------------------
LEA有效地址傳送指令,遇到這樣的指令不要該他可能會不能運行
LEA ECX,[ESP+10]
修改思路可以看下,上面的指令,如下
MOV EAX,DWORD PTR DS:[EBX]
CMP EAX,-1
JE 100017E9 到達的就是LEA ECX,[ESP+10]
上面可以看出是一系列的比對指令,最後LEA地址傳
可以把MOV CMP JE 三個比對NOP掉在把LEA寫到MOV CMP JE地址上,在用
JMP跳到下個指令運行
----------------------------------------------------------------
修改大小寫在匯編里的變化
------------------------------------------------------------
INS BYTE PTR ES:[EDI],DX 小<l>------------------DEC ESP大<L>
PREFIX ADDRSIZE: 小<g> ----------------INC EDI 大<G> DAA 組合的十進制加法調整指令 --------DAS 減法的十進制調整. =================================================================
XCHG EAX,ESP -----------PUSHFD
數據交換指令 XCHG 標志傳送指令 PUSHF
-----------------------------------------------------------------
ADD [EAX],CH---------------------ADD [EAX],DH
-----------------------------------------------------------------
ADD [EAX],BH 0038 ----------------ADD [EAX+40],AL 0040 40
----------------------------------------------------------------
ADD [EAX+EAX*2+46],AL ----------------ADD [EAX+EAX*2+46],CL
----------------------------------------------------------------
ADD [EAX+40],DL 0050 40 ------------------ 0058 40 ADD [EAX+40],DL
---------------------------------------------------------------------
ADD AH,CH 00EC -----------------00F4 ADD AH,DH
㈩ 匯編中mov esi,eax是什麼意思!!!!
XXXX45A3 lea ecx, [esp+124h]
XXXX45AA push ecx ; IX86ver0.dll
XXXX45AB call ds:LoadLibraryA //載入DLL
XXXX45B1 mov ebp, eax //句柄從eax返回
XXXX45B3 test ebp, ebp
XXXX45B5 jz loc_6FF046F1 //沒成功退出
XXXX45BB push offset aCheckrevision ; "CheckRevision" //函數名
XXXX45C0 push ebp ; hMole //DLL句柄
XXXX45C1 call ds:GetProcAddress //載入函數
XXXX45C7 mov esi, eax //執行地址從eax返回
XXXX45C9 test esi, esi
XXXX45CB jnz short loc_6FF045DF //成功轉移,到正常主力,否則有些出錯處理等操作.
XXXX45CD push offset aErrorFailedT_0 ; "<ERROR: Failed to execute Versioning DL"...
XXXX45D2 call nullsub_1 //錯誤,提示,等等
XXXX45D7 add esp, 4
XXXX45DA jmp loc_6FF046EA
//就存儲空間來說,這里至少少了3~4個指令代碼,因該是些有賦值操作,則帶參數.
XXXX46E6 call esi ; CheckRevision
XXXX46E8 mov ebx, eax
就這些代碼來說CheckRevision是沒有帶參數.