전체 글 389

에디트에 숫자 입력시 천단위로 자동 컴마(콤마) 찍기(Edit Comma)

// 음수, 소수점 고려 // 버퍼 길이에 0 전달시 필요한 크기(NULL 포함 길이) 리턴 int __stdcall AddComma(LPCTSTR src, LPSTR buf, int lenbuf) { int len, lenCommaRange, cCommas, res; TCHAR szError[256]; if (!src)// 기본 체크 return 0; if (!(len = lstrlen(src))) // 기본 체크 return 0; // 컴마의 수는 (컴마를 찍을 수 있는 영역의 길이 - 1) / 3 // 소수점이 존재하는 경우는 . 앞 부분까지 길이로 설정하면 된다. // 음수인 경우 처음에 -가 붙으므로 1을 빼준다. for (lenCommaRange = 0; src[lenCommaRange] !=..

API 2016.02.03

배치 파일로 자기 파일 지우기(Writing a self destructing exe file)

Writing a self destructing exe file Please Sign up or sign in to vote. Explains how you can have a program delete itself once it has finished running without a reboot Introduction Uninstall programs typically want to delete themselves at the end of the un-installation, but executable cannot delete itself by simply calling the DeleteFile function. By calling the Selfdestruct() function showed bel..

카테고리 없음 2015.06.20

grub4dos의 firadisk로 XP ISO 설치

메모리에 iso와 설치도구인 firadisk(1.4메가)를 통째로 로딩해서 설치하는 방식입니다. 따라서 램은 iso + firadisk 용량보다는 커야 될 겁니다. 이를테면 xp iso가 692메가인 경우 램은 693.4메가(692메가 + 1.4메가) 이상이어야 될 거에요. ------------------------------------------------원본 글------------------------------------------------------- 7, 8이 대세인데 아직 XP를 사용해야만 할경우가 많죠 ㅋㅋ 요즘 단가를 아끼기 위해 운영체제 미포함된 넷북이나 노트북들이 많이 나오더군요.. 저같은 경우는 이럴때 고마워요 가격이 그만큼 싸지니깐요.ㅎㅎ 누구나 usb메모리나 외장형하드디스크 ..

카테고리 없음 2015.05.21

grub4dos 부팅 usb에 고스트 및 gho 파일 넣어서 자동 복구할시 표준 명령어 양식

현재 grub4dos로 부팅 usb를 만든 상태이다.이 상태에서 고스트 자동 복구 메뉴(title Ghost_Restore_Win)를 추가한다.이 메뉴를 선택하고 엔터 누를시 Ghost~.ima 파일을 읽어들여 고스트 부팅을 하게 되고.ghost~.ima 파일 안의 autoexec.bat 파일에 적힌 명령대로 알아서 자동 복구하게 된다. 아래와 같이 두 군데를 수정하면 된다. 1. 부팅 usb의 menu.lst 파일에 추가할 부분 title Ghost_Restore_Win# find --set-root --ignore-floppies --ignore-cd /ISO/Ghost_Restore_Win.ima // usb의 ISO 디렉토리 내에 존재하므로 다른 드라이브에서 찾을 필요 없다.# map --mem ..

카테고리 없음 2014.08.05

iaixiang.exe fnghs.exe ruixingh.exe svchsot.exe 악성코드, 피싱, 파밍 주의

국내 악성코드 감염사이트가 많은 것 같다.iaixiang.exefnghs.exeruixingh.exesvchsot.exe (svchost와 다른 파일이다. 이름만 유사한 악성코드) 사이트만 접속했는데 이런게 실행되고,,,호스트 파일 변조해서 네이버, 다음, 은행 등 접속시 웹사이트 파밍을 시도한다.(인증서 어쩌구 개인신용정보 요구하는 팝업이 뜸) 작업관리자에서 강제로 종료시키고 탐색기 검색해서 해당 파일을 지워준다. 그런데 그 사이트에 접속하니까 또 저런걸 다운로드 받아서 실행해버리네. ㅡㅡ;;;아마도 해당 사이트 서버가 짱개 등에 해킹을 당해서 웹페이지에 악성코드가 심어진 상태인가보다.낮시간대에는 사이트는 정상적으로 접속되고 새벽시간대에만 저렇게 악성스러운게 실행된다.관리자 없는 시간대를 골라서 맘대로..

카테고리 없음 2013.11.22

IE 8의 독특한 아키텍처(LCIE)와 CreateProcess, IELaunchURL

