반응형

Reverser's Page

woodmann.com
+Fravia 의 홈페이지 중 일부인 포럼공간이다. 전세계적으로 가장 유명한 곳이다. 포스팅 또한 상당히 전문적인 지식이 담겨있다. 제가 생각하기에 리버싱에 관련된 그리고 시스템의 깊은 곳을 이해하는데 최고의 사이트가 아닌가 합니다.
 
AntiCrack.de
+Fravia 의 포럼에 필적하는 곳이다. 주옥과 같은 자료들이 존재하니 꼭 들어가보시길 권해드린다. 포럼, protools, codebreak magazine, protools, reverse academy, crackme, daemon's hompage, APJ(assembly programming journal) 로 구성되어 있다.
oPEN rEVERSE fORUMS
이름 그대로 리버싱의 열린 공간이며 상당한 고수분들이 계신다.
BiW Reversing
상당히 유명한 Detten과 같은 리버서들이 있는 곳이다. 양질의 문서를 제공한다.
Reverse Engineering Team
그 유명한 CrackZ 와 같은 리버서들이 있는 곳이다.
 
UNPACKING GODS
이 홈피의 상위주소를 가보시면 Absolute Lock 의 홈피로 이어진다. vladmir, yates, NtSC, SAC 와 같은 시스템에 관한 고수들의 홈피이다.
W A S M . R U
러시아 사이트로 디버깅에 필요한 자료에 대한 업데이트가 뛰어나며, 양질의 문서를 제공한다.
www.exetools.com
너무도 유명한 자료실이다. 각종 툴 및 프로그램, 전자도서를 구할 수 있다. 크랙 튜토리얼도 있으나 크랙 자체에만 치중한 경향이 있어 그다지 좋은 자료라고는 생각하지 않는다.
http--crackz.reteam.org-
CrackZ 의 홈피이다. dongle와 FlexLM 과 같은 전문적인 프로텍터에 관한 독보적인 사이트이다.
SVKP's page
SVKP 상용 프로텍터의 홈페이지다. 해당 프로텍터를 광고하려는 건 절대 아니고, 좋은 글들이 있으니 anti-debug 에 관심 있으신 분들은 읽어보시기 바란다. 또한 개발자가 쓴 "cracking proof of your software" 라는 책도 굉장히 좋으니 구하셔서 읽어보시길.
__ULTRASCHALL__HOME__OF__THE__STARS__
DAEMON 의 홈페이지로 IA-32 Interrupt Mechanism을 이용한 여러 anti-debug 소스를 제공한다.
ka0s.net
PDA, celluar phone, Xbox 와 같은 모바일 콘솔에 대한 리버싱을 다루는 곳이다.
RW5jcnlwdGlvbiAmIEtleUdlbg==  
키젠으로 유명하신 x3chun 님의 홈피이며 직접 코딩한 여러 유명 암호 알고리즘에 관한 소스를 제공하고 있다.
 
Vivaman's page
비바맨님의 홈페이지다. 홈피를 방문해보면 전지현을 향한 그분의 마음을 알 수 있다 ㅋㅋ
Le4rN TO Cr4cK
크랙미를 미러링해주며 QnA 게시판을 제공하고 있다. 초기에 비해 수준이 낮아지고 있다. junk advice를 올리는 사람들 때문에 짜증나기도 하지만, 하루에 한번 꼭 들리는 곳이기도 한 곳이다.

      k3nny's web v2.0 - welcome!
      크랙도 세월에 따라 필요한 툴들이 달라지는 법인데, 케니는 무엇이 필요한 것인지 잘 아는 듯 하다. 정말 알짜 툴들만 모아놓았다.

http--kickme.to-mxbnet
실전 크랙을 보여주는 곳이다. 크랙을 막 시작하셨다면 이곳을 추천해드린다. 하지만 이분은 대략 간단명료하게 글을 쓰는 스탈이라서 스스로 도전해보실 분만 가보시길.
 
