티스토리 뷰

오늘 파일을 보다가 그냥 이런 놈도 있구나 싶어서 몇 자 적는다.

워낙에 이런 애들은 보안 프로그램을 우회하는 여러가지 방법을 이용하겠지만,
이런 것도 있구나 싶었다.

아래는 오늘 본 사례이다.



다른 곳에서 0x1001E4AB로 JMP가 되었는데, 오자마자 PUSH 5F
바로 밑, 0x1001E4B0로 다시 JMP, 여기서는 XOR 5F
결국, Stack의 맨 위에는 NULL 값이 들어가 있게된다.

장난해?;;;

파라메터로 NULL이 들어가 있는 상태로 PathFindNextComponentA 를 호출한다.

LPTSTR PathFindNextComponent(
     LPCTSTR pszPath
);

파라메터가 하나만 있는 API이다.
이런 녀석들이 이런 방식으로 이용하는 API들은
지금까지 대부분 파라메터가 하나만 있다.

웬지 모르게, 코드 자동 생성기가 있을 것으로 보인다.
뉘집 자식인지 몰라도 똑똑한 듯 ;;  > _< b

        MOV     EDI, DWORD PTR DS:[0100201A0h]
        JMP     @1601_1001E544               ;<= Jump/Call Address Not Resolved ; 1601.1001E544
@1601_1001E4AB:
        PUSH    05Fh
        JMP     @1601_1001E4B0               ; 1601.1001E4B0
        PUSH    EAX
@1601_1001E4B0:
        XOR     DWORD PTR SS:[ESP], 05Fh
        CALL    NEAR DWORD PTR DS:[01002001Ch] ; SHLWAPI.PathFindNextComponentA
                            결국   PathFindNextComponent(NULL);  한 결과
        RETN

이렇게 하면, Code 에뮬레이션을 하는 경우 Exception이 발생할 수 있다고 한다.

이상!!

'보안 > 분석' 카테고리의 다른 글

[노트] msvcrt.c - 검색해서 구한 소스  (0) 2010.03.16
Internet Explorer 관련 레지스트리 - 수집  (1) 2010.02.25
[PEiD] Command Line Option (올레~~~)  (0) 2009.12.03
BinDiff v2  (0) 2009.11.05
NEW : BinText 3.03  (0) 2009.10.18
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함