[PE파일 32비트 64비트 구분법]

 

1.메모장(notepad로 확인하고자 하는 PE파일을 연다.

 

 

2.찾기(ctrl + f)로 PE를 찾는다.

 

 

3.첫번째 찾아지는 PE 다음에 오는 글자를 확인하는다. 다음에 오는 글자가 

L이면 32비트 

d 이면 64비트

 

 

 

비트 딥클린파워 액체세제 파우치형 일반용, 2L, 4개

 

비트 딥클린파워 액체세제 파우치형 일반용

COUPANG

www.coupang.com

 

 

다수의 링크를 한번에 여는 꿀팁을 알려드리겠습니다.

 

크롬을 써야합니다.

 

 

1. 크롬 웹스토어에 가셔서 Linkclump 설치

 

2. z키를 누른 상태에서 오픈할 링크들을 드래그

 

 

 

 

 

이렇게 z키를 누른 상태에서 드래그로 선택을 하면 잠시후에 링크들이 새 탭에서 열리게 됩니다.

 

 

 

 

옵션에서 기본적인 설정은 위와 같이 되어있습니다.

 

입맛에 맞게 설정하시면 되겠습니다.

 

 

냉동아재 삼성에어컨 스마트링크 에어컨배관자재, 12.7mm

 

냉동아재 삼성에어컨 스마트링크 에어컨배관자재

COUPANG

www.coupang.com

 

괜찮은 마우스 제스쳐 프로그램 추천 드립니다.

네이버 툴바의 마우스 제스쳐를 사용중 인데 인식률이 영 좋지 않아서 더 좋은게 없나 찾다보니

브라우저상에서 말고 윈도우상에서도 쓸 수 있는 괜찮은 마우스 제스쳐 프로그램을 찾아서 알려드립니다.

 

마우스 제스쳐란?

마우스의 오른쪽 버튼을 누른 상태에서 마우스를 움직여서 일정한 모양의 그림을 그린 뒤 오른쪽 버튼을 놓으면, 각 그림에 해당하는 기능이 실행되는 것을 말합니다.

 

Strokes Plus

http://www.strokesplus.com/forum/topic/1097/version-28531

에 가셔서 OS에 맞는 버전 받으시면 됩니다.

 

 

사용 예)

1.우클릭 버튼을 누른채로 아래와 같이 ‘e’ 모양을 그리면 탐색기 실행

 

 

2.G모양을 그리면 익스플로러로 Google 페이지 오픈

 

 

3. 선을 위로 그으면 Copy, 아래로 그으면 Paste

  

 

 

등등 기본적으로 제공하는 기능은 이외에도 많이 있고 각자 기호에 맞게 조절 가능합니다.

제스쳐도 추가 할 수 있고 거기 맞는 액션도 추가 할 수 있습니다.

 

잘만 조절하면 왼손은 주머니에 넣은 채 거만하게 오른손만으로 모든 것을 처리 할 수 있게 될지도 모르겠네요.

 

 

[수초스토어] 검역 붉은수초 로탈라 블러드 레드 7촉 / 구피 새우 어항 수초 쉬운 예쁜 은신처 중

COUPANG

www.coupang.com

 

유저모드 디버거하면 바로 가장 유명한 올리디버거(OllyDBG)가 있죠. 요즘은 x64dbg도 많이 쓰이는것 같습니다.


올리디버거 플러그인 중에 프로그램이 실행되면 자동으로 어태치시켜주고 어태치하는 시간도 설정할 수 있는 유용한 툴이 있죠

바로 AutoAttach 라는 플러그인 입니다.




About 매뉴는 제작자에 관한 메뉴라 눌러보실 필요 없고


Set process name 은 어태치할 프로세스명을 설정하는 칸입니다. 여기서 설정한 이름의 프로세스가 있으면 바로 어태치 시킵니다.


Set delay time은 Set process name에서 설정한 프로세스 발견시 얼마나 딜레이(밀리세컨드)를 주고 어태치 시킬지 설정하는 매뉴입니다.


하지만 이 툴의 단점이 있으니 바로 




확장자가 .xem같이 exe로 끝나지 않는 프로그램은 어태치 시키지 못한다는 것입니다.


일반적인 프로그램은 대부분 .exe로 되어있지만 


보안프로그램이나 악성코드, 게임핵툴의 경우 탐지/분석을 회피하기 위해 특수한 확장자명으로 되어있는 경우가 많습니다.




위와 같이 프로세스 명을 적고 해당 프로세스를 실행해도 어태치가 되지 않습니다.


다시 한번 Set process name 매뉴에 가보면





위 그림과 같이 내가 적은 프로세스명 뒤에 자동으로 + .exe 문자열을 붙여주는것을 확인 할 수 있습니다.


자 그럼 이것을 한번 수정해 보도록 하겠습니다.


아주 쉽고 간단하니 편하게 따라오시기 바랍니다.


IDA Hexray로 한번 대략적으로 플로그인 모듈을 살펴보도록 하겠습니다.





여러 함수가 보이는데 하나하나 살펴보다 보니 _ODBG_PluginMainloop에 주요 소스가 있는것을 확인 할 수 있습니다.


.exe를 붙인다는것을 감안해서 문자열 보기 (shift + f12)를 통해 찾아가셔도 좋습니다.





.exe 문자열을 찾고 그와 관련된 작업을 하는것을 알 수 있습니다.


여기서 분석가능하신 분도 계시겠지만 더 쉽게 툴의 힘을 빌려 f5를 눌러줍니다.






HexRay의 위엄... 거의 원본 소스 상태로 보여줍니다.


strstr 함수를 사용해서 사용자가 입력한 프로세스명이 .exe를 포함하지 않으면 뒤에 .exe를 붙여주는 코드가 있습니다.


이 코드때문에 .xem 파일을 어태치 할 수 없었습니다. 저 부분을 nop처리 하면 가뿐히 해결될걸로 보이네요.


수정은 OllyDBG로 해보도록 하겠습니다.







플러그인을 넣은 올리디버그를 실행하고 하나 더 실행해서 첫번째 실행한 올리디버그를 어태치 시켜줍니다.(올리디버그를 올리디버그로 어태치)


모듈 목록에 AutoAttach.dll이 보입니다.





문자열 검색을 해보니 역시나 .exe 부분이 나옵니다. 저기로 이동





exe가 있는지 비교하는 부분이 보이네요. 저 JNZ를 무조건 점프시키는 JMP로 변경하면 해결되겠네요.





이렇게 변경시킨뒤 파일로 저장합니다. 


저장법은 우클릭 -> Copy to executable -> All modifications


다음 save file로 저장해줍니다.


이렇게 변경한 플러그인으로 실행하면 







잘 어태치 되는것을 확인 할 수 있습니다.



원본 파일과 수정한 두 파일을 첨부해 놓겠습니다.


AutoAttach.dll

AutoAttach_m.dll


불친절한 설명을 읽어주셔서 감사합니다.


 



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);

+ Recent posts