http--66.98.132.48-yates-
시스템에 대한 정보 및 IDT 와 관련된 정보의 디버깅 방법을 알려준다. 또한 Xbox와 같은 콘솔의 IDA용 sig를 공개하고 있다. 대단한 넘이다.
Stone's WebNote
유명 리버서의 홈피.
DataRescue
자타가 공인하는 최고의 디스어셈블러 IDA 의 홈페이지다.
The IDA Palace
유용한 IDA 플러그인 및 IDC 스크립트가 있다.
mammon_
윈도우즈와 리눅스 양쪽의 시스템을 두루 정통한 mammon의 홈페이지다.
Quine's IDA Page
바이너리 분석의 대가인 Quine의 홈페이지다.
      MackT
      impReconstructor로 유명한 UCF 팀의 MackT의 홈페이지
      The home of RTA
      그 유명한 squidge가 만든 RTA. 쓰는 사람 거의 못봤는데, 이거 굉장한 툴임엔 틀림없다.
 
 

Programmer's & Specific Topic

Assembly Language Journal --> 저의 착각이 있었습니다. APJ는 anticrack.de에서 새로운 둥지를 틀었으며 이슈가 발행되었습니다.
현재 더 이상의 이슈는 발행되지 않고 있으나 어셈에 관한 정수를 맛볼 수 있는 곳이다.
Hello, Coder !
ElicZ의 홈페이지로 그의 환상적인 소스를 제공한다. 아마 ElicZ만큼 깊은 곳을 아는 사람도 드물 것이다.
http--y0da.cjb.net-
y0da는 PE editor로 유명한 리버서이다. ElicZ 만큼은 아니지만 그또한 대단한 프로그래머다.
IceExt
Stenri 홈피로 소프트 아이스 플러그인, IceExt를 개발하고 있다.
Iczelion's Win32 Assembly Homepage
두말할 나위없는 어셈블리의 바이블과 같은 곳이다. MASM을 유지보수하는 공동개발자이기도 하다.
windows disassembler
Sang Cho 님의 홈페이지다. 한국분이시지만 사이트는 영어이다. +Fravia의 홈페이지에도 당당히 소개되고, 디스어셈블러를 개발하는 사람들에게 표준화된 소스와 instruction set을 제공해주신다. 정말 멋진 곳이다.
Jeremy Gordon's page
GoDebug 로 유명한 제레미 고든의 웹페이지. SEH 에 관한 글 및 정말 멋진 곳이다. 어셈을 배우기를 원하시는 분은 이곳을 꼭 가보시길.
 
Linkers and Loaders
COFF 타입의 링커와 로더에 대한 문서를 공개하고 있다.
데브피아 - IT 포탈 사이트
리버서에게 오픈 리버스 포럼이 있다면 프로그래머에겐 데브피아가 있다. 프로그래머들의 열린 공간이다. 어셈은 다루지 않는다 --;
환영합니다. 어셈블리 개발자 그룹 어셈러브(AsmLove)입니다
어셈블리어를 다루는 곳이다. 자료가 많기는 하지만 활성화 되었다고 보기는 어렵고, 주인장님과 유명한 minz님이 꾸려나가고 계시다.
한글 PHP Manual (2000-08-01)
제목 그대로.
Endi Co. Ltd.
디바이스 드라이버 관련 강좌를 제공하며 특히 VxD에 대한 강좌가 있다.
8051
8051 기판 조립에서부터 제어까지 관련자료를 제공하고 있다. 나처럼 컴공이나 전자공학과와 전혀 상관없는 사람이 8051을 처음 접할 때 유용한 사이트.
하제 소프트 - 윈도우즈 디바이스 드라이버 개발업체
보호모드와 같은 운영체제에 대한 전문적인 정보를 제공한다.
1년 후에도 내용이 살아있는 잡지
마소 잡지이다. 잡지를 사지 않더라도 웹에서 유용한 글을 읽을 수 있다.
29A Labs
국제적인 바이러스 잡지이다. 얼마전엔 모바일 바이러스를 만들어내기도 했다. 바이러스 잡지이긴 하나 소개되는 기술들은 상당히 실용적이다. 정말 보물과도 같은 소스코드들을 제공한다.
Welcome! (VX heavens)
바이러스 잡지의 대부. 그외의 유명 바이러스 매거진에 대한 아카이브를 제공.
 
