stpcpy

원형 : char *stpcpy( char *dest, char *src );

헤더 : string.h

기능 : 문자열 src를 문자배열 dest로 복사한다. dest 의 길이가 src 보다 작은 경우 dest 뒤의 인접 데이터가 파괴된다.

리턴 : dest + strlen(src)의 번지를 리턴

 

 strcat

원형 : char *strcat( char *dest, const char *src );

헤더 : string.h

기능 : 문자열끼리 연결한다. dest의 널문자 위치에 src가 붙는다. dest의 길이가 ( dest 문자열 + src 문자열 ) 길이보다 작을 경우 인접 데이터가 파괴된다.

리턴 : dest의 번지가 리턴

 

 strchr

원형 : char *strchr( const *src, int c );

헤더 : string.h

기능 : 문자열 배열 src 내에 문자 c가 있는지 검사하고 있을 경우 문자 c가 있는 번지를 리턴. 널문자도 문자로 취급하기 때문에 널문자를 넣으면 첫번째 널문자의 번지를 리턴한다.

리턴 : 문자열 src내에서 발견된 문자 c의 포인터. 발견되지 않을 경우 NULL 리턴

 

 strcmp

원형 : int strcmp( const char *src1, const char *src2 );

헤더 : string.h

기능 : 두 개의 문자열을 대소 비교함. 이 함수를 사용하여 두 개의 문자열이 같은 문자열인지 아닌지를 비교할 수 있다. 같을 경우 0, 다를 경우 양수나 음수의 값을 리턴.

리턴 : src1 < src2  인 경우 음수 리턴

         src1 = src2  인 경우 0 리턴

         src1 > src2  인 경우 양수 리턴

 

 strcmpi

원형 : int strcmpi( const char *src1, const char *src2 );

헤더 : string.h

기능 : 두 개의 문자열을 대소 비교함. 하지만 대소문자를 구분하지 않는다. 이 함수를 사용하여 두 개의 문자열이 같은 문자열인지 아닌지를 비교할 수 있다. 같을 경우 0, 다를 경우 양수나 음수의 값을 리턴.

리턴 : src1 < src2  인 경우 음수 리턴

         src1 = src2  인 경우 0 리턴

         src1 > src2  인 경우 양수 리턴

 

 strcoll

원형 : int strcoll( char *src1, char *src2 );

헤더 : string.h

기능 : setlocale 함수에 의해 지정된 비교방식에 따라 두 개의 문자열을 비교

리턴 : src1 < src2  인 경우 음수 리턴

         src1 = src2  인 경우 0 리턴

         src1 > src2  인 경우 양수 리턴

 

 strcpy

원형 : char *strcpy( char *dest, const char *src );

헤더 : string.h

기능 : 문자열 src를 문자배열 dest로 복사한다. dest 의 길이가 src 보다 작은 경우 dest 뒤의 인접 데이터가 파괴된다.

리턴 : dest의 번지가 리턴

 

 strcspn

원형 : size_t strcspn( const char *src1, const char *src2 );

헤더 : string.h

기능 : 문자열 src1 중에 문자열 src2에 들어 있지 않은 문자들이 연속해 있는 길이를 구한다. 문자열 s2에 없는 문자들로 구성되어 있는 문자열 s1 내의 세그먼트를 찾아내고 그 세그먼트의 길이를 리턴.

예를 들어 src1 = "123456" 이고 src2 = "0486" 이라면 src1 내에서 src2 의 문자인 4가 나오기 전까지의 길이인 3을 리턴한다.

리턴 : 찾아낸 세그먼트의 길이.  만약 0을 리턴한다면 세그먼트가 발견되지 않은 것이다.

 

 strdup

원형 : char *strdup( const char *src );

헤더 : string.h

기능 : 새로운 메모리를 할당하고 문자열 src를 복사한 후 그 포인터를 리턴한다. 종료 시 반드시 복제된 문자열은 메모리를 해제해 주어야 한다.

리턴 : 복제된 문자열의 포인터를 리턴. 메모리 할당에 실패한 경우 NULL을 리턴.

 

 _strerror

원형 : char *_strerror( const char *src );

헤더 : string.h, stdio.h

기능 : 사용자가 정의하는 에러 메시지를 만든다. src가 NULL일 경우 최근 발생한 에러 메시지만으로 구성된 문자열을 만들고 src가 NULL이 아닌 경우 에러메시지 형식의 문자열을 만든다.

