계산기 커스터마이징




오랫만에 리버스 엔지니어링 관련 글을 쓰게 되는 것 같네요 ^^;

오늘의 주제는 1byte Patch 입니다.
저희팀에서 같이 일하는 haru 라는 분이 예전에 간단히 만든건데요.
간단하면서도 나름 재미있는 부분이라 한번 설명해 보겠습니다.

윈도우즈의 계산기 calc 많이들 사용하시죠.

특히 개발자나 리버서들은 16진수 사용이 필수이기 때문에 보기 - 공학용 으로 변경하셔서
많이 사용하시곤 합니다.

사용자 삽입 이미지


근데 공학용 으로 셋팅을 바꾸면 윈도우즈에서 그 설정값을 기억하고 있기 때문에
계속 저런 모양이 되지만

16진수인 Hex 를 선택해도 종료한 뒤 다시 실행하면 Dec 로 바뀌어져 버립니다.
그래서 실행할때 마다 Hex로 바꾸어야 하는....
졸~~ 짜증나죠  ㅅㅂ

그래서 계산기 Dialog 가 셋팅될때 라디오버튼을 아예 Hex가 디폴트가 되도록 바꾸는 방법이
있습니다. 그 방법은? 초기화 코드에서 처음에 UI 설정을 할 때 10진수로 라디오버튼을 셋팅하는
부분을 16진수로 바까버리는 방법입니다.

그 부분을 한번 뜯어가 볼까요.

아래 이미지를 보시면 UI 초기화 루틴인데요,  0x1001DCD 번지의 콜문을 보세요.

사용자 삽입 이미지



여기가 계산기 진법 셋팅하는 루틴입니다. 인자는 진수고요. 인자를 esi에 넣고,
esi를 2, 8, 10, 16과 각각 비교하는 코드가 보입니다. 그 숫자는 2진법, 8진법, 10진법, 16진법에
대한 숫자겠죠 :)



사용자 삽입 이미지


그러므로 0x1001DCB에 들어가는 push 0Ah 를 push 10h 로 변경시켜주면
매번 16진수로 셋팅이 되어서 실행이 되겠죠 0x0A 를 0x10 으로 바꿔주기만 하면 됩니다.
간단한 1 byte patching 이죠 :p

아주 쉬운 내용입니다. 이것으로 앞으로 매번 실행시마다 16진수가 디폴트인 채로 사용할 수
있겠죠. 다음에는 몇가지 코드를 주입해서 쵸큼 더 지능적으로 바꿔보도록 하겠습니다. :)


window31. 2008년 9월.

Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/200 관련글 쓰기

댓글을 달아주세요

  1. 2008/09/16 14:29
    댓글 주소 수정/삭제 댓글
    오옷..계산기 사용하면서 불편하다 생각은 했지만
    패칭해볼 생각은 안해봤었네요ㅠㅠ

    좋은정보감사합니다.
    바로 계산기 패칭한 ㅎㅎ
    • 2008/09/18 02:11
      댓글 주소 수정/삭제
      아랫 분이 한겁니다 ㅎ
      2부는 곧.
  2. 하루
    2008/09/17 08:43
    댓글 주소 수정/삭제 댓글
    ㅊㅈ다!!
    • 2008/09/18 02:10
      댓글 주소 수정/삭제
      자화자찬이냐 ;
  3. 2008/09/17 11:18
    댓글 주소 수정/삭제 댓글
    정작 나같은 사람은 계산기 파일을 어떻게 저런 코드로 열 수 있는지 조차 모른다는...ㅠㅠ(acroedit 같은걸로 여니 이상한 글자만 나와--ㅋ)
    • 2008/09/18 02:10
      댓글 주소 수정/삭제
      머 형은 저런거 안 열어도 돈 마니 버시자나요 ㅎㅎ
  4. neo
    2008/09/19 11:07
    댓글 주소 수정/삭제 댓글
    오~~
    별 생각 못하고 있었는데...

    저도 오늘 출근 하자 마자 해버렸다는...

    멋진 blog 잘 보고 있습니다.

    몰래몰래 눈팅하던.. 나그네 1인.ㅡㅡ
    • 2008/09/21 18:23
      댓글 주소 수정/삭제
      별거 없는 블로그 방문해 주셔서 감사합니다 ^^;
      2부를 써야 하는데 귀차니즘의 압뷁 ;
  5. BlackMusic
    2008/10/12 08:22
    댓글 주소 수정/삭제 댓글
    주인장님 잘봤습니다.^_^)^

    제 블로그에 출처를 남기고 가져가도 되나요..?
    • 2008/10/15 00:53
      댓글 주소 수정/삭제
      네~ 출처만 있다면 어디든 퍼가셔도 괜찮습니다.
      별 대단한 글도 아닌데요 몰..ㅎ

BLOG main image
by window31

카테고리

분류 전체보기 (281)
Reverse Engineering (21)
C, C++ (20)
Kernel (8)
Guitar (19)
잡담 (77)
etc (8)
who am i (8)
보안 이야기 (88)
Tools (3)
월간 마이크로소프트웨어/그.. (28)

글 보관함