Internals.com - The best online resource for system programmers
api monitor의 정석과 같은 API32를 개발하신 분의 홈피이다. 양질의 글과 유용한 툴을 제공한다.
Software Design - Windows Software by Gregory Braun
유용한 툴을 만들어 제공하고 있다.
dongle
동글 HASP에 대한 자료가 있다.
_♡신의키스♡_
HTML에 관한 독보적인 존재!
성미시리얼 방문을 환영합니다
정말 멋진 곳이다. 이곳에서는 전자회로, rs485 통신 및 pic 16 시리즈에 대한 자료를 제공하고 있다.
John the Ripper password cracker
유닉스 시스템의 해쉬에 대한 무차별대입공격 프로그램으로 유명한 곳. 모르는 분 없으시리라.
Obfuscated-HTML De-obfuscation Tools
웹소스의 암호화 복호화를 제공해준다. 상당히 유용하다.
Apache-Kr.org
아파치 웹서버에 대한 문서를 제공해준다.
데이터베이스를 사랑하는 사람들의 모임 데이터베이스 사랑넷
데이터베이스에 대한 방대한 문서를 제공. 머부터 봐야할 지 엄두가 안나는 곳.
 
+ 여리의 작업실 - www.zap.pe.kr +
이곳을 꼭 가보시길 권해드린다. 드라이버 프로그램을 하시는 분이신데 정말 대단하다는 생각밖에 들지 않는다. 굉장하다. 솔직히 부럽다 크~
 
Ntsc´s Homepage
링크한 문서인지 직접 작성한 문서인지 모르겠으나 암튼 괜찮은 곳이다. ANTI-BP, Xbox에 대한 자료를 제공한다.
illmob.org
여러 가지 자료를 제공.
암호의 세계
암호학에 대해 재미있게 소개하고 있는 곳이다.
 
MSDN Home Page
두말 할 나위없는 마이크로소프트웨어의 MSDN 홈페이지다.
Interrupt Mechanism and Application of Intel IA32 Architecture
anti-debug를 알고 싶은 사람이라면 이것을 꼭 이해해야 한다.
디버깅의 모든것, DebugLab.com
리버서가 아닌 프로그래머에게 필요한 디버깅에 대해 논하는 홈페이지다.
블록암호 알고리즘
굉장한 곳이다. 거의 모든 암호 알고리즘에 대한 소스와 설명, 소금줄과 같은 링크를 제공해준다.
CryptoClub
국내 암호관련 보안 동아리이다. 역시 대단한 곳이다.
Intel Pentium Instruction Set Reference (Basic Architecture Overview)
인텔 CPU의 명령어 셋을 온라인 상에서 제공하는 곳. 좋긴한데 뎁따 느리다. 누군가 미러링 좀 해줬으면.
Schneier.com
BlowFish 알고리즘을 개발하신 분의 홈피이다.
 
     동우의 HomePage - Welcome
     이동우님의 홈페이지. 주옥과 같은 자료의 링크를 제공해주심. 근자엔 리버싱과 관련된 문서를 공개하심. 웹페이지를 깔끔하게 만드는 방법을      아시는 분이다.
       
     sysinternalsl
     매우 유명하신 Mark Russinovich님과 어떤 분이 공동경영하시는 홈피이다. File Monitor 이외에도 시스템 관련한 보물과도 같은 자료들을 무료      로 공개해주는 곳이다. 얼마간의 소스와 양질의 문서또한 제공하고 있다.
     http://math88.com.ne.kr/crypto.htm
     정상조 님의 홈. 암호학에 관련해서 실제 DES가 어떻게 돌아가는지 단계별로 보여준다.
 
Networker's page
 
.[packet storm].
각종 버그리스트와 유용한 툴, exploit을 제공한다. 부연설명 없어도 워낙 유명한 곳이라서. 너무 실전에 치우쳐 있어 그다지 좋아하지 않는다. 그래도 어쩔 수 없이 들리게 되는 곳 --;
HACKER4U
승!님이 운영하시는 해킹 포탈 사이트이다. 역시 고수분들이 계신다. 버뜨. 자료는 별로없다.
KHDP.ORG Home Page
보안과 관련된 문서를 제공하는 곳이다. 양질의 문서가 많다.
KLDP.org
리눅스 관련 문서의 한글화 프로젝트를 하는 곳이다.
Hack This Site
웹해킹 워게임 사이트이다.
Korea Hacke.net
웹해킹 워게임 사이트. 웹해킹을 처음 해보신다면 이곳을 추천.
Nikto
웹상의 취약점 스캐너인 닉토를 win32용으로 포팅하신 분의 홈피이다.
 