만약 src 가 "babo" 이면 babo : 최근 에러 메시지 같은 형식으로 문자열을 만든다.

리턴 : 만들어진 에러 문자열의 포인터를 리턴한다.

 

 strerror

원형 : char *strerror( int errnum );

헤더 : stdio.h

기능 : errnum에 해당하는 에러메시지 문자열을 만든다. 에러메시지 문자열은 모두 \n으로 끝나므로 개행 문자를 첨가해 줄 필요는 없다.( 에러 메시지는 이미 정의되어 있으므로 궁금하면 출력시켜보자)

리턴 : 에러메시지 문자열의 포인터

 

 stricmp

원형 : int stricmp( const char *src1, const char *src2 );

헤더 : string.h

기능 : 두 개의 문자열을 대소 비교함. 하지만 대소문자를 구분하지 않는다. 이 함수를 사용하여 두 개의 문자열이 같은 문자열인지 아닌지를 비교할 수 있다. 같을 경우 0, 다를 경우 양수나 음수의 값을 리턴. 이 함수를 매크로로 정의해 둔 함수가 strcmpi 이다.

리턴 : src1 < src2  인 경우 음수 리턴

         src1 = src2  인 경우 0 리턴

         src1 > src2  인 경우 양수 리턴

 

 strlen

원형 : size_t strlen( const char *src );

헤더 : string.h

기능 : 문자열 src 의 길이를 계산한다. 널문자는 길이에 포함되지 않고 널문자 앞에 까지 문자 개수를 리턴한다.

리턴 : 문자열의 길이

 

 strlwr

원형 : char *strlwr(char *src);

헤더 : string.h

기능 : 문자열 src 내의 대문자(A~Z)를 소문자(a~z)로 변경한다. 영문자 외의 다른 문자는 변경하지 않는다.

리턴 : 인수로 주어진 src를 그대로 리턴

 

 strncat

원형 : char *strncat( char *dest, const char *src, size_t maxlen );

헤더 : string.h

기능 : dest 의 널문자에 src의 문자열을 붙이는데 maxlen 길이 만큼만 붙인다.

리턴 : dest의 번지를 리턴

 

 strncmp

원형 : int strncmp( const char *src1, const char *src2, size_t maxlen );

헤더 : string.h

기능 : 두 개의 문자열을 대소 비교한다. 비교시 대소문자를 구분한다. 하지만 문자열 전체를 비교하는 것이 아니라 maxlen 길이 만큼만 비교한다.

리턴 : src1 < src2  인 경우 음수 리턴

         src1 = src2  인 경우 0 리턴

         src1 > src2  인 경우 양수 리턴

 

 strncmpi

원형 : int strncmpi( const char *src1, const char *src2, size_t maxlen );

헤더 : string.h

기능 : 두 개의 문자열을 대소 비교한다. 비교시 대소문자를 구분하지 않는다. 하지만 문자열 전체를 비교하는 것이 아니라 maxlen 길이 만큼만 비교한다.

리턴 : src1 < src2  인 경우 음수 리턴

         src1 = src2  인 경우 0 리턴

         src1 > src2  인 경우 양수 리턴

 

 strncpy

원형 : char *strncpy( char *dest, char *src, size_t maxlen );

헤더 : string.h

기능 : 문자열을 정해진 길이만큼 복사한다. 길이만큼만 복사하기 때문에 dest의 뒤에 널문자가 붙지 않는다.

리턴 : dest의 번지를 리턴

 

 strnicmp

원형 : int strnicmp( const char *src1, const char *src2, size_t maxlen );

헤더 : string.h

기능 : 두 개의 문자열을 대소 비교한다. 비교시 대소문자를 구분하지 않는다. 하지만 문자열 전체를 비교하는 것이 아니라 maxlen 길이 만큼만 비교한다. 이 함수의 매크로 버젼이 strncmpi 이다.

리턴 : src1 < src2  인 경우 음수 리턴

         src1 = src2  인 경우 0 리턴

         src1 > src2  인 경우 양수 리턴

 

 strset

원형 : char *strset( char *src, int c );

헤더 : string.h

기능 : 문자열을 특정 문자로 채운다. 문자열 중 널문자가 발견될 때가지 문자 c 로 채운다.

리턴 : src의 번지를 리턴

 

 strpbrk

원형 : char *strpbrk( const char *src1, const char *src2 );

헤더 : string.h

