A Gangster World

  • 홈
  • 태그

float 2

Float 상수의 컴파일-타임 최적화

도저히 메모리를 변조할 수가 없는 상황에서 해킹이 발생하였다. 예를들어 이런 코드다. float foo(float input) { if (input > 0) return input * 10.0f; else return input * -20.0f; } void main() { float f = 0; scanf("%f", &f); // 사용자는 항상 올바른 입력을 한다고 가정 float g = foo(f); printf("%f", g); } 예제이므로 코드 내용에는 큰 의미를 부여할 필요는 없음 foo 함수의 input이 매번 새로 입력되고 새로 계산되므로 리턴 값은 사용자가 입력한 값의 10배 혹은 -20배가 되어야 한다. 하지만 10이나 -20 이외의 수가 곱해져 나왔다면? 이건 무언가 잘못된 것이다. ..

Game Dev/Article 2011.03.31

Float의 메모리 내용을 Float 값으로 변환하기

OllyDbg 등 외부 디버거로 테스트 할 때 메모리가 어떤 값에서 어떤 값으로 변했는지 알기가 힘들어서 급하게 발코딩 했음... printf("Input Float's 4Bytes(=8Chars) Memory in Hex\n"); printf("ex) 0010FA42\n\n\t"); char mem[12] = {0}; scanf( "%c%c%c%c%c%c%c%c", mem+0, mem+1, mem+3, mem+4, mem+6, mem+7, mem+9, mem+10 ); char num[4] = {0}; for (int i = 0; i < 4; ++i) { num[i] = (char)strtoul(mem+(i*3), NULL, 16); } float f = 0.0f; memcpy(&f, num, size..

Game Dev/Binary 2011.03.30
1
더보기
프로필사진

  • 분류 전체보기 (275)
    • Game Issue (48)
      • News (35)
      • Movie (13)
    • Game Dev (150)
      • Article (59)
      • Binary (26)
      • Scrap (24)
      • Work Log (22)
      • StarCrush (6)
      • CannonballDefen.. (2)
      • WarSimulation (11)
    • Hobby (29)
      • Football (7)
      • Game (18)
    • Daily (48)
    • Private (0)

Tag

Wii, 1Q84, 읽은 책, WebGame, Enblic, UnReal, google, Dekaron2, UE, 게임 소스, K리그, D2, IT 서적, PS3, game engine, wow, Xbox360, FreeType, 게임개발자, KOEI,

최근글과 인기글

  • 최근글
  • 인기글

최근댓글

공지사항

  • To do list

페이스북 트위터 플러그인

  • Facebook
  • Twitter

Archives

Calendar

«   2026/01   »
일 월 화 수 목 금 토
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

방문자수Total

  • Today :
  • Yesterday :

Copyright © Kakao Corp. All rights reserved.

티스토리툴바