반응형

기타프로5에서 악보 플레이를 시키면 현재 위치가 어딘지 표시하는게 있다..

초록색 세로 선...  이게 기타보다 다시 화면보다 하다보면, 갑자기 눈에서 사라지는 현상이 생긴다. (노안이다.)

지금 어디를 치고 있는지 나만 안보여?? (노안이 오나보다...)

이거 해결 방법이 있나??? 물론 자체적인 해결 방법은 아무리 찾아도 제공하지 않는다였다.  그래도 난 한다!!! -_-;;

Windows 프로그램이니까, 저 초록색 선을 그리는 GDI API를 사용할 것이고, 해당 API를 후킹하여, 원하는 디자인으로 변경한 다음, 원래 로직으로 다시 돌아가게 리턴하게 해주면 이론상 가능하지...

물론 어느 API를 쓰는지 해당 API가 어디 있는지 등을 찾아야 함...  간단하게, WinDbg로 붙여서 디버깅을 시작. 사용하는 DLL 모듈들을 찾아보고, 그 중에 graphics 관련을 추출하여 open된 line 그리는 api 후보들을 추출... 

그리고 bp를 걸어본다. 너무 많다... 이제 API 후킹 모듈을 개발해서....(??? 쉬운건 아니다...) API 후킹이 되는지 체크하고, 디버그 로그 찍다보면은 어느 API겠구나.. 하고 나온다.  그런 거기서, 파라미터들을 살펴보면, RGB값이 00,FF,00 으로 초록색으로 세로로 긋는 작업을 한다는 것을 확인하였다.  아하! 대신, 투명 사각형을 그려버리고 리턴하자.

그럼!!! 이렇게 된다....

아~ 이제 내 눈도 편해지겠다...  그간 묶은 체증이 내려가는군... 이제 다시 연습해보자.. 핑계될게 없다. -_-;;;

(dll injection을 해서 백신에서는 바이러스라고 오탐할 수 도 있음.) 

'만물상 DIY FIX' 카테고리의 다른 글

아이폰 케이블수리  (0) 2015.06.29
인터넷이갑자기안될때 혹시?  (1) 2015.06.26
고기굽는기계고치기  (0) 2015.06.23
천자기 만들기  (0) 2015.06.18
클립이 물에 뜰까?  (1) 2015.06.12
반응형

일본어 단어에서 像 vs 象 들어간 단어를 비교

가끔 어느 글자가 맞는지 항상 헛갈린다. 결국 그냥 다 외워야 함.  명확한 구분이 안되어 헛갈림. 

거꾸로 단어 발음을 먼저 외우고, 발음에 따라 이 글자겠다고 하는게  더 편할 수 있음.  

이 들어간 단어 ; ぞう; 상상, 영상,초상화。。。

  • 의미: 주로 형상, 모습, 영상, 이미지 등 형태나 모습을 나타냄.
  • 대표 단어 및 읽는 법
    • 人物像 (じんぶつぞう, jinbutsuzō): 인물상, 인물의 모습
    •  (ぞう, zō): 형상, 상(像)
    • 肖像 (しょうぞう, shōzō): 초상화
    • 映像 (えいぞう, eizō): 영상, 이미지
    • 想像 (そうぞう):상상 

이 들어간 단어;대부분しょう; 상징,인상,추상,현상。。。

  • 의미: 주로 코끼리를 뜻하거나, 어떤 현상·사물의 징후 또는 상징적인 의미로 쓰임.
  • 대표 단어 및 읽는 법
    •  (ぞう, zō): 코끼리 (읽는 법 주의)
    • 象徴 (しょうちょう, shōchō): 상징
    • 印象 (いんしょう, inshō): 인상
    • 具体的な現象の象 (ショウ, shō): ‘징후’나 ‘현상’의 의미로도 사용됨
    • 抽象 (ちゅうしょう); 추상 

요약하면,

 

(모양 상) 상상, 영상, 초상, 인물상.. 人物像 (じんぶつぞう, jinbutsuzō) 
 (ぞう, zō)
肖像 (しょうぞう, shōzō) 
映像 (えいぞう, eizō) 
想像 (そうぞう)
(코끼리 상) 코끼리, 상징, 인상, 현상, 추상...   (ぞう, zō) 
象徴 (しょうちょう, shōchō)
印象 (いんしょう, inshō)   
現象(げんしょう)
抽象 (ちゅうしょう)
 

 

 