기능 : 문자열 src1 내에 문자열 src2에 있는 문자 중의 하나라도 있는지 검사하고 있을 경우 그 포인터를 리턴.

리턴 : 문자열 src1 내에 문자열 src2에 있는 문자 중 하나가 발견된 포인터를 리턴. 없을 경우 널을 리턴

 

 strrchr

원형 : char *strrchr( const cjar *src, int c );

헤더 : string.h

기능 : 문자 배열 src내에 문자 c가 있는지 검사하고 있을 경우 문자 c가 있는 번지를 리턴한다. 하지만 앞에서 부터 검사하는 것이 아니라 뒤에서 부터 검사를 진행한다.

리턴 : 문자열 src에서 발견된 문자 c의 포인터를 리턴. 발견되지 않을 경우 널을 리턴.

 

 strrev

원형 : char *strrev( char *src );

헤더 : string.h

기능 : 문자열의 순서를 바꾼다. 즉 제일 앞에 있는 문자가 제일 뒤로 가고 제일 뒤의 문자가 제일 처음으로 옮겨진다. 널문자는 이동 없음.

리턴 : 역순으로 바꾼 문자열의 src번지

 

 strspn

원형 : size_t strspn( const char *src1, const char *src2 );

헤더 : string.h

기능 : 문자열 src1 중에서 문자열 src2에 있는 문자들이 연속해 있는 길이를 구한다.

예를 들어 src1 = "12345678" 이고 src2 = "143290" 이라면 src1에서 src2의 문자들을 찾아보면 1234가 있다. 이 문자열의 길이 4를 리턴한다.

리턴 : 찾아낸 세그먼트의 길이를 리턴. 만약 0을 리턴하면 세그먼트를 찾지 못한 것이다.

 

 strstr

원형 : char *strstr( const char *src1, const char *src2 );

헤더 : string.h

기능 : 문자열 src1내에서 문자열 src2가 포함되어 있는지 검사하고 있다면 src2와 같은 문자열이 있는 부분을 리턴한다.

리턴 : 부분문자열의 선두 번지. 없다면 널을 리턴

 

 strtod

원형 : double strtod( const char *src1, char **endptr );

헤더 : stdlib.h

기능 : 문자열을 double 형 부동 소수점으로 바꾼다. 문자열은 다음과 같은 구조로 이루어져야 한다.

[공백,탭][부호][숫자][소수점][e]  -> ex) -5.64e+5, -3.6924

순서를 어기거나 불필요한 문자가 중간에 있을 경우는 변환이 중지.

endptr 인수는 변환이 중지될 경우 중지된 문자를 가리키므로 에러 검색에 사용

리턴 : 변환된 double 형 실수를 리턴. overflow 발생시 HUGE_VAL을 리턴

 

 strtok

원형 : char *strtok( char *src1, char *src2 );

헤더 : string.h

기능 : 문자열에서 token을 찾아낸다. ( token 이란 특정한 구분자로 분리되는 문장 구성 요소이다. 구분자가

"/"라 할때 다음 문자열은 1994와 Feb와 20의 세 개의 token 으로 분리된다. "1994/Feb/20" )

문자열 src1이 token을 찾아낼 문자열이며 src2가 token 구분자가 들어있는 문자열이다. token 구분자는 여러개가 복수 개 지정될 수 있으며 token 구분자는 strtok 호출 시 마다 바뀔 수 있다.

리턴 : 찾아낸 token의 포인터를 리턴. token이 더 이상 없을 경우 널 리턴.

( 이해가 안가는 분은 winapi에서 예제를 참고)

 

strtol

원형 : long strtol( const char *src1, char **endptr, int radix );

헤더 : stdlib.h

기능 : 문자열을 long 형 정수로 변환한다.문자열 src1은 다음과 같은 구조로 이루어져야 한다.

[공백, 탭][부호][숫자]

만약 이 순서를 어기거나 불필요한 문자가 문자열 내에 있을 경우 변환은 중지되고 중지된 위치가 endptr에 설정된다. endptr은 에러 검색에 사용하면 용이. 그리고 radix은 문자열을 해석할 진법을 지정할 때 사용되는데 범위는 2~36 까지 이고 그 진법에서 사용되는 문자만 인식

리턴 : 변환된 long 형 정수를 리턴. 변환이 불가능할 경우 0을 리턴

 

strtoul

원형 : unsigned long strtoul(const char *src1, char **endptr, int radix );

