Hex Fiend의 Binary Template로 길이가 일정하지 않은 문자열을 감지합니다.

macOS용 바이너리 편집기Hex Fiend는binary Templates(beta) 기능을 가지고 있어 바이너리의 읽기와 쓰기를 돕는다.
Template에서 Tcl는 이진 구조를 다음과 같이 설명합니다.
# 1 byte の Header と 8 bytes の Name から成るバイナリの例
uint8 "Header"
str 8 "utf8" "Name"
길이가 고정되지 않은 필드가 나타나면 약간의 노력이 필요하다. 예를 들어 길이가 정해지지 않은 경우+ 뒤에 있는 문자열을 알고 있다면 다음과 같다.
proc str_ul { follower encoding label } {
    set found 0
    set p 0
    while {![end]} {
        set x [hex 1]
        incr p 1
        if {$x == $follower} {
            set found [expr $p - 1]
            break
        }
    }
    move [expr -1 * $p]
    if {$found} {
        str [expr $p - 1] $encoding $label
    }
}

str_ul 0x2B "utf8" "String"
str eof "utf8" "Remaining"
위의 내용을 템플릿으로 저장하고 464F4F2B424152 결과를 읽습니다.

좋은 웹페이지 즐겨찾기