2011-01-10 2 views
1

콘솔 프로그램을 "해독"하려고 시도 중입니다. 문제는 줄 바꿈 (\r\n)을 인쇄 할 수 없다는 것입니다. disassebler와 가 나는 장소를 발견하고 바이너리 편집 : 내가 말했듯이printf()를 호출하여 실행 파일을 편집하십시오.

push 4ad0eb46      ; the string (let's pretend "Hi guys") 
push 4ad0eb80      ; and the format ("%s") 
call near ds:[<&msvcrt.printf>] ; call printf 
jmp 4ad0eb4f      ; skip data 

; now here I coded the strings 

mov ds:[4ad289ec],eax    ; and here the program resumes 

, 내가 줄 바꿈을 인쇄 할 수 있습니다. 나는 "%s\r\n"이되어 C로 할 것이므로 을 형식 문자열로 인코딩하려고 시도하고 "Hi guys\r\n"을 인쇄하고 문자열 자체를 인코딩 ("Hi guys\x13\x10")하고 "Hi guys"과 2 개의 이상한 문자를 얻는다면 아마 ASCII 0x13 및 0x10의 표현.

+0

정확히 "이상한 캐릭터"가 무엇입니까? 당신에게 이상한 것처럼 보이면 다른 사람에게 유용한 정보가 될 수 있습니다. –

+0

일종의 '!!' '|>'와 (과) 비슷한 삼각형 | – BlackBear

답변

2

문자열에 문자를 직접 삽입하는 두 번째 시도가 올바른 방법이었습니다. 그러나 잘못된 문자를 사용했습니다. ASCII의 반환/줄 바꿈 수는 13 및 10 (십진수)이며 0x0d 및 0x0a (16 진수)입니다. 다른 문자 인 0x13 및 0x10을 사용했습니다.

문자 번호는 Code page 437의 표를 참조하십시오. 문자 19 및 16 (십진수)은 실제로 오른쪽을 가리키는 삼각형과 이중 느낌표입니다.

+0

고마워, 고정. 이제 작동합니다. ;) – BlackBear

1

줄 바꿈 (Windows의 경우)은 \r\n입니다.

+0

작전! 내가 편집 할게. ;)하지만 어쨌든 작동하지 않습니다 .. – BlackBear

관련 문제