Beist's page
웹해킹으로 유명하신 승진님의 홈피. 승진님은 자신의 노하우를 공개하는데 아낌이 없는 분이다.
 
wowhackers
양질의 문서를 제공.
seaofglass
유리바다님의 홈피이다. 지금은 바쁘신 듯. 이분은 여러분야게 관심이 많아 분류가 어렵다 ^^;
정보보호기술훈련장에 오신것을 환영합니다.
분석을 다루고 있다.
해커스랩 프리해킹존에 오신걸 환영합니다.
국내최초 워게임을 제공한 것으로 유명하다.
 
CULT OF THE DEAD COW
유명한 CDC의 홈피.
core-sdi
core-sdi 팀의 홈피이다. 총 4개의 멤버 페이지로 나뉘어지니 들어가보자. 그 중 하나는 잘 알려진 badcoded의 홈피이다.
phrack
프랙은 이슈화가 되었거나 그럴 만한 가치가 있는 기술들이 올라오는 곳이다. 예전에 우리나라 분도 '설마'라는 유틸로 글을 올렸던 기억이 난다. 프랙에 대한 설명은 굳이 드리지 않아도 잘 아실 것 같아 줄임.
 

 

Research 

ISI Web of Knowledge [v2.0]
저널 검색 사이트이다. 연구를 하는 사람이라면 당연히 들르게 되는 곳.
Sigma-Aldrich Home Page
전세계에서 가장 큰 시약판매회사이다. 에누리 해주는 법이 없다. 나쁜넘들.
THIC
내가 가장 가고 싶은 회사인 Lucent 그룹의 홈페이지다.
KOSEN 21
한국계 연구자들의 모임 사이트이다. 경험의 부족으로부터 나오는 궁금증이나 구하기 힘든 논문을 얻고 싶을 때 이용한다. 한국계 과학자들 중 현재 활발히 활동 중이신 30~40 분들이 많이 오시는 까닭에 전문적인 답변을 구할 수 있는 곳이다.

 

 

Oasis

###안녕하세요 김유식의 디시인사이드입니다!!!###
모르는 분 없으시길.
jonyTaro
잔잔한 카툰을 제공해주신다.
Red Hot Chili Peppers
그루브라는 단어를 연상케 하고 이해하게끔 만드는 그룹의 팬페이지.
인터넷의 시작 - 벅스
벅스없는 세상은 상상도 할 수 없다~~~
카툰 다간다
당신 이곳을 모르는가!
행복한 유머, 웃긴대학에 오셨습니다..
웃대. '웃자'가 무슨 뜻인지 아신다면 당신은 웃대인.
 
나비효과 - The Butterfly Effect
그룹사운드 '나비효과'의 홈피다. 첫사랑이란 노래는 정말 쵝오다.
 
CNN.com
전세계 최대의 뉴스기업.
강도영의 만화이야기
강풀순정만화로 유명하신 강도영 작가님 홈페이지. ㅋㅋ 라는 단어밖에 안나온다 ㅋㅋ
team5p
최고의 플래쉬 팀. 연예인지옥을 모르신다면 꼭 보시길.
레이싱걸들 사진
      이 여인네들은 어디서 왔단 말인가 쩝.
 

 

Search Engine

Google
최고의 검색엔진.
네이버
궁금한게 있을 땐 언제나 네이버에게.
네이트
최고의 메신저를 만들어 낸 곳. 난 라이코스 이메일을 사랑한다.
AltaVista  
Babel Fish
다양한 언어번역을 무료제공.
 
      Google
      해커전용 구글.
 

e-BOOK

Electronic books downloads
Food for Thought
computerbooks.web.com
FreeTechBooks - free online C-C++ programming books for beginners
Hacker Smiling Newbie Information Resource
Index of -files
BOOKS
The Hackers Playground

[출처] Reverser's Page |작성자 몽구스

반응형

사용자 삽입 이미지

