- lumenFC 축구 동호회
- 마샤블
- 웍스프레소
- 소셜@나눔<소셜미디어나눔연구소>
- 리버스코어
- LAIN
- LAIN 이사한 블로그
- TeamCR@K
- Sunnyday
- 보안 걱정이
- 리버싱 학습
- securityfirst_jo
- Practical Security Blog
- 세상, 그 유쾌한 전장
- 악성코드관련블로그
- Back to the Mac
- 패킷분석입문
- PacketInside / 네트워크 패킷 분석 블로그
- 침해사고분석 :: 네이버 블로그
- 소프트웨어 기술자경력관리시스템
- JK.Moon
- 자바 온라인학습
- Ezbeat의 도서관
- Dreams of a Final Journey
- IT eBooks - Free Download - Bi…
- Index of /madchat/coding/rever…
- Security Insight
- Reversing war game
- 고길고기
- clamav
- zerowine
- FORENSIC-PROOOF
- jquery 예제
- 조대협의블로그
- 국가과학기술인력개발원 교육포털 사이트
- 빅데이터, splunk
- 지식을 연주하는 사람
- malware analysis system
- 건국대토익스피킹
- 소프트웨어개발 및 협업도구
kisoo
_vsntprintf 함수에서 '%' character 인식 문제 본문
포맷스트링을 통한 삽질....
아래 함수는 많은 매개변수를 받아서 하나의 스트링으로 만들어주는 일반적인 함수 로직이다.
CString WriteFormatString(const char * _Format, ...)
{
TCHAR text[1024*10]={0,};
va_list args;
va_start(args, _Format);
_vsntprintf(text, sizeof(text), _Format, args );
return text;
}
//HTML 원본파일을 오픈하여 모두 읽어 들인다.
if(file.Open("D:\\releasenote_cloud2.html",CFile::modeRead,NULL))
{
UINT length=(UINT)file.GetLength();
char* ch_temp = new(char[length+1]);//파일 길이만큼 할당
ZeroMemory(ch_temp,length+1);//메모리초기화
file.Read(ch_temp,length);
//HTML 파일에서 읽어들인 각 변수에 해당 값을 넣는다.
//HTML 파일 안에는 변수값을 받을 곳에 %s 가 있다.
sHtml = WriteFormatString(ch_temp,"MF-12-TEST","2013-08-02 12:30",sCollect1,sCollect2,sCollect3,sCollect4,sMal1,sMal2,sMal3,sMal4);
//변수 값을 넣은 후 다시 다음과 같이 저장한다.
if(file.Open("D:\\test2.html",CFile::modeCreate|CFile::modeWrite,NULL))
{
file.WriteString(sHtml);
file.Close();
}
}
문제는 여기서 시작된다.
HTML 안에는 % 문자열이 많이 들어 있는데. WriteFormatString 함수를 거치면 %가 모두 사라진다.
삽질좀 한 후에 찾아낸 것은 다음과 같다.
저기에 보면 %% 연접해 있을 때 CHARACTER '%' 로 인식된다.
HTML 파일 내에 내가 선언한 %s 를 제외한 % 문자는 모두 %% 로 변경 한 후 하니까 정상적으로 저장이 된다.
삽질 2시간 했음~