헤더 : string.h

기능 : 문자열을 부호없는 long 형 정수로 바꾼다. 사용법은 strtol 과 동일.

리턴 : 변환된 unsigned long 형 정수를 리턴. 변환이 불가능할 경우 0을 리턴

 

strupr

원형 : char *strupr( char *src );

헤더 : string.h

기능 : 문자열 src내의 소문자 (a~z)를 대문자( A~Z)로 변환한다. 영문자 외의 다른 문자는 변경하지 않는다.

리턴 : src의 번지를 리턴
 
출처 : http://www.winapi.co.kr/

 

 

쉐푸드 불고기 분짜

COUPANG

www.coupang.com

 

웹브라우저 인터넷 익스플로러의 기능중에 화면 확대/축소 기능이 있습니다.

 

ctrl + "+" / ctrl + "-"  또는 ctrl + 마우스 휠버튼(위 아래)으로 사용 가능합니다.

 

밑의 그림처럼 우측 하단에 비율이 표시됩니다. 혹시나 표시되지 않으면 도구 -> 도구 모음(상태표시줄) 체크를 선태해 주시면 됩니다.

 

 

잘 활용하시는 분에게는 좋은 기능이겠지만 저에게는 경우는 눈엣 가시 같은 기능이였죠.

 

왜냐하면 저의 경우는 마우스 휠 버튼으로 새탭으로 열기 기능을 자주 사용하는데  휠 버튼을 클릭하는 순간 마우스를 조금이라도 움직여 버리면 

 

화면 비율이 100%에서 흐트러지는 경우가 자주 발생하기 떄문이죠. 

 

비율이 바뀐 상태에서 새탭을 열면 열리는 창까지 영향을 받아서 작거나 크게 열리게 됩니다.

 

ctrl + "*" (키패드쪽 *) 버튼을 다시 입력하면 원래 비율로 돌아오긴 하지만 

 

마우스에 있는 손을 키보드로 옮기는것 조차 귀찮게 느껴질때도 있기 때문에 해당 확대/축소 기능을 꺼버리는게 편하더라고요.

 

잡소리는 여기까지 하고 해당 기능을 제거하는 방법을 알려드리겠습니다.

 

 

인터넷 익스플로러(IE) 확대/축소 기능 제거 방법

 

1.레지스트리 편집기 실행(윈도우 + r) 하고 regedit 를 입력합니다.

 

 

 

 

 

2. HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Zoom 경로로 이동합니다.

 

3. 우클릭후 새로 만들기 -> DWORD(32비트 값) ZoomDisabled 값 생성후 1로 설정합니다.

 

 

 

 

귀차니스트들을 위해 설정한 레지스트리 파일을 첨부해 놓았습니다.  

다운받으시고 좌클릭 후 yes를 누르시거나 우클릭해서 병합을 클릭하시면 됩니다.

위의 방법대로 따라시거나 아래 ZoomDisabled.reg 파일을 실행하시거나 결과는 동일합니다. 둘중 하나만 하시면 됩니다.

ZoomEnable.reg는 다시 확대/축소 기능을 사용하지 않는 설정값인 원래값으로 돌린다고 보시면 되겠습니다.

 

 

 

 

 

 

이렇게만 설정하시면 재부팅 없이 새로 실행하는 익스플로러부터 적용되어 화면 비율이 100%로 고정된 상태로 사용 가능합니다. 

드디어 눈에 박힌 가시가 빠졌습니다. 마음껏 휠질(?)을 하시기 바랍니다.

 

대세가 크롬이지만 저처럼 인터넷 익스플로러를 사용하시는 분이 분명 계실거고 그 중에 저 처럼 휠 버튼으로 새 탭을 막 열면서 웹서핑을 즐기시는 분들 중에 화면 비율이 바껴서 고통을 느끼시는 분이 분명히 지구상에 몇명은 계시리라 생각됩니다. 

그 소수 몇명을 위해 이 팁을 전합니다.

 

 

인옵1.1 뉴익스3.0 도색 마우스, 인옵 1.1, 스틸시리즈 스카이블루


Square 스킨이 화면이 넓고 매뉴도 옆에 있어서 많은 분들이 쓰고 계실텐데요.


저도 광고를 달 칸이 많아 보여서 이 스킨을 골랐는데 아직 광고는 못달고 있습니다. T.T 애드고시의 벽...


