본문 바로가기

[PROGRAMMING]/▶Python

리버싱 관련 어셈명령어 관리 프로그램 asmdic

어느날 리버싱을하면서 모르는 명령어가 발견이 됬다

분명이 몇번 봤던 명령어인데 머릿속에 들어오질 않았었던 것이다.

그래서 그때부터 인터넷과 어셈관련 문서들을 참조해 해결하곤 했었다.

이런일이 자주 일어나다보니(머리가 나빠서 OTL )아예 내가 한번 봤던 명령어는 내가만든 프로그램에 전부 저장해놓고 다음번엔 명령어 검색만으로 찾아내는식으로 만들어야겠다고 생각이 들었고 대충 어떤식으로 동작할지 그려보고 바로 코딩했다.

간략히 설명 하겠습니다.

 

개발언어 : python

개발도구 : pyscripter

 

 

어셈명령어는 정말 많다. 그걸 다외우려면 고생좀해야될것이다. 그리고 그걸 다외우고 다니는사람은 없을것 같은데.. 있을수도있다ㅎㅎ

무튼 저런식으로 명령어들이 있다. 저명령어가 뭐하는건지 찾아내려면 인터넷을 뒤지고 또뒤지고 뒤저서 자료를 모아야한다. 그런데 그걸 한번에 기억하는 천재가있으면 괜찮지만

사람은 잊어버릴수밖에없다 그럼 그때 똑같은 방법그대로 익혀야한다. 매번 인터넷과 문서뒤지기도 귀찮다.

 

 

예외처리좀 해야되는데 빨리써야함으로 그냥 기능만 정상작동되게 만들어놓고 사용중이다.

asmdic은 정말 간단하다.

 

<Command모드 기능설명>

FIND : ex:)FIND모드로 진입한다.

del : 데이터 사전 파일내용을 전부 삭제한다.

open : 데이터 사전 파일을 연다.(읽기전용이므로 수정이 불가능하다. 단! mod 명령어를 이용해 수정가능)

add : 데이터 사전파일에 어셈명령어를 추가한다.

mod : 하.. 스샷에 mod관련 설명이 없네요. 데이터사전파일은 읽기전용이라 수정이 불가하지만 mod명령어로 수정은 가능합니다.

 

<Find모드 기능설명>

exit: find모드에서 exit는 command모드로 돌아간다.

all : 데이터 사전에 있는 내용을 모두 출력한다.

find > [어셈명령어] : ex) find > jnz라고 입력하면 jnz관련 명령어를 출력해준다.

 

 

간략히 이런 기능의 프로그램이다.

겉으로 보이기엔 간단하지만 여기에 나름 속도 향상을 위해 깨알같이 MMF(Memory Map File) 기능으로 구현하였다.

그 이유는 출력을 예로 들겠다.

간단히 real10을 출력한다.

이때 일반적이면 컴퓨터 -> 레지스터 -> 메모리 -> 하드디스크 에서 파일에 엑세스하여 real10정보를 가저온다. 파일 크기가 작다면 체감상모르겠지만 데이터가 쌓이고 하다보면

굉장히 느려질것이다.

반면 mmf로 사용하게되면  컴퓨터 -> 레지스터 -> 메모리 -> 하드디스크에서 1번만 엑세스하여 메모리에 올려버린다.

그러고나면 컴퓨터 -> 레지스터 -> 메모리 이상태에서 데이터에 액세스 할 수 있기 때문에 빠른 데이터 처리가 가능하기 때문이다.

몇년전에 시스템프로그래밍 공부했던게 스치듯 기억나 적용해본 케이스이다.

 

 

그리고 데이터가 저장 될때는 위와같이 저장되며, 내용을 추가할때는 2라인과 같이 날짜와 적용한 시간을 넣어준다.

해당 파일은 읽기전용으로 저장된다.

마지막으로 데이터를 찾을때 대소문자 상관없이 검색할 수 있게 구현해놨다.

 

 

 

'[PROGRAMMING] > ▶Python' 카테고리의 다른 글

파이썬 정규식  (0) 2013.11.06
크롤러 제작중 beautifull soup 치명적인 버그 발견  (3) 2013.10.17
pyScripter theme  (0) 2013.09.29
Parameter.exe 점검도구  (0) 2013.09.26
nat ip 확인 프로그램  (0) 2013.09.23