PE라고 하는 윈도우 하에 실행되는 모든 실행파일의 헤더(프로그램이 실행될때 전체 프로그램 구조의 미니맵과 같은 역할을 하는 것을 PE라고 한다.) 를 읽어들여서 분석하고, 손상된 PE가 발견되었을경우 Rebuild해주는 막강한 기능을 가지고 있다.

반응형
 
사용자 삽입 이미지

UPX Shell 은 UPX 의 EXE 파일 버전입니다.

UPX Shell 은 EXE 나 DLL 과 같은 파일의 용량을 최대 90%까지 압축하며, 압축 해제도 가능합니다.

압축시 용량은 팍~ 줄어들고 실행 타임이 약 0.1초 늦어진다는 점을 감안하면 엄청난 압축 능력인거죠~

ㅎㅎ 이제 제 Portable 프로그램들이 완벽을 향해 달립니다~
반응형
물론 UPX압축형태는 UPX Uncompressor로 풀수 있다. (당연한이야기지만;)
하지만 우리는 손으로 직접풀기를 원한다.

손으로 직접푸는 압축을 MUC라고 부른다. (Manually UnPack)

OllyDBG로 타깃프로그램을 불러왔다. 경고가 뜬다. 내용을 읽어보니 타깃프로그램이 압축되어서 잘못된 정보가 보여질수 있다 라고 한다. 이런경우 100% 압축이다.

압축이 되어 있을경우 우선 PEID툴로 해당 타깃프로그램을 불러온다. 여기서 PEID 아래쪽 설명을 보면 압축방식이 나오는데 UPX 샬라샬라 라는 글자가 보인다.!! 자 이런경우 우리는 압축방식이 UPX로 되어 있는것임을 알수 있다.

이제 압축을 풀기위해 도구가 필요하다. OllyDBG, OllyDump, Lord PE, 그리고 방금 사용한 PEID

우선 OllyDBG로 타깃을 연다. 그러면 오류가 뜨고 계속 할래 말래 물어본다. 여기서 계속 진행함을 선택하면, 잘못된 코드 정보가 보인다. 그 이유는 압축된 코드를 다시 어셈블리어로 번역한것이라 잘못된 정보라는것이다. 여기에서 스크롤을 내려 가장 아래쪽 코드를 보자. 00,00,00,00 ........
무수히 많은 00이 보인다. 그럼 00이 시작되는 곳의 경계를 찾아보자.

UPX방식은 압축후에 압축전 진입포인트를 파일 마지막에 기록하는것 같다. 00은 파일에서 데이터가 없는부분이다. 자 그럼 파일 마지막의 00이 아닌곳을 찾고 코드를 보자.

JMP 명령이 보이는가? 00이 아닌코드들 위로 3줄만 훑어보면 바로 JMP명령이 보일것이다. UPX형태의 압축은 압축을 풀고나서 파일 마지막의 JMP문을 통해 압축푼 프로그램으로 접근한다. 그렇기에 JMP구문의 주소를 따라가면 되는것이다.

우선 파일 마지막의 JMP구문에 F2를 눌러 브레이크포인트(앞으로 브포)를 걸어준다. F9키를 누르면 브포 영역까지 순차적으로 진행한다. 진행중에 브레이크포인트로 잡아놓은 부분에 멈췄다.

우선 JMP루틴에서 멈췄으므로 따라가보자. F8 키를 누르면 한단계 진행할 수 있다. F7은 함수가 있을때 함수 안으로 따라 들어가기, F8은 함수를 따라 들어가진 않고 현재 블락에서 한단계 진행을 의미한다.

방금전 JMP루틴에서 한단계를 진행하고 나면 어떤 코드와 맞닥들이게 된다. 여기에서 마우스 오른쪽 클릭을 하자. 그러면 ADD-IN 항목을 찾을수 있는데 그곳에서 OllyDump를 선택한다. OllyDump 는 Tool 설명에서 이미 설명했다. 새로 뜨는 창에서 Rebuild Import 체크를 없애준다. 그리고 바로 덤프 시작.

설명을 하자면 우리는 압축루틴을 그냥 F9로 다 스킵해버리고 압축이 메모리에 풀린 어느 시점에 JMP명령을 브포걸어서 잡아놓고, 그 JMP명령을 따라 시작되는 압축풀린 프로그램의 첫 코드부터 쭈우우우욱 덤프해버린 것이다.

