PC리버싱/(망)프로그래머를위한 리버싱 기초

개발자도 할수있다 리버싱 강좌2강(어셈블리어와기본구조)

Lamed_Dhhd 2020. 6. 27. 10:03
반응형

도구들을 다운로드하세요

https://dhhd-goldmilk777.tistory.com/186

 

초보자도 할수있다 리버싱 2강(리버싱 도구들 총정리)

이제 대충 리버싱의 뜻을 알았으니 도구들을 알아보죠 일단 개발자는아니지만 코드를알기위해서 C언어 개발을 해보기위한 도구인 VIsual Studio 2019나 Dev C++부터설명하죠 VIsual Studio 2019 https://visuals

dhhd-goldmilk777.tistory.com

일단 어셈블리어 정의부터보시죠

어셈블리어(영어: assembly language) 또는 어셈블러 언어(assembler language) 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍 저급 언어이다.

대충 어셈블리어란 컴퓨터가 사용하는 저급언어다

저급언어와 고급언어가 있는데 그건 구분법이간단해요

고급언어의경우

냉장고에서 물을꺼내와! // 라는명령을하면 물을꺼내오지만 내부적으로 저급언어로

저급언어

냉장고로 간다

냉장고 문을 잡는다

냉장고 문을 연다

냉장고안에서 물을 찻는다

물을 잡는다

냉장고 문을 잡는다

냉장고 문을 닫는다

주인에게 간다

물을 준다

이렇게 새부적으로 나와있는게 저급언어입니다

우리가 분석할게보이죠

이제우리는 저과정을 보면서 고급언어인 냉장고에서 물을가져오는구나 그런걸 알면됩니다

컴퓨터의 기본구조부터 알아보죠

CPU와 그래픽카드 램 SSD 메인보드등이 있습니다

CPU 계산을하는 장치입니다

출처http://blog.daum.net/dasomcap/829

CPU는 대충 이렇습니다

계산을하는 ALU라는것안에

레지스터라는게 있구나 현재는 여기까지만

그리고 추가로 알아야하는건

컴퓨터는 위에서 아래로 명령을 작동합니다

아까 저급언어처럼 순서대로 내려오면서 작동합니다

Assembly language

-어셈블리어란 컴퓨터(엄밀히는 CPU)가 이해할 수 있는 기계어 명령들을 사람들이 보다 쉽게 이해할 수 있도록 간단한 니모닉 언어(mnemonic symbol, 연상문자)로 나타낸 것. 이 어셈블리어들은 기계어와 1:1로 매칭된다.

( 기계어 한 바이트당 하나의 니모닉 언어를 가지나 자주 쓰는 기계어의 경우 둘 이상의 바이트가 매칭되기도 한다.)

기계어 어원 나모닉 언어(어셈블리어)
B8 01000000 Move eax 1 mov eax,1
E9 JUMP MUST  jmp
38C0 compare eax,eax cmp
C3 Return ret

영어 어원을 알면 어셈을알기쉬우니 문서를만들겠다

https://dhhd-goldmilk777.tistory.com/191

 

어셈블리어 기원및 뜻정리

MOV                            Move data between general-purpose registers; move data between memory and general- purpose or segment registers; move immediates to general-..

dhhd-goldmilk777.tistory.com

 

반응형