일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- function
- PORTG
- C++
- php
- 파일존재
- 단축키
- android studio
- halliday
- mysql
- array
- selectc
- application.mk
- 0x
- Post
- cocos2d-x
- unalias
- 하이퍼 터미널
- 점점변하는값
- 현재언어
- mathemetica
- Call
- solution
- 강좌
- Avr
- Get
- SQL
- is_array
- Join
- Java
- 월별 카운트
- Today
- Total
목록컴퓨터 이야기 (89)
코딩도사의 코드정리
이전 글과 이어서 이번엔 그냥 단순히 다른 프로세스에 DLL 파일을 집어넣는 작업을 해보겠습니다. DLL 파일은 아무 DLL 파일이든지 상관없으니까 #include #define MB_OUT MB_OK BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { HANDLE hThread = NULL; switch( fdwReason ) { case DLL_PROCESS_ATTACH : MessageBoxA(0, "dll 진입", "dll 진입", MB_OUT); break; } return TRUE; } DLL 프로젝트로 다음과 같은 코드를 넣고 컴파일을 합니다. 여기서 나온 파일을 dllproject.dll 라고 치고 c..
후킹은 원래 진행되어야하는 프로세스를 중간에 낚아채서 내가 원하는 코드를 집어넣는 작업을 말합니다. 다른 프로그램에서 MessageBox 를 호출 하는 순간을 잡을 수 있다. .!! 흥분되지 않습니까? Win32 API 하에서 다른 프로세스나 전역적으로 호출되는 API 함수를 후킹하는것을 API Hooking 이라고 함. 어디에 어떻게 쓰이느냐. 사람마다 응용하기 나름인데 디버깅 관점에서 보면 API 함수로 호출되는 파라메터의 값을 뿌려줄 수도 있고, 리버싱에서 보면 중간에 추가적인 기능을 다른 프로그램에 삽입할 수 있다는 것. 전체적인 구조를 보면 MessageBox 가 호출이 되면 my.dll 에 있는 MyMessageBox 가 호출 되고 MyMessageBox 의 형태는 MyMessageBox { ..
김창희 - 하드웨어한경수 - 프로그래밍 알디 : 잘가네, 좀 어설프긴 해도 친구 : 지금 여기서 좀만 다듬으면 되겠다 알디 : 커브돌 때 좀 더 빨리 돌아야 하나? 빨리 돌면 더 안되지 않나? 친구 : 그치 친구 : 이제 길만 외면 된다 알디 : 건전지잡고 따라가야되는건 쫌..ㅋ 친구 : 난 이거 최고 마지막은 무선으로 되야한다 전기공급이. 무선으로 된다든데 그게 알디 : 야 반대방향으로 돌아보자. 친구 : 아 또 안되노 아 ~ 알디 : 아 왜 이래 어? 친구 : 건전지 묶있다 알디 : 어~ 꺼라꺼라 ㅇㅋㅇㅋ 부..
매크로를 쓰면 된다(ALT+F11) Public Module SwitchCHPP Sub OpenPartnerFile() Dim filename As String Dim partnerFilename As String filename = DTE.ActiveDocument.FullName If (filename.EndsWith(".h")) Then partnerFilename = filename.Substring(0, filename.Length() - 2) + ".cpp" End If If (filename.EndsWith(".cpp")) Then partnerFilename = filename.Substring(0, filename.Length() - 4) + ".h" End If DTE.ItemOpera..
피보나치 수열이 천자리수가 되는 첫번 째 항은 무엇인가? 가 문제인데 음...... 생각 많이 하다가 도저히 안되겠어서 시간이 느리더라도 프로그램으로 구해보려고 했다. 하지만 예상밖으로 1초만에 항을 구할 수 있었고, 답은 4000항 정도쯤. 근데 자리수가 바뀔려면 몇번째 항을 넘어가야 바뀌는걸까 궁금해서 코딩을 해봤다. BigInteger fibo[] = new BigInteger[10000]; fibo[1] = new BigInteger("1"); fibo[2] = new BigInteger("1"); BigInteger cmp = new BigInteger("1"); for(int j=1; j
필기.txt 의 일부 내용을 가져온다면 판정상의 문제가 있음. 해당 스텝 진행이 아니면 아예 판정이 안뜸. mp3 재생하는 부분 싱크 맞추기 코드 추가할려면 해야됨. SIGNLE, DOUBLE 속성 얻어오는데에 LoadKSF 를 쓰고 있는건 낭비임. 고쳐야됨. RhythmNerd::DrawNotes 여기에 중복되는 코드조각들이 너무 많음 (firsttime < starttime*10 상태에서 배속 조절하면 문제가 발생함. // ok 해당 노트에서 딱 |E4| 하면 걸쳐야ㄷ외는데 몇픽셀 이격됨 // ok 다른 KSF 하다가 다른 KSF 하면 이전거에 영항 받아져있음 static 문제로 보임 // ok setKSF 하는 부분에서 부터 createTable // 탐닉 완료 ㅋㅋ drawNote 까지 좀 이상함..
Non Greedy repeats 기본적으로 정규식은 greedy 방법을 사용한다. greedy 방법은 가능한한 최대의 입력을 취급한다는 이야기다. non-greedy 방법은 가능한한 최소의 입력을 받는다. abcdaXbcdabcdX 와 같은 문자가 있으면 (a.+X).* 로 매치했을 때 abcdaXbcdabcdX 가 매치되지만 아래와 같은 (a.+?X).* 같은 표현으로 매치하면 abcdaX 가 매치된다. *? +? {n,}? {n,m}? 이까지는 이해가 가는데 ?? 라는 표현도 있음. 예를 들어 표현하면 a??c 를 했을 때 abc444ac 라는게 있다면 abc 를 찾는게 아니고 ac 를 찾음 가능한한 짧은걸 찾음. Back references std::string s("apple banana"); ..
군 입대를 시작으로 사실상 손을 못대게 된 프로젝트 .. 지금이야 언제든지 손대는게 가능하지만 별다른 요청이 들어오지 않아서 방치중.
API 후킹이 뭐냐면, 말 그대로 다른 프로그램이 특정 API 를 호출할 때 낚아채는 기법을 말함 아래 void main() 에서 핸들값을 적절한 다른 값으로 바꾸세요. 아래 소스 방법은 Dll Injection 임. 메모리에 로드된 import table 을 바꿔치기 해서 내가 원하는 dll 을 호출하게 만듬. #include #include // DLL Inject : 다른 프로세스의 주소 공간에 특정 DLL을 넣는다. void DllInject(DWORD pid, char* path) { HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, pid); // 내 프로세스에 있는 KERNEL32.DLL의 주소와 LoadLibrary의 주소를 구한다. HMODUL..
Reverse Engineering 이 뭐냐면... 소프트웨어 공학중에 하난데 이미 만들어진 프로그램을 역으로 풀어서 어떤 원리로 작동되는지 탐구하고 분석하는것을 말함. 순수한 학술 목적으로 발전할 수도 있지만 음지의 기술쪽으로 발달하면 흔히 말하는 크랙이나 키젠을 만들어내는쪽으로도 나올 수 있음. 주로 C/C++ 등으로 만든 Native Code 를 어셈블리어로 번역한 후 디버깅을 하면서 프로그램을 들여다 보는 쪽으로 나가지 않을까 생각중. 여러분 관심 있나요? ㅋㅋ 저도 잘 모르지만 잘해볼게요. 한 때 관심을 가지고 깔짝였는데 아마 깊이 있는 내용은 쓰지 못할거에요.
한국에서 http://msdn.com 로 들어가면 한국페이지로 자동으로 리디렉션 될텐데요. 사실상 볼거 없고 -_- http://msdn.microsoft.com/en-us/library 잌ㅋㅋㅋㅋㅋ
class CClass { private: mutable int h; public: CClass() { } void func() const { h=0; } void func2() {h=0;} }; void main() { CClass t1; t1.func(); const CClass t2; t2.func2(); }const 인데도 변경된다는 말... 사용빈도가 지극히 낮다. -_-; 그치만 클래스를 설계할 때 이 변수는 내부적으로 바뀌면서 쓰이고 const 로 선언 된다고 해도 활용이 가능한 변수를 지칭할 때 쓰임. C++ 기본서에도 나오는 키워드지만 모르는 사람들이 은근 많음.
GetOpenFileName GetSaveFileName BOOL GetOpenFileName( LPOPENFILENAME lpofn ); BOOL GetSaveFileName( LPOPENFILENAME lpofn ); 먼저 GetOpenFileName 을 소개하고자 한다. 다이얼로그박스 초기화 구조체, 이 구조체는 사용자의 파일선택정보를 저장한다. 리턴 값 사용자가 한 파일이나 OK 버튼을 클릭하면 0이 아닌값을 리턴한다. 취소나 실패했을 땐 0을 리턴한다. 음 다음으로 OPENFILENAME 구조체를 설명한다. typedef struct tagOFN { DWORD lStructSize; HWND hwndOwner; HINSTANCE hInstance; LPCTSTR lpstrFilter; LPTST..
Self documenting Q.void f() { TextHandler t; t.sendText("Hello, world", true); } class TextHandler { public: void sendText(const std::string& msg, bool sendNewLine); }; 위의 코드에 사용된 boolean 타입에는 어떤 문제가 있을까요? C/C++ Users Journal에 실렸던 Self documenting과 관련된 내용을 소개합니다. A. 문제의 코드 중 함수 f()를 먼저 살펴보겠습니다. 만약 TextHandler class가 다른 사람이 만들어 놓은 코드이거나 자신이 작성했더라도 어느 정도 시간이 흐른 경우라면 함수 f() 안의 t.sendText() 함수 호출 중 ..
자바에서는 수명이 다한 클래스의 할당도 어딘가에서 참조 하고 있다면 계속 물고 늘어지는 경향이 있다 A 라는 클래스가 있으면 A foo; { A bar = new A(); foo = bar; } // 여기서 bar 의 수명은 끝이남. foo.call(); // 과연 에러가 날까? 에러가 안난다. 컴파일에러 및 런타임 에러도 나지 않는다. 자바에서는 내부적으로 참조 카운터를 써서 주소를 다른곳에서 참조하고 있다면 파괴되지 않고 계속 쓰는거 같다. 만약 C++ 였다면? 런타임 에러가 낫겠지. 나는 이것이 좋다고만 보지 않는다. 변수 스코프를 저기서 끝내도록 했으면 프로그래머가 그 뒤론 이 변수를 더 이상 쓰지 않겠다는 의미로 블록을 썼을텐데. 모르는 다른곳에서 나도 모르게 이것을 쓰고 있다면 자칫잘못하면 치..