그런데 이 스킨에는 치명적인 단점이 있으니 그게 바로 하단에 recent posts의 그림이 나오지 않는 현상이 입니다.


이유는 바로 페이지에 버그가 있어서 이미지가 표시되지 않는것이였습니다.


이번 시간에 아주 간단하게 한번 고쳐보도록 하겠습니다.



  해결방법

1. 문제의 스킨을 다운로드합니다.

블로그 관리 -> 스킨변경 -> 스킨 다운로드





2. 버그가 있는 소스를 알맞게 수정합니다.

다운받은 파일 압축 해제 -> images\ygal-edit.js 파일 편집



파일을 위 그림과 같이 붉은 박스친 부분만 수정하시면 되겠습니다.


수정할 내역은 총3군데 입니다.


    var z = "image" 

-> var z = "image";

마지막에 ; 추가


    var e = '<meta property="og:image" content="cfile';

-> var e = '<meta property="og:image" content="http://cfile'; 

content=" 뒤에 http: 추가


    var x = '<meta property="og:image" content="m1.daumcdn.net/';

-> var x = '<meta property="og:image" content="http://m1.daumcdn.net/';

content=" 뒤에 http: 추가 



귀찮으신 분들을 위해 수정한 버젼 업로드해 놓았습니다. 직접 수정하시거나 아래 파일을 받아서 사용하시면 되겠습니다.

ygal-edit.js



3.파일 바꿔주기

이렇게 수정한 파일을 이제 업로드만 해주면 됩니다.


스킨편집 -> html 편집 -> 파일업로드 -> images/yagal-edit.js 삭제 -> 수정한 images/yagal-edit.js 업로드




문제의 원본파일 삭제해 줍니다.






추가 버튼을 클릭해서 수정한 파일 추가하면 됩니다.


후에 블로그 메인 페이지를 새로고침하면 잘 나오는것을 확인 할 수 있습니다.


주의하실점은 티스토리 특성상 다른 스킨으로 변경해 버리면 지금 설정값이 모두 날라가버리니 위의 작업을 다시 해줘야 합니다.

스킨 변경시 스킨 보관을 하시고 변경하시기 바랍니다.


WinDBG 명령어 정리

 

명령어

옵션

설명

 일반명령어

u

Unassemble

 

언어셈블

f

함수 전체 언어셈블

b

언어셈블(ip이전의 8개 명령어)

bl

BreakPoint List

 

브레이크 포인트 리스트 출력

be

BreakPoint enable

 

브레이크 포인트 활성화

bd

BreakPoint Disable

 

브레이크 포인트 비활성화

bc

BreakPoint Clear

 

브레이크 포인트 모두 제거

ba

BreakPoint On Access

 

특정 주소에 access시 브레이크포인트

bp

Set BreakPoint

 

브레이크 포인트 설정

g

go

 

실행

p

step

 

한 단계씩 실행

pc

step to next call

 

다음 call 까지 실행

d

Display 

b : byte 출력

출력

dw : word 출력

dd : double word로 출력

dq : Quad word 로 출력

ds

Display String

 

문자열 출력

r register

 

레지스터 정보 출력

k

call stack

 

콜스택정보 출력

 

 

p

함수정보 출력

 

 

b

인자표시

 

 

n

프레임 번호

 

 

v

FPO 정보 표시

 

 

f

스택 사용량 표시

lm

loaded module

 

로드된  모듈 표시

F9

 

 

Start

F5

 

 

Break

메타 명령어

.cls

 

 

커맨드 창의 내용 지우기

.attach

 

 

대상 프로세스에 어태치

.bugcheck

 

 

버그 내용 표시

.crash

 

 

강제로 크래쉬 발생
.dump

 

 

dump 파일 생성

.reboot

 

 

재부팅

.cxr

 

 

context record 표시

.exr

 

 

exception record 표시

.excxr

 

 

exception context record 표시

.trap

 

 

Trap Frame 표시

.exepath

 

 

실행파일 경로설정

.srcpath

 

 

소스파일 경로 설정

.sympath

 

 

심볼 패스 설정/확인

.symfix

 

 

MS 심볼경로 설정

.reload

 

 

심볼 경로를 설정한 후에 WinDBG가 심볼을 다시 로드

.load

 

 

dll 로드

확장 명령어 

!process

 

 

현재 또는 실행중인 모든 프로세스의 정보 출력

!gle

 

 

GetLastError 출력

