리버스 엔지니어링 0x02
자주 사용하는 어셈블리 명령
명령어
예제
속뜻
설명
Mov
Mov EAX,ECX
EAX=ECX
EAX에 ECX 값 저장
ADD
ADD EAX,ECX
EAX+=ECX
ECX 값에 EAX 값 추가
SUB
SUB EAX,ECX
EAX-=ECX
EAX 값을 ECX 값에서 빼기
INC
INC EAX
EAX++
EAX 값 1 더하기
DEC
DEC EAX
EAX–
EAX 값 1 감소
LEA
LEA EAX,[ECX+4]
EAX=ECX+4
ECX+4의 값을 EAX로 내보내기
CMP
CMP EAX,ECX
if(EAX==ECX) ZF=1else ZF=0
두 값을 비교하여 비교한 결과에 따라 EAX가 ECX와 같으면 ZF=1 EAX가 ECX와 같지 않으면 ZF=0
TEST
TEST EAX,EAX
if(EAX==0) ZF=1else ZF=0
값을 0과 비교하여 비교 결과에 따라 EAX가 0이고 ZF=1이 0이 아니면 ZF=0
JE(JZ)
JE 04001000
if(ZF==1) GOTO 04001000
ZF=1이면 04001000으로 건너뛰기
JNE(JNZ)
JNE 04001000
if(ZF==0)GOTO 04001000
ZF=0이면 04001000으로 건너뜁니다.
JMP
JMP 04001000
GOTO 04001000
무조건 04001000으로 점프
CALL
CALL lstrcmpW
lstrcmpW 호출
PUSH
PUSH 00000001
창고에 보관하다
POP
POP EAX
EAX 레지스터에 체크 아웃 및 가져온 값 저장
Notice: 같은 레지스터 두 개가 있는test 명령을 보면 보통 조건 지점으로 레지스터 값이 0이면 ZF=1로 간단하게 이해할 수 있다.
JNZ와 TEST 명령을 결합하면 다음과 같습니다.
test eax,eax
jnz 04001000
어휘 인코딩을 배우는 데 있어서 나는 이전에 전문적인 블로그를 써서 구체적인 조작과 사용 도구를 설명한 적이 있다.참조:http://blog.csdn.net/chengyu779394084/article/details/50325993
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.