자 그럼 덤프해버린 프로그램을 exe파일로 저장했다면, 실행해보자. 띠딩! 오류가 난다. 물론이다. 프로그램 엔트리 포인트(진입점)을 찾지 못하기 때문이다. 그럼 이 진입점을 어떻게 찾아주느냐?

Lord PE 라는 프로그램을 사용하겠다. 이 프로그램역시 Tool 설명에서 설명했다.
이 프로그램으로 망가진 exe를 고쳐보자. 우선 Lord PE프로그램을 실행하고, Rebuild PE 버튼을 누르고, exe파일을 넣어보자. 메시지가 뜨면서. 완료..

exe파일을 실행해보자. 여기서 잘 실행된다면 우리는 압축된 프로그램을 압축 풀어버린것이다.
반응형

실험 실행파일 : CrackMe2.exe

사용자 삽입 이미지
[Before Unpacking]


첫번째 : upx 툴을 이용한다.
가장 빠르고 쉬운 방법..


명령 프롬프트에서 다음과 같이 입력한다.

upx -d [filename]

끝~ -_-; 같은 파일이름으로 unpacking 되어 저장된다.


두번째 : ollydbg 이용하기.


맨 뒤쯤 가면 jmp 문이 있다. 그곳에 bp를 걸고 실행(F9)한다. F8로 넘어가보면 그곳이 OEP이다. 이곳에서 우클릭하고 Dump debugged proccess를 선택하고 [ ] Rebuild Import의 체크를 해제한다. 그리고 Dump.

이제 Lord PE로 와서 Rebuild PE를 누른후 덤프한 파일을 선택한다.

사용자 삽입 이미지

 

[After Unpacking]

반응형


 비쥬얼베이직으로 만들어진 프로그램이 있는곳에

 폴더 안에 있는 vbaStrCmp2.dll, vbaStrCmp2.ini, msvbvm60.dll를 넣어주시고 실행하면..

 스트링 비교하는게 다 보입니다..

사용자 삽입 이미지


반응형

vbde... 0.85 by iorior

vb 실행파일에 대한 정보 알려주는 프로그램
반응형
Programming from the Ground Up 책의 번역 위키이다...

한번쯤 시간 내서 읽어 보도록 하자..

http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Assembly/Documents/ProgrammingGroundUp/index.html
반응형

   

                                             

Data Transfer

MOV

Move

데이터 이동 (전송)

PUSH

Push

오퍼랜드의 내용을 스택에 쌓는다

POP

Pop

스택으로부터 값을 뽑아낸다.

XCHG

Exchange Register/memory with Register

첫 번째 오퍼랜드와 두 번째 오퍼랜드 교환

IN

Input from AL/AX to Fixed port

오퍼랜드로 지시된 포트로부터 AX에 데이터 입력

OUT

Output from AL/AX to Fixed port

오퍼랜드가 지시한 포트로 AX의 데이터 출력

XLAT

Translate byte to AL

BX:AL이 지시한 데이블의 내용을 AL로 로드

LEA

Load Effective Address to Register

메모리의 오프셋값을 레지스터로 로드

LDS

Load Pointer to DS

REG←(MEM), DS←(MEM+2)

LES

Load Pointer ti ES

REG←(MEM), ES←(MEM+2)

LAHF

Load AH with Flags

플래그의 내용을 AH의 특정 비트로 로드

SAHF

Store AH into Flags

AH의 특정 비트가 플래그 레지스터로 전송

PUSHF

Push Flags

플래그 레지스터의 내용을 스택에 쌓음

POPF

Pop Flags

스택으로부터 플래그 레지스터로 뽑음

Arithmetic

ADD

Add

캐리를 포함하지 않은 덧셈

SBB

Subtract with Borrow

캐리를 포함한 뺄셈

DEC

Decrement

오퍼랜드 내용을 1 감소

NEG

Change Sign

오퍼랜드의 2의 보수, 즉 부호 반전

CMP

Compare

두 개의 오퍼랜드를 비교한다

ADC

Add with Carry

캐리를 포함한 덧셈

INC

Increment

오퍼랜드 내용을 1 증가

AAA

ASCII adjust for Add