!error

 

 

에러 코드 해석

!analyze      자동 분석
!cpuid       cpu 정보 출력

!peb

     peb(process environment block) 정보 출력

!teb

     teb((thread environment block) 정보 출력
!token      security token 정보 출력

!stack

     현재 커널 스택 정보 출력

!drivers

     로드된 드라이버 정보 출력


유져 디버깅은 올리디버그나 x64디버그가 편하지만 덤프 분석이나 커널디버깅시 유일신인 WinDBG

WinDBG의 자주쓰이는 명령어 위주로 정리해 보았습니다.

 

증상

 

윈도우즈10 환경에서 2018년 5월 8일에 배포된 업데이트 KB4103721가 설치되면 윈도우 원격(mstsc)을 통해 다른 위도우로 접속시 위와 같은 메시지가 출력되고 원격 접속이 되지 않습니다.

 

 

인증 오류가 발생했습니다.

요청한 함수가 지원되지 않습니다.

 

원격 컴퓨터: XXX.XXX.XXX.XXX

CredSSP 암호화 Oracle 수정 떄문일 수 있습니다.

자세한 내용은 https://go.microsoft.com/fwlink/?linkid=866660를 참조하세요

 

 

원인

CredSSP 암호화 보안 취약점에 대한 패치(KB4103721)가 원격접속을 시도하는 클라이언트와 접속을 당하는 서버 양쪽에 설지되어 있지 않고 한쪽만 설치되어 있을 경우 원격 접속을 차단시킴.

 

 

해결방법

(아래 1번 2번중 하나만 성공하면 됩니다.)

 

1. 접속할(서버)의 PC에 업데이트(KB4093120) 를 설치

(https://support.microsoft.com/ko-kr/help/4093120/windows-10-update-kb4093120)

 

2. Oracle 수정 암호화 보호 수준 수정

(원격 접속하는곳이 서버일 경우가 많이 때문에 인터넷 접속이 부분적으로 막혀 있는곳도 있습니다. 이 방법을 추천합니다.)

 1) 로컬 그룹 정책 편집기 실행 (윈도우키 + R 로 실행창 띄운 후 gpedit.msc 입력 )

 

 

 

 2) 컴퓨터 구성 -> 관리 템플릿 -> 시스템 -> 자격 증명 위임 -> Oracle 수정 암호화 선택

 

 

 3) "사용" 체크, 보호 수준을 "취약" 으로 설정

 

 

 

 

위와 같이 설정하고 다시 원격 접속을 시도해 보면 잘 접속이 될겁니다.

 

PS) 혹시 Oracle 수정 암호화 항목이 나타나지 않으면 기본 자격 증명 위임 거부, 새로운 자격 증명 위임 거부등의 항목들을(사실 어떤걸 수정해서 Oracle  항목이 나왔는지 정확히 기억이 안나네요. 죄송합니다.) 수정해 보시면 Oracle 수정 암호화 항목이 나타날 겁니다. 그 후 방금 수정한 값을 원복하시면 되겠습니다.

기능별 주요 API

 

 

프로그램 실행관련
WinExec : 프로세스 생성하고 초기화가 다 될때까지 기다렸다가 리턴함. 내부적으로 CreateProcess 호출

CreateProcess : 프로세스 생성 후 곧바로 리턴함 

ShellExecute :

LoadModule : 모듈 로드(dll)

입력관련
keybd_event : 키 입력

mouse_event : 마우스 입력

SendInput : 키 입력
SendMessage : 키 입력

PostMessage : 키 입력

 WaitforInputIdle : 사용자 입력 받을수 있을때가지 기다리는 함수

프로세스 종료
TerminateProcess : 프로세스 종료 (작업관리자(taskmgr)에서 응용프로그램탭의 작업 끝내기도 ZwTerminateProcess 호출됨)
ExitProcess : 프로세스 종료 (내부적으로 TerminateProcess 호출됨)


파일 관련 

CreateFile : 파일생성, 파일열기
URLDownloadToFile : 파일 다운
DeleteFile : 파일 삭제

DeleteDirectory : 폴더 삭제

PathFileExists : 파일 존재 검사

FindFirstFile : 파일 찾기

GetfileAttributes : 파일 정보 얻기

ini 파일 

GetPrivateProfileInt : ini 값 일기(숫자)
GetPrivateProfileString : ini 값 읽기(문자열)
WritePrivateProfileString : ini값 쓰기(숫자)
WriteProtfileString : ini값 쓰기(문자열)

