ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Process Snapshot
    Python 2015. 1. 20. 19:57

    Pydbg 모듈은 프로세스 스냅샷이라는 기능을 제공한다.


    이 기능은 프로세스를 일시중지시켜 메모리 내용을 얻을수있다.

    또, 얻고나서는 일시정지를 풀어 실행시킬수있다.


    스냅샷을 만들고, 언제든지 프로세스 상태를 생성지점으로 갈수있다.


    vmware에서도 snapshot이라는게 존재한데 이와같은원리로, 찍어놓았다가 언제든지 그 시점으로 돌아갈수있다.


    프로세스 스냅샷을 얻기위해서는 아래와같은것을 구해야한다


    - Thread List

    - Thread CPU Context info

    - Process Memory Page



    위 프로세스 정보를 얻기위해서는 실행중인 프로세스들을 정지시켜야한다.


    그래야하는이유는 프로세스가 실행되면 안에있는 데이터가 계속해서 변경되기때문에 중지하지않으면 데이터가 계속 변경되어 스냅샷을 얻는데 데이터가 엉킬수가있다.


    일시정지 시키기위해서는 아래와같은 함수를 사용한다.


    suspend_all_threads() - 모든쓰레드를 일시중지시킨다.


    resume_all_threads()  - 모든 쓰레드를 재실행시킨다.


    suspend_all_threads()함수로 일시정지시켰다면 process_snapshot()함수로 컨텍스트정보, 메모리정보가 추출하면된다.



    스냅샷을찍고, 그 시점으로 복원하기위해서는 또, 프로세스를 일시정지시키고 process_restore()를 호출하고 스레드를 재실행하면된다.





    'Python' 카테고리의 다른 글

    Immunity Debugger PyCommand  (0) 2015.01.20
    snapshot 결과  (0) 2015.01.20
    Process ID 얻기  (0) 2015.01.20
    Python utils module  (0) 2015.01.20
    Python BOF  (0) 2015.01.20

    댓글

Designed by Tistory.