컨텐츠 바로가기

API for Hacking

http://ieee.egloos.com/8985264

#######################################################################################

중단점에 유용한 API목록입니다. 인쇄하셔서 codeDiving하실 때마다 옆에 두시고 참조하세요

외국사람이 쓴 것이며 일부 평역했으며, 원저작자에 대한 부분은 수정없이 그대로 올립니다.

#######################################################################################


HCU NOTES

:밑의 내용은 다음과 같은 질문에 대한 간단명료한 멋진 답변이다.


"소프트아이스에서 내가 원하는 걸 찾으려면 어디에 중단점을 설치해야 하나요?"


이글은 대대로 전해져오는 win32 guide 이며, 난 원본에 약간의 수정을 가했을 뿐이다. 따라서

난 원저작자가 누구인지 알 도리가 없음에 유감스러움을 느끼며, 원저작권은 이글을 최초로 쓴

사람에게 있음을 밝힌다.



NEW USER NOTES:

:(난 예전에 이러한 질문을 너무 많이 받아봤다. 그래서 그것들에 대한 답변을 적기로 한다.)


이러한 API들을 사용하기 위해서 그냥 소프트아이스를 켜고 BPX MessageBoxA라고 적으면 된다.

혹은 당신이 원하는 어떠한 함수라도 bpx로 중단점을 설정하면 되는 것이다.


API뒤에 A라고 붙은 것은 32-bit 함수임을 뜻한다. 따라서 Winice.dat중 EXPORT란에 적절한 심

볼로 확실하게 수정해야한다. 왜냐하면 NT-ice는 당연한 말이지만 16bit 함수보다는 32bit함수

를 사용하기 때문이다.


웹사이트엔 이 winice.dat라는 파일이 수도없이 널려있지만, 당신의 것은 소프트아이스의 실행

파일이 있는 디렉토리에 들어있을 것이다. 만일 기억이 나지 않는다면 autoexec.bat를 열어서

winice.exe가 어디에 설치되어 있는지 확인해보도록 하자.




32-bit함수를 winice.dat에 포함시키기

필요한 특정 DLL앞의 세미콜론을 지워라. 예를들어 아래와 같은 것들을 말이다.

(좀더 자세한 내용이 ED!SON의 강좌에 있다.)



gdi32.dll

kernel32.dll

user32.dll




크랙킹에 자주쓰이는 Win32 API 함수들


파일 입출력

:아래 함수들은 흔히 바이너리 모드로 입출력시 사용된다.


ReadFile

WriteFile


파일 접근(Access)

SetFilePointer

GetSystemDirectory

GetSystemDirectoryA


*.ini파일과 관련된 함수


16-bit용:

GetPrivateProfileString

GetPrivateProfileInt

WritePrivateProfileString

WritePrivateProfileInt


32-bit용:

GetPrivateProfileStringA

GetPrivateProfileIntA

WritePrivateProfileStringA

WritePrivateProfileIntA


Interrupt 정보 :


파일 접근 (A couple by YOSHi)

bpint 21 if (ah==3d)

bpint 2f if (ah==01)




레지스트리


레지스트리의 키를 생성 혹은 삭제시:

RegCreateKey

RegDeleteKey

RegCreateKeyA

RegDeleteKeyA


현재 열려진 레지스트리 키를 읽을때:

RegQueryValue

RegQueryValueA


레지스트리 키를 열때:

RegCloseKey

RegOpenKey

RegCloseKeyA

RegOpenKeyA




대화 상자


대화 상자의 입력란에서 문자열을 읽을때:

GetWindowText

GetDlgItemText

GetWindowTextA

GetDlgItemTextA

GetDlgItemInt


보통 "invalid registration"라는 대화 상자를 만날때

MessageBox

MessageBoxA

MessageBoxExA

MessageBeep


문자열을 전송, 출력하는 기타 방법들

SENDMESSAGE

WSPRINTF




날짜와 시간


날짜와 시간을 구할때

GetSystemTime

GetLocalTime

SystemTimeToFileTime




윈도우(창) 생성

createwindow

createwindowexa

showwindow

bitblt (a type of memory move, similar to hmemcpy)




CD-ROM 요구 (Donated by: +-=Riddler=-+)


GetDriveType (if eax=5 then it is a cdrom check)

GetDriveTypeA


GetDriveType Return Function codes:


Value Meaning

0 Drive Cannot Be determined

1 Root Dir Does not exist

2 DriveRemoveable

3 A Fixed Disk (HardDrive)

4 Remote Drive(Network)

5 Cd-Rom Drive

6 RamDisk


GetLogicalDrives

GetLogicalDrivesA

GetLogicalDriveStrings

GetLogicalDriveStringsA


CD-ROM에 관련된 기타 정보


interrupt 2f is the mscdex interrupt


bpint 2f, al=0 ah=15 checks if mscdex installed


try breaking on file accesses as well




Window Numerical 입력


GETWINDOWWORD

GETWINDOWLONG




+ORC가 제안한 훌륭한 함수


BOZOSLIVEHERE

HMEMCPY

GLOBALGETATOMNAME




메시지를 이용하기


BMSG xxxx WM_GETTEXT (good for passwords)

BMSG xxxx WM_COMMAND (good fro OK buttons)


당근 xxxx는 hwnd값이다. 여기에 더 알아야 할 것이 있다. 만일 당신이 wm_command를 이용해

버튼이 눌리는 순간을 잡으려고 하고, 그 윈도우의 hwnd는 0129, 버튼은 0324라고 가정하자.

그렇다면 버튼을 찾기위해선 버튼의 값을 사용하지 말고 반드시 윈도우의 값을 이용하자.

간단한 예를 들어보자.


BMSG 0129 WM_COMMAND




$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

여기서 부턴 원저작자와 이것을 수정한 +gthorne에 대한 저작권 표시입니다......................

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$


Note *from the original author*

------------------------------

These aren't the only win32 api calls you need to know in order to crack windows.There are many

many more that programs will use, many are derivatives of these calls. Try substituting a W for

the A at the end of some calls, or placingan Ex right before the A. Also, in SoftIce, typing

'EXP GETPRIVATEPROFILE'will give you a list of all of the procs to read from .ini files, and th-

ereare more than the ones i have listed.



The above statement referring to many many calls is actually an uderstatement

Windows being as overbloated a mess of code as it is, the lists of calls is rather insane.


in one of my OrcPaks, i released a list of wm_* calls

(shamelessly grep'ped from the windows header files)

and if you have seen the DOS interrupt files as well, you have only seen the tip of the iceberg.


At one point I found it useful to go through the intlist and make a file full of all references

to CD-ROM and MSCDEX calls alone (why do I mention these DOS interrupts in this file? SIMPLE:

16-bit windows - which many programs still are written in and use today use mostly DOS calls to

handle protection schemes - like file times, etc... but that is another file ;)


+gthorne'97


ps - anything you think I should have added but left out?


let me know - i am always open to suggestions



p.s : 오타 지적해주신 +recrack님께 감솨 *^^*


덧글|신고