덧셈 결과 AL값을 UNPACK 10진수로 보정

DAA

Decimal adjust for Add

덧셈 결과의 AL값을 PACK 10진수로 보정

SUB

Subtract

캐리를 포함하지 않은 뺄셈

AAS

ASCII adjust for Subtract

뺄셈 결과 AL값을 UNPACK 10진수로 보정

DAS

Decimal adjust for Subtract

뺄셈 결과의 AL값을 PACK 10진수로 보정

MUL

Multiply (Unsigned)

AX와 오퍼랜드를 곱셈하여 결과를 AX 또는 DX:AX에 저장

IMUL

Integer Multiply (Signed)

부호화된 곱셈

AAM

ASCII adjust for Multiply

곱셈 결과 AX값을 UNPACK 10진수로 보정

DIV

Divide (Unsigned)

AX 또는 DX:AX 내용을 오퍼랜드로 나눔. 몫은 AL, AX 나머지는 AH, DX로 저장

IDIV

Integer Divide (Signed)

부호화된 나눗셈

AAD

ASCII adjust for Divide

나눗셈 결과 AX값을 UNPACK 10진수로 보정

CBW

Convert byte to word

AL의 바이트 데이터를 부호 비트를 포함하여 AX 워드로 확장

CWD

Convert word to double word

AX의 워드 데이터를 부호를 포함하여 DX:AX의 더블 워드로 변환

Logic

NOT

Invert

오퍼랜드의 1의 보수, 즉 비트 반전

SHL/SAL

Shift logical / arithmetic Left

왼쪽으로 오퍼랜드만큼 자리 이동 (최하위 비트는 0)

SHR

Shift logical Right

오른쪽으로 오퍼랜드만큼 자리 이동 (최상위 비트 0)

SAR

Shift arithmetic Right

오른쪽 자리이동, 최상위 비트는 유지

ROL

Rotate Left

왼쪽으로 오퍼랜드만큼 회전 이동

ROR

Rotate Right

오른쪽으로 오퍼랜드만큼 회전 이동

RCL

Rotate through Carry Left

캐리를 포함하여 왼쪽으로 오퍼랜드만큼 회전 이동

RCR

Rotate through Carry Right

캐리를 포함하여 오른쪽으로 오퍼랜드만큼 회전 이동

AND

And

논리 AND

TEST

And function to Flags, no result

첫 번째 오퍼랜드와 두 번째 오퍼랜드를 AND하여 그 결과로 플래그 세트

OR

Or

논리 OR

XOR

Exclusive Or

배타 논리 합 (OR)

String Manipulation

REP

Repeat

REP 뒤에 오는 스트링 명령을 CX 0이 될 때까지 반복

MOVS

Move String

DS:SI가 지시한 메모리 데이터를 ES:DI가지시한 메모리로 전송

CMPS

Compare String

DS:SI ES:DI의 내용을 비교하고 결과에 따라 플래그 설정

SCAS

Scan String

AL 또는 AX ES:DI가 지시한 메모리 내용 비교하고 결과에 따라 플래그 설정

LODS

Load String

SI 내용을 AL 또는 AX로 로드

STOS

Store String

AL 또는 AX ES:DI가 지시하는 메모리에 저장

Control Transfer

CALL

Call

프로시저 호출

JMP

Unconditional Jump

무조건 분기

RET

Return from CALL

CALL로 스택에 PUSH된 주소로 복귀

JE/JZ

Jump on Equal / Zero

결과가 0이면 분기

JL/JNGE

Jump on Less / not Greater or Equal

결과가 작으면 분기 (부호화된 수)

JB/JNAE

Jump on Below / not Above or Equal

결과가 작으면 분기 (부호화 안 된 수)

JBE/JNA

Jump on Below or Equal / not Above

결과가 작거나 같으면 분기 (부호화 안 된 수)

JP/JPE

Jump on Parity / Parity Even

패리티 플레그가 1이면 분기

JO

Jump on Overflow

오버플로가 발생하면 분기

JS

Jump on Sign

부호 플레그가 1이면 분기

JNE/JNZ

Jump on not Equal / not Zero

결과가 0이 아니면 분기

JNL/JGE

Jump on not Less / Greater or Equal

결과가 크거나 같으면 분기 (부호화된 수)

