본문 바로가기

프로그래밍

아이폰 프로그래밍 기본 개념. MVC 아이폰 프로그래밍이라기 보다는 객체 지향적 프로그래밍 기법의 기본적 개념이라고 말하는 것이 정확할듯. MVC Model - View - Controller 가장 기본이 되는 것이 이 모델 - 뷰 - 컨트롤러의 조합. 객체지향 프레임워크를 사용하는 프로그래밍에서는 대부분 지원하는 개념으로 봄. 이 패턴은 사용자인터페이스(UI)와 비지니스로직의 분리를 통해서, 서로간의 독립성을 유지시켜, 수정과 재사용이 용이하게 만들었음. 모델은 어플리케이션에서 사용되는 데이터들을 저장하는 클래스들을 말한다. 뷰라는 것은 흔히 볼수 있는 윈도우나 각종 버튼, 텍스트박스등등의 실제로 보이는 부분을 총칭. 컨트롤러는 이 모델과 뷰사이에서 서로의 입력-출력을 조정하고 제어하게 된다. 아이폰 프로그래밍에서는 이 3가지 개념을 이용.. 더보기
아이폰 프로그래밍의 다른점 몇가지 아이폰 프로그래밍이 기존의 프로그래밍과 다른점 몇가지 (기존 PC에서 실행되는 프로그램과는 다른점을 말한다... 아이폰에게만 해당된다기 보다는 모바일 기기 전체에 해당될듯...) 버전 3.1 까지... 1. 하나의 어플리케이션만 구동이 가능하다... (이것은 이번 ios4 에서 멀티프로세싱이 가능해 지면서, 그나마 제약이 풀린 것중하나다...) 2. 단 하나의 윈도우. 이것이 데스크탑용 어플리케이션과 크게 다른 점중 하나임. 여러개의 윈도우가 생성, 제어되는 기존 프로그램과는 달리 단 하나의 윈도우 안에서 모든 것들이 해결이 되어야 한다. 3. 접근 권한의 제약 이건 권한의 문제... 해킹을 해서 풀릴수 있는 문제이지만, 골치아픈 문제를 야기할수도 있다.. 샌드박스라 불리는 어플리케이션 영역안에서만 모든.. 더보기
Autologin for mac v0.1 윈도우에서 알패스가 있어서 편리했었는데, 맥을 쓰니 도통... 1passwd 라는 것도 있던데... 그냥 간단한 툴을 공부삼아 만드는 중... 아직까지는 리스트에 추가 삭제 하고 자동 로그인 되는 기능만 구현중... 더보기
Cocoa, TextField 리턴 소스. 키보드 리턴 Xcode 상에서 텍스트 필드를 삽입하면, 포커스가 가면 키보드가 활성화 된다. 이후 입력의 과정을 거친후, 엔터키나 리턴키를 눌러줄때 키보드가 사라져야하는데, 이넘을 시켜주는 소스. -(BOOL)textFieldShouldReturn:(NSTextField *)theTextField { if(theTextField == subjectTextField) [subjectTextField resignFirstResponder]; return YES; } 아주 간단한 소스다. if 문의 경우에는 여러개의 textfield가 있을경우 일일이 처리를 해주어야 한다. 더보기
Cocoa 1st sample. 간단한 currency converter 애플문서에 나와있는 샘플코드. 간단하게 환전계산?? 해주는 프로그램이다. 1달러당 가격을 텍스트 필드에 입력받아 계산하는 간단한 프로그램으로, Cocoa 맛보기에는 좋은 코드. 번역중인 글은 http://wiki.osxdev.org/index.php/Xcode에서의_프로젝트_만들기 이곳에 있다. 실제 코딩하는 부분은 아주 적은 예제이며, Xcode의 전반적인 분위기를 익힐수 있다. 코딩하는 파일은 4가지이며, converter.h converter.m converterController.h converterController.m 이정도이다. 아래 파일이 결과물. 기본적인 부분은 생략. 코드 분석 converter.h -------------------------------------------------.. 더보기
Xcode Programming1. Cocoa 살펴보기 cocoadev 님이 작성하신 xcode 강좌가 있어서 링크함. 간단한 코드여서 쉽게 xcode를 살펴볼수 있을듯 텍스트 필드에 입력한 글자를 버튼조작으로 좌우로 움직이게 하는 간단한 샘플이다. http://www.cocoadev.co.kr/183 위 이미지가 실행한 모습. 해당강좌는 링크를 따라가서 볼수 있다. 약간 특이?? 하다고 할까?? 코드중 버튼이미지등은 이미 공유된 이미지를 불러다 쓰게끔 코딩이 되어있다. inspector 창의 attribute 창에서도 버튼이미지등을 불러와 쓸수 있지만, cocodev 님의 댓글에서 보면.. ^^ 마우스보단 키보드가 편해서 코딩을 하셨다고 한다. 해당부분은 각자 개인의 취양대로 더보기
게임오븐 튜토리얼 Advenced 2 Chapter 3: 수치연산 및 충돌체크 게임오븐을 이용하여 간단한 2D 슈팅 게임을 제작하는 방법을 설명합니다. 미사일을 발사하여 움직이는 목표물을 폭파하는 미니 탱크게임을 제작할 수 있습니다. 더보기
게임오븐 튜토리얼 Advenced 1 Chapter 1: 메인 캐릭터 제작/움직임 제어 게임오븐을 이용하여 간단한 2D 액션 게임 용 캐릭터를 제작하는 방법을 설명합니다. 조작 키의 입력에 따라 캐릭터가 이동, 공격, 점프하는 예제가 제공됩니다. (단, 게임오븐1.0beta에서는 패킷 전송량이 많은 게임의 경우 네트워크 싱크 문제가 발생할 수 있습니다. 지속적인 개선 예정입니다.) Chapter 2: NPC 제작/움직임 제어 게임오븐을 이용하여 간단한 2D 액션 게임 용 NPC를 제작하는 방법을 설명합니다. 간단한 AI를 제작하여 메인 캐릭터의 움직임에 반응하는 NPC를 제작할 수 있습니다. 더보기
게임오븐 튜토리얼 아래문서들은 게임오븐 홈페이지 http://idogame.hangame.com 에서 가져온것들임. 게임오븐은 한게임에서 배포하고 있는 게임제작 IDE로 네트워크게임의 제작 및 한게임으로의 배포가 가능하다. 간단한 테이블류 게임으로 부터, 다양한 네트워크게임의 프로그램이 가능할 듯. LUA 라는 스크립트언어를 기반으로 만들었으며, luabind,boost 라는 라이브러리를 지원한다. [참고 링크] Lua 공식 사이트 : http://www.lua.org Luabind 참고 문서 : http://rasterbar.com/products/luabind/docs.html Boost 공식 사이트 : http://www.boost.org 기본적이 사용자 메뉴얼은 http://images.hangame.co.kr/h.. 더보기
PE, OEP, IAT in Wiki Portable Excutable The Portable Executable (PE) format is a file format for executables, object code, and DLLs, used in 32-bit and 64-bit versions of Windows operating systems. The term "portable" refers to the format's versatility in numerous environments of operating system software architecture. The PE format is basically a data structure that encapsulates the information necessary for the Wi.. 더보기
Useful API Break Points 유용한 API 중단점들 Useful API Break Points 저에게는 저작권이 없음을 밝힙니다. http://dual5651.hacktizen.com/new/82 파일 열기(Open) :파일 생성 & 여는데 쓰인다. 16-bit: CreateFile 32-bit: CreateFileA wide: CreateFileW 파일 입출력(Read&Write) :파일을 입출력하는데 쓰인다. ReadFile ;읽기 WriteFile ;쓰기 파일 접근(Access) SetFilePointer ;포인터 조정 시스템 디렉토리 얻어오는 함수 16-bit: GetSystemDirectory 32-bit: GetSystemDirectoryA wide: GetSystemDirectoryW .ini파일과 관련된 함수 :ini 구성설정에 관련된 함수.. 더보기
리버스엔지니어링샘플.abex crack me 시리즈.5. serial crack 이제 마지막 크랙이다. 이번것도 이제까지의 크랙과 그리 다르지 않다. 실행을 하면 나타나는 윈도우. 간단히 보면, 텍스트를 가져와서 비교해서 결과를 내놓는 프로그램일듯 보인다. 윈도우에서 텍스트를 가져오는 함수들은 몇가지가 있는데, 여기서는 GetDlgItemTextA 를 이용했다. 따라서, Ollydbg를 열어서, 해당함수를 추적해 들어가면 간단히 해결이 된다. 사용된 넘들을 찾아보면 쭈~~ 욱.~~ 나온다. 여기서 GetDlgItemTextA를 따라서 들어가 보자. 떡 하니 걸리는 곳에서 브레이크를 걸어주고 실행을 시켜보자. F8로 계속 실행을 시켜보면, 시리얼을 만들어내는데, 마지막 부분에 우리가 입력했던 시리얼과 만들어진 시리얼이 나란히 나타나느것을 볼수있다. 이넘을 다시 넣어주면 끝!! 더보기
리버스엔지니어링샘플.abex crack me 시리즈.4. VB serial crack 이번 예제도 VB로 만들어진 예제이다. PEiD로 확인을 해봐도 되고, OllyDbg로 열어봐도 함수들이 Vb로 되어있다는걸 쉽게 알수 있을듯하다. 간단하게 열어서 보자. text string을 검색해보면 아래와 같이 나오는데, 성공메세지 부분을 따라 들어가 보자. 00401F11 에 성공메세지가 보인다. 00402055 부분에 점프문이 보인다. 간단하게 브레이크를 걸어주고 실행을 눌러보면, 입력부분에서 브레이크된다. Serial을 입력하면, 00402280에서 브레이킹되서 멈추는데, 이를 자세히 따라가다 보면, 00402308에서 serial을 가져오는걸 볼수 있다. 여기선 2208800이 시리얼로 나타난다. 더보기
리버스엔지니어링샘플.abex crack me 시리즈.3. keyfile check 이번 예제는 너무 간단하고, 방법도 여러가지다. 간단하게 점프문을 바꿔도 상관이 없고, 소스에 나타난 파일을 생성해줘도 상관이 없다. 이번예제를 실행시키면, 특정파일을 찾고, 용량을 확인해서 같지 않으면 에러메세지를 뿌려준다. CreateFileA를 이용해서 찾거나, string 을 찾아서, 에러메세지를 찾아내서 따라 들어가도 된다. 기본적으로 보면, 00401060 부터 시작되는 소스가 에러메세지를 뿌려주는 부분이다. 우리가 그냥 실행시켜보면 나타나는 부분들... 바로 위에 보면, 점프되어서 오는 부분이 보인다. 00401037에서 점프되어서 오는 걸 확인할수 있는데, 바로 위에 비교문이 보인다. cmp eax,-1 즉, 파일을 비교해서 없으면 리턴값이 -1이 되는데, 결국 파일이 없으면, 아래 주소로.. 더보기
리버스엔지니어링샘플.abex crack me 시리즈.2. serial crack 이번 샘플은 아주 간단하다. 이름에 따라서 인코딩된 암호가 다른데, 이를 크랙한다. 주의 깊게 봐야할건 결국 어떻게 암호가 생성이 되던지, 결국에는 입력된 암호와 실제 인코딩된암호를 비교하는 부분을 파악을 해서 그 값을 찾아내면된다. 이 예제는 VB로 만들어 져 있었다... 먼저 파일의 압출을 풀어서 실행해본다. 아무 이름이나 넣어도 되나, 여기선 Name에는 test, Serial 에는 aaaaaa 를 넣어봤다. 역시 에러메세지가 뜬다. 이런 메세지창이 뜰때 그 문구들을 잘 보아두어야 한다. 결국 저 문구를 찾아내어서 해당 코드를 잡는게 빠르다... PEiD로 해당 파일을 본결과다. VB로 만들어져 있고, 압축등은 되어 있지 않다. OllyDbg를 실행시켜서 CPU부분을 본다. 일단 에러메세지를 찾아본.. 더보기