IE 8 버전부터 CreateProcess로 IE를 런칭시키는 경우 프로세스 아이디나 핸들 값을 제대로 구하지 못한다. IE 8부터 IEXPLORER.EXE가 최소 2개가 실행된다. LCIE(Loosely-Coupled IE)라는 독특한 아키텍처를 취한다. 참조) http://blogs.msdn.com/b/ie/archive/2008/03/11/ie8-and-loosely-coupled-ie-lcie.aspx UI 프레임은 전체 통틀어서 몽땅 하나의 프로세스에서 처리하고,각각의 탭, 툴바, ActiveX, BHO를 개별적인 프로세스로 처리한다.그리고 UI 프레임을 처리하는 프로세스는 부모, 개별 프로세스는 자식의 관계를 가지고 있다.아래는 웹브라우저 2개를 띄운 경우 Process Explorer로 살펴..

웹, HTML 2013.06.23

Internet Explorer 버전을 확인 하는 방법

주의할 게 예전에 널리 알려져서 쓰여진 shdocvw.dll의 파일 버전을 확인하는 방법은 최신 버전에는 쓰면 안 된다.IE 6버전까지만 해당 방법은 통용된다. 7, 8, 9, 10 버전 모두 shdocvw.dll 파일버전은 6.xxxxx로 같다.(아래는 IE 7의 dll 버전 정보) 4버전 이후부터 레지스트리에 버전 정보가 기록된다.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer의 Version에 7.0.5730.13과 같은 값이 입력되어 있다. 위의 정보들을 바탕으로 IE 버전을 확인하려면 두 단계로 나누어서 확인하면 된다.먼저 위 레지스트리에서 버전 값을 확인하고 없으면 shdocvw.dll 파일버전을 조사하면 될 것이다. shdocvw.dll마저..

웹, HTML 2013.06.22

SetForegroundWindow 작동 잘 안될 때 AttachThreadInput 사용

구글링등 사이트 검색하면 SetForegroundWindowForce라는 프로그램 소스가 보이는데 이것은 좀 잘못된 소스이다. 이 잘못된 소스에서는 AttachThreadInput 첫번째 인수와 두번째 인수를 거꾸로 줬다. 원래의 foreground 윈도우의 tid를 두번째 인수로 줘야 된다. 좀 이상하게 작동해서 msdn에서 함수 설명 읽어보고 첫 인수와 두번째 위치를 바꾸니 제대로 되었다. 아래는 올바르게 수정한 소스이다. void __stdcall SetForegroundWindowForce(HWND hWnd) { HWND hForeground; DWORD id, foreground_id; hForeground = GetForegroundWindow(); if (hForeground == hWnd)..

API 2012.12.10

크기나 속도 측정 단위 환산

기본적인 크기 단위는 다음과 같다. 1바이트 = 8비트 1킬로바이트 = 1024 바이트 1메가바이트 = 1024 킬로바이트 1기가바이트 = 1024 메가바이트 1테라바이트 = 1024기가 바이트 . . . 보다시피 처음에 바이트만 8비트이고, 나머지 단위는 죄다 이전 단위에 1024를 곱해준다. 그런데 통신 속도는 생소한 메가비트라는 단위를 사용한다. 보통 100Mbps 이런 식으로 표현을 하는데 이때 단위는 메가바이트가 아닌 메가비트이다. 더 숫자를 크게 보이려고 하는 꼼수인 듯 하다. 기본적으로 사용하는 단위에 혼동만 줄 뿐;;; 기가비트도 마찬가지이다. 메가비트를 메가바이트로 바꿀려면 비트->바이트 식이니까 8을 나눠주면 된다. 그러므로 100메가비트 속도는 12.5메가바이트 속도이다. 주의할게 1..

잡다 2012.11.16

CreateDibSection 이용 비트맵 생성하기

CreateCompatibleBitmap의 경우 실패할 경우가 종종 생긴다. 위 api로 생성한 비트맵 자원들의 총합이 16메가인 초과한 경우 실패하다라나 색표현이 제대로 안된다던가 깨진다더거나 그런 경우도 생긴다고 한다. 이 경우에 CreateDibSection api를 사용하면 된다. 이 함수를 통해 비트맵 생성시는 프로그램이 제공하는 메모리 허용량까지 가능하다. 인터넷에 돌아다니는 소스는 색상(bpp)부분과 팔레트 설정부분이 누락된 코드가 많았다. // 색상(bpp)이 8비트 이하인 경우 팔레트 설정이 필요하다. HBITMAP __stdcall CreateBitmapByCreateDIBSection(HDC hdc, int cx, int cy, int bpp = 0) { int i; unsigned ..

API 2012.10.29