JNLE/JG

Jump on not Less or Equal / Greater

결과가 크면 분기 (부호화된 수)

JNB/JAE

Jump on not Below / Above or Equal

결과가 크거나 같으면 분기 (부호화 안 된 수)

JNBE/JA

Jump on not Below or Equal / Above

결과가 크면 분기 (부호화 안 된 수)

JNP/JPO

Jump on not Parity / Parity odd

패리티 플레그가 0이면 분기

JNO

Jump on not Overflow

오버플로우가 아닌 경우 분기

JNS

Jump on not Sign

부호 플레그가 0이면 분기

LOOP

Loop CX times

CX 1감소하면서 0이 될 때까지 지정된 라벨로 분기

LOOPZ/LOOPE

Loop while Zero / Equal

제로 플레그가 1이고 CX≠0이면 지정된 라벨로 분기

LOOPNZ/LOOPNE

Loop while not Zero / not Equal

제로 플레그가 0이고 CX≠0이면 지정된 라벨로 분기

JCXZ

Jump on CX Zero

CX 0이면 분기

INT

Interrupt

인터럽트 실행

INTO

Interrupt on Overflow

오버플로우가 발생하면 인터럽트 실행

IRET

Interrupt Return

인터럽트 복귀 (리턴)

Processor Control

CLC

Clear Carry

캐리 플레그 클리어

CMC

Complement Carry

캐리 플레그를 반전

CLD

Clear Direction

디렉션 플레그를 클리어

CLI

Clear Interrupt

인터럽트 플레그를 클리어

HLT

Halt

정지

LOCK

Bus Lock prefix

 

STC

Set Carry

캐리 플레그 셋

NOP

No operation

 

STD

Set Direction

디렉션 플레그 셋

STI

Set Interrupt

인터럽트 인에이블 플레그 셋

WAIT

Wait

프로세서를 일지 정지 상태로 한다

ESC

Escape to External device

이스케이프 명령


Push: sp 레지스터를 조작하는 명령어중의 하나이다.

스택에 데이터를 저장하는데 쓰인다.

ex:) Push eax

:스택에 Eax의 값을 스택에 저장한다.

ex:) Push 20

:즉석값인 20을 스택에 저장한다.

ex:) Push 401F47

:메모리 오프셋 401F47의 값을 스택에 저장한다.


Pop: 이또한 sp 레지스터를 조작하는 명령어중 하나

이다. 스택에서 데이터를 꺼내는데 쓰인다.

ex:) Pop eax

:스택에 가장 상위에 있는 값을 꺼내애서 eax에 저장

주의점: Push 의 역순으로 값은 스택에서 Pop 된다.


Moo 메모리나 레지스터의 값을 옮길떄[로 만들떄]

쓰인다.

ex:) Mov eax,ebx

:ebx 레지스터의 값을 eax로 옮긴다[로 만든다].

ex:) Mov eax,20

:즉석값인 20을 eax레지스터 에 옮긴다[로 만든다].

ex:) Mov eax,dword ptr[401F47]

:메모리 오프셋 401F47 의 값을 eax에 옮긴다[로 만든다]


Lea: 오퍼렌드1의 값을 오퍼렌드2의 값으로 만들어준다.

ex:) Lea eax,ebx

:eax레지스터의 값을 ebx의 값으로 만든다.


Inc: 레지스터의 값을 1증가 시킨다.

ex:) Inc eax

:Eax 레지스터의 값을 1증가 시킨다.


Dec: 레지스터의 값을 1 감소 시킨다.

ex:) Dec eax

:Eax 레지스터의 값을 1 감소 시킨다.


Add: 레지스터나 메모리의 값을 덧셈할떄 쓰임.

ex:) Add eax,ebx

:Eax 레지스터의 값에 ebx 값을 더한다.

ex:) Add eax,50

:Eax 레지스터에 즉석값인 50을 더한다.

ex:) Add eax,dword ptr[401F47]

:Eax 레지스터에 메모리 오프셋 401F47의 값을 더한다.

반응형
The.Art.Of.Assembly.Language.(Windows.Edition)  (영문) PDF The.Art.Of.Assembly.Language  (영문)  HTML
그외 어셈자료..
pcasm-book.pdf

+ Recent posts