반응형

* 마우스 드래그 방지 구현

원리

마우스 드래그 방지는 HTML/CSS/JavaScript 이벤트를 차단하는 원리입니다.

  • CSS 방식: 텍스트 선택 자체를 비활성화합니다.
  • JavaScript/HTML 이벤트 방식: 드래그 시작 이벤트(ondragstart)나 텍스트 선택 이벤트(onselectstart)를 return false로 처리합니다.

예시 코드

CSS로 구현

 
css
/* 전체 페이지 드래그 불가 */
body {
-webkit-user-select: none; /* Chrome, Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE/Edge */
user-select: none; /* 표준 속성 */
}
 
/* 특정 영역만 드래그 허용 */
.allow-drag {
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}

 HTML/JavaScript로 구현

 
xml
<body onselectstart="return false" ondragstart="return false">
<p>이 문장은 드래그할 수 없습니다.</p>
<p class="allow-drag">이 문장만 드래그 가능합니다.</p>
</body>

또는 JavaScript 코드로 이벤트 차단을 설정할 수도 있습니다:

 
javascript
document.addEventListener('dragstart', (e) => e.preventDefault());
document.addEventListener('selectstart', (e) => e.preventDefault());

 

특정 요소만 텍스트 선택 허용

원리

  • user-select: none으로 전체 페이지의 텍스트 선택을 비활성화합니다.
  • 선택을 허용할 요소에는 user-select: text를 적용합니다.

예시 코드

 
html
<style>
/* 전체 페이지 선택 금지 */
body { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
/* 특정 요소만 선택 허용 */
.select-allow { -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; }
</style>
 
<body>
<p>이 문장은 선택할 수 없습니다.</p>
<p class="select-allow">이 문장은 선택할 수 있습니다.</p>
</body>

 


마우스 우클릭 방지 구현

원리

마우스 오른쪽 클릭 시 발생하는 contextmenu 이벤트를 가로채서 preventDefault()를 호출하면, 브라우저의 기본 컨텍스트 메뉴가 표시되지 않습니다.

예시 코드

 HTML 속성 방식

 
xml
<body oncontextmenu="return false">
<p>이 페이지에서는 마우스 우클릭이 비활성화되어 있습니다.</p>
</body>

JavaScript 방식

 
javascript
document.addEventListener('contextmenu', (event) => {
event.preventDefault();
alert('이 페이지에서는 우클릭이 제한되어 있습니다.');
});

 

특정 요소만 우클릭 허용

원리

  • contextmenu 이벤트를 전체 문서에 등록하여 우클릭을 차단합니다.
  • 단, 특정 요소(event.target)가 허용 대상이면 preventDefault()를 호출하지 않습니다.

예시 코드

 
xml
<body>
<p>이 영역에서는 우클릭이 막힙니다.</p>
<div id="allowed-area" style="background:#d0f0d0; padding:15px; margin-top:10px;">
이 영역에서는 우클릭이 허용됩니다. </div>
 
<script>
const allowArea = document.getElementById('allowed-area');
document.addEventListener('contextmenu', (event) => {
// 허용 영역이 아닌 경우에만 우클릭 차단
if (!allowArea.contains(event.target))
{ event.preventDefault(); alert('이 영역에서는 우클릭이 제한되어 있습니다.'); }
});
</script>
</body>
 
*허용시킬 요소가 여러 개 인 경우...
const allowedElements = document.querySelectorAll('.right-allow');
document.addEventListener('contextmenu', (event) => {
  let allowed = false;
  allowedElements.forEach(el => {
    if (el.contains(event.target)) allowed = true;
  });
  if (!allowed) event.preventDefault();
});

이 코드는 event.target이 허용된 요소(또는 그 하위 자식)일 경우에만 우클릭이 작동하게 하며, 그 외 영역은 전부 차단됩니다.

 

💡 참고: 개발자 도구(F12)에서 JavaScript를 비활성화하거나 코드 제거로 쉽게 우회할 수 있기에, 드래그/우클릭 방지는 사용자 경험 향상용 또는 간단한 안내 수준으로만 사용하는 것이 좋습니다.


원리를 요약하면,

  • 드래그 방지: user-select:none; 또는 onselectstart/ondragstart 이벤트 차단.
  • 우클릭 방지: contextmenu 이벤트를 막아 브라우저 메뉴가 뜨지 않게 함.

+ Recent posts