Registry 관련

RegCreateKeyEx
RegSetValueEx
RegQureyValueEx
RegOpenkeyEx
RegCloseKey
RegQueryInforkey

드라이버 관련 
NtDeviceIoControlFile :

ZwDeviceIoControlFile :

명령인수
GetCommandLine() : 명령인수 가져오기


디버깅 관련
IsDebuggerPresent : 디버깅중인지 검사

NtQueryinformationProcess = 디버깅 중인지 검사 CheckremoteDebuggerPresent와 동일
NtQueryinformationProcess(hProcess, 7 , &hport, sizeof hPrt, & result); 디버그 포트 검사
NtQueryinformationProcess(GetCurrentProcess(0, 0x1e, &hDebugObject, 4, NULL); 디버그 오브젝트 검사
NtQueryObject
NtQueryinformationProcess(xx, 3)NtQueryinformationProcess(xx, 0x1f // ProcessDebugFlag, 4 , NULL );
NtSetinformationThread : 쓰레드를 디버거로부터 감추기
NtSetinformationThread(GetCurrentThread(), 0x11, 0, 0);

01. 제어판 -> 사용자 -> 사용자 홈서비스 활성화 체크


02. 패키지센터에서 Git Server 설치


03. NAS에서 root, admin 외에 Git 전용 사용자 추가 (예: gituser(사용자 아이디))


04. Git Server 설정화면에서 gituser(사용자 아이디) 에 접근허용 체크


05. [window] PuTTY 프로그램을 이용해서 ssh 접속

- Host Name 에 NAS 아이피 입력 (예: 192.168.0.14)

- NAS 사용자 아이디 입력 (예: abc123)

- root 사용자로 변경 ( sudo -i 입력 후 동일비밀번호 재입력)


06. 등록한 사용자폴더로 이동

$ cd /var/services/homes/gituser(사용자 아이디)


07. git 저장소로 이용할 폴더 생성

$ mkdir repo.git


08. 저장소로 이동

$ cd repo.git


09. git 선언

$ git init --bare

$ git update-server-info

$ cd ..

$ chown -R gituser(사용자 아이디):users(사용자 그룹) repo.git


-- 서버 세팅 완료 --


10. git 클라이언트 설치


11. git bash 프롬프트 실행

$ ssh-keygen

$ ssh-copy-id gituser(사용자 아이디)@192.168.0.14(NAS IP)



출처: http://gutmate.tistory.com/entry/Synology-NAS-Git-Server-설치 [프프프]

파이썬 2.x 버젼 사용시 한글이 들어가면 다음과 같은 에러가 발생한다.

 

 

SyntaxError: Non-ASCII character '\xed' in file xx.py on line 22, but no encoding declared;  

see http://python.org/dev/peps/pep-0263/ for details

 

 

원인

 

ascii 코드로 되어있다고 가정하기 때문에 한글을 인식하지 못함

 

해결책

 

1. 파이썬 3.x 버젼을 사용한다.

 

2. 파일 맨 위에 다음과 같은 주석을 삽입해주면 된다.

 

 # -*- coding: utf-8 -*-

 

 

자작 플러그인 소개합니다.

Spy++이나 ProcessExplorer의 윈도우 찾기 기능과 동일하게 드래그하여 윈도우를 선택하여 어태치 할 수 있게 도와주는 플러그인입니다.

 

File -> Attatch -> 프로세스 선택 하는 복잡한 과정없이 간단하게 드래그 한방이면 끗

 

 

Plugin 폴더에 넣고 실행시 다음과 같이 아이콘이 나타납니다.

 

클릭하면 OllyDbg 윈도우가 최소화 되고 다른 윈도우를 선택하면 하일라이트 됩니다. 클릭한 버튼을 때면 그 윈도우에 어태치 됩니다.

 

Explorer.exe에 어태치 하면 난감한 상황이 발생하니 그 경우는 어태치 되지 않도록 예외처리 해놨습니다.

DrAttacher.dll

 

rm -rf dir

 

-f force 강제로 삭제

 

-i interactive 삭제할 때마다 사용자에게 물어봄

 

-l 셋 이상 파일 삭제 혹은 하위의 파일이나 디렉토리 있을경우 물어봄

 

-r recursive 하위 디렉토리 포함하여 모든 내용 삭제

+ Recent posts