Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 20:07 16.05.24 
Клубове/ Компютри и Интернет / Хакери, Кракери .... Пълен преглед*
Информация за клуба
Тема Работа със SoftIce [re: kube]
Автор azazelo (хаймана)
Публикувано03.08.04 22:07  



Работа със Soft ICE
Intro
В документа не са обяснени действията на асемблерските инструкции! Ако не ги знаете първо се
захванете малко с assember и тогава прочетете документа

Не може човек да се нарече кракер ако не може да работи със SoftICE. Последна версия на SoftICE
може да бъде изтеглена от www.numega.com. Инсталацията предполагам няма да ви бъде проблемна.
Натискате няколко пъти Next и това е всичко (а ако все пак ви затрудни явно тази статия не е за
вас...както и всичко свързано с компютри).
Сега нека видим що за чудо е тази програма.
SoftICE е не просто обикновен windows debugger, а програма, която може да управлява цялата ви
система на хардуерно ниво. Какво ще рече това?
Да вземем за пример w32dasm...той просто деасамблира даден файл и изкарва асемблерския му код.
SoftICE има съвсем друга функция. Ако сте забелязали в процеса на инсталация, програмата проме-
ня вашия autoexec.bat, така че да може да се стартира преди зареждане на win.com
Направете следният опит. Натиснете F8 преди компютърът ви да boot-не и след това Shift+F8, Enter
Сега ще имате възможност да казвате кои редове от autoexec.bat и config.sys да бъдат изпълнени.
Последния ред на autoexec.bat ще ви попита искате ли да стартирате winice. Отговорете с Yes и...
както виждате цялата операционна система Windows ще бъде стартирана чрез SoftICE. Ето малко по-
подробно описание какво прави SoftICE:

1) Минава в режим 80x25 и извежда copyright съобщение
2) Проверява дали вече Windows не е стартиран...ако е така го изключва
3) Проверява вида на процесора...Ако е 386 програмата извежда съобщение, че процесора не поддър-
жа 32 битови регистри и излиза
4) Стартира основната част на програмата
5) Чете настройките от winice.dat и winice.brk
6) Проверява за win.com
7) Отваря KRNL386.EXE, USER.EXE, GDI.EXE, WIN386.EXE, DOS386.EXE (ако са посочени в winice.dat)
8) Стартира win.com

Активиране
Както разбрахте може би SoftICE не е Windows проргама, която да се стартира от някакъв
shortcut, а програма, която прихваща събитията които Windows праща към компютъра ви. Забелязъл
съм, че някои хора мислят, че SoftICE се състои в програмата Symbol Loader, която е достъпна от
Start/Programs/NuMega SoftICE. Това НЕ е така. SoftICE се активира чрез натискане на Ctrl+D
Деактивира се по същия начин

WinICE.DAT
Това е основния конфигурационен файл на програмата. Намира се в нейната директория. За да може-
те да използувате WinICE за 32 битови API функции този файл трябва да се редактира като в него
се укажат някои редове:
LOAD=c:\windows\system\user.exe
LOAD=c:\windows\system\gdi.exe
LOAD=c:\windows\system\krnl386.exe
LOAD=c:\windows\system\mmsystem.dll
LOAD=c:\windows\system\win386.exe

EXP=c:\windows\system\kernel32.dll
EXP=c:\windows\system\user32.dll
EXP=c:\windows\system\gdi32.dll
EXP=c:\windows\system\comdlg32.dll
EXP=c:\windows\system\shell32.dll
EXP=c:\windows\system\advapi32.dll
EXP=c:\windows\system\shell232.dll
EXP=c:\windows\system\comctl32.dll
EXP=c:\windows\system\crtdll.dll
EXP=c:\windows\system\version.dll
EXP=c:\windows\system\netlib32.dll
EXP=c:\windows\system\msshrui.dll
EXP=c:\windows\system\msnet32.dll
EXP=c:\windows\system\mspwl32.dll
EXP=c:\windows\system\mpr.dll

Тези редове ще укажат на програмата при стартиране да проверяват функциите в посочените библиоте-
ки и по този начин ще бъдат разпознати от програмата когато се задават като bpx (виж надоле)

За да запазите настроиките на прозорците и големината на екрана редактирайте реда "INIT=..." с
командите, които искате да се изпълнят при стартирането разделени с ";"


BreakPoints
След като Windows е стартиран SoftICE си стои мирно и тихо в ъгъла до като не бъде повикана от
потребителя или не бъде прекъсната от breakpoint. (опа щях да забравя... ще се появи и като полу-
чите General Protection Fault ;) )
BreakPoint (точка на прекъсване) - това е място където програмата се прекъсва и изпълнението се
предава на SoftICE (ще го разберете нататък с примери)
SoftICE прихваща следните устройства - клавиатура, COM1, COM2, LPT1, мишка

Команди към SoftICE
Най-важното нещо в SoftICE са управляващите го командите. След като натиснете Ctrl+D може би ще
ви се стори, че прозорчето е доста малко. То може да бъде увеличено посредством следните команди:
width [80-160]
lines [25-43-50-60]
Аз работя винаги на width 80 и lines 60

Прозорци
В SoftICE има 7 основни прозореца
Main Window
Code Window
Data Window
Floating Point Stack Window
Locals Window
Registers Window
Call Stack Window
Watch Window

Ние в нашите примери няма да използуваме всички, така че ще обърна внимание само на някои от тях.
Main Window - това е прозореца, в който задавате команди. Той не може да бъде изключен. В долния
му десен ъгъл се показва програмата, чиято нишка се изпълнява
(Нишка(thread) се нарича отделен процес, който системата изпълнява. Както знаете Windows е много-
задачна ОС, а процесора не може да изпълнява повече от една операция на такт. Това налага ОС-а,
да организира изпълненето на отделните нишки във всеки един момент. Нишките се класифицират и
чрез приоритет, но това е друга тема. Общо казано системата постоянно върти всички процеси и за-
дава към процесора инструкции само от текущия процес. Това разбира се става с огромна скорост)

Тука е мястото да кажем какво е Handle на даден обект (hwnd). Под Handle се разбира уникален
идентификатор на всеки един обект (прозорец, бутон, текстово поле), чрез който идентификатор
системата извършва операции над него. Всъщност това е число от тип DWORD (32 битово), което не
може да бъде променяно програмно, а се дава на обекта при създаването му.

Code Window (включва/изключва се с командата WC) - показва инструкциите в паметта, текущата ин-
струкция, адреса на инструкцията и нейния машинен код
0028:C0007D7F 03C2 ADD EAX,EDX
^ ^ ^ ^
Сегмент и от- Машинен инструкцията параметри
местване на код. Ако
инструкцията при вас
липсва мо-
же да го
включите с
CODE ON
Data Windows (включва/изключва се с WD) - показва стойностите на дадени адреси от паметта. Съдър-
жанието на даден адрес може да се види с следната команда:
D seg:off - съответно сегмент и отместване
Скролирането става с Ctrl + Up/Down Arrow

Registers Windows - показва състоянието на всички регистри и флагове в процесора. Забележете, че
променянето на даден регистър е толкова лесно колкото да промените текст в текстова кутия. Със-
тоянието на даден регистър се променя с клавиша Ins или с командата R.

Информация за някои регистри
EIP - Този така добре познат Instruction Pointer сочи адреса в паметта където е следващата за
изпълнение инструкция. Ако искате да видите текущата инструкция можете да го направите с коман-
дата "."
CS - Code Segment - тука се съдържа сегмента на текущата инструкция
SS - Stack Segment - указател към сегмента на стека

Други команди
HBOOT - незабавно рестартира системата
BSTAT [номер] - показва статистика за определен номер breakpoint
HWND [процес] - показва всички hWND на процесите или само на определен процес
RS - скрива прозореца на SoftIce (до натискане на клавиш)
X - същото като Ctrl+D
FAULTS [ON/OFF] - прихваща/не прихваща Faults (Gerneral Protection Fault и други)
O порт стойност - изпраща на зададен порт определена стойност
OB - изпраща стойност с големина 1 байт
OW - изпраща стойност с големина 2 байта (word)
OD - изпраща стойност с големина 4 байта (d|ouble| word)
I порт - връща стойността на даден порт
IB - чете 1 байт
IW - чете 2 байта
ID - чете 4 байта
E, EB, ED, EW, ES, EL, ET [адрес] [стойност] -записват дадена стойност на даден адрес в паметта
EB - байт, EW - word, ED - dword, ES - single real(4 байта), EL - doubre real(8 байта),
ET - extended real (10 байта) ... на дали ще ви трябват, но все пак да се знаят
DATA [номер] - В SoftICE може да има до 4 Data windows като всеки от тях може да показва различ-
ни адреси от паметта. DATA [0..3] сменя активния data window
DIAL ON i=ATDP p=[номер] - набира зададения номер с указания init стринг (ATDP)
OFF - hang up
TASK - извежда информация за отделните задачи в системата
THREAD - извежда информация за текущите нишки (вж. горе)
U адрес - деасамблира зададения адрес в паметта и го показва на Code Window
G адрес - отива на определен адрес в паметта
R - сменя стойността на регистър или флаг
WMSG - показва списък с всички windows messages
. - отива на адреса където е следващата инструкция за изпълнение
? израз - пресмята даден израз... например "? 5+5"


Примери с командите на SoftICE
За да видите какви съобщения изпраща Windows към даден прозорец, за да го затвори направете сле-
дното
. Стартирайте Notepad
. Напишете hwnd Notepad
. Ще ви се покажат два реда. Първият Handle(hwnd) е на самия прозорец, а втория на текстовото
поле
. Сега напишете bmsg Handle1 . Handle1 е handle-a на прозореца.
. Натиснете Ctrl+D
. Сега натиснете Alt+F4
. И сега ще имате възможност да прегледате всички съобщения, които се пращат до прозореца. Раз-
бира се ако ви омръзне...BC *
WM_SYSCOMMAND
WM_CLOSE
....

За да накарате модема ви да набере някой без да ползувате командата DIAL
. Ако модема ви е на COMM1 [порт]=3F8 , ако е на COMM2 [порт]=2F8
. Задайте последователно с командата O на дадения порт следните стойности:
atdp0881001<cr> , като вместо символа пишете съответния му ascii код в hex вид,а на <cr>- 0A

Това са командите, които ще ни трябват за в бъдеще

Сега да се върнем на breakpoints. След като натиснеме Ctrl+D виждаме една голяма купчина инструк-
ции, които дори аз нямам търпение да ги преглеждам. В случая за crack на нас ни трябва най-често
определения код, който извършва да кажем проверка дали програмата е регистрирана. По този повод
са въведени breakpoints. Breakpoint както казахме е част от кода където програмата се прекъсва
и управлението се предава на SoftICE. Максимума на breakpoints е 256 т.е. не може да зададете
повече. Може да зададете breakpoint на следните събития:
- стартиране на програма/API функция
- четене или писане на определен регион от паметта
- извикване на дадено прекъсване
- четене или писане на I/O порт

Най-често на нас ще ни се налага да използуваме breakpoint за изпълнение на API функция. Напрмер
ако искаме да видим къде точно програмата проверява съдържанието на текстова кутия ще зададем
прекъсване при използуване на функцията GetWindowTextA. Ето сега как можем да зададем отделните
breakpoints

- за четене/писане на I/O порт
Инструкцията е BPIO - този breakpont следи за подаване на инструкции IN или OUT към процесора
- за извикване на дадено прекъсване
Инструкцията е BPINT - този breakpoint следи за подаване на инструкция INT към процесора
- за четене/писане на определен регион в паметта / определена стойност - BPM (ще бъдат разгле-
дани подробно в следващия tutorial)

- за изпълнение на фукнция - BPX

Последния вид събития, на които SoftICE реагира, това е пращането на message към даден прозорец.
Както знаете Windows контролира програмите като им изпраща отделни messages (съобщения). Ако си
отворите вашия API Viewer ще видите голяма част от дефиниции започващи с WM_ (Windows Message).
Например долните messages са за контрол над определен прозорец
' Window Messages
Public Const WM_NULL = &H0
Public Const WM_CREATE = &H1
Public Const WM_DESTROY = &H2
Public Const WM_MOVE = &H3
Public Const WM_SIZE = &H5
Breakpoint на windows message се задава с BMSG. И както следва той се задейства при изпращане на
даденото съобщение към прозореца

Breakpoint може да бъде поставен на определена част от кода черз двойно кликване върху него.
Ето още няколко команди за работа с breakpoints:
BL - показва списък със зададените breakpoints
BC [num] | * - изтрива даден номер breakpoint или съответно всички
BD [num] | * - временно деактивира дадения breakpoint
BE [num] | * - активира отново деактивиран breakpoint
BH - показва списък с използуваните преди breakpoints

Crack-ване на програма със SoftICE
Няма да се задълбочавам повече в теория за breakpoints, а ще продължим с примери... и то не с
коя да е програма ами със световно известната WinZip

Преди да започнем crack-ването на дадена програма трябва много добре да се запознаем с нея и
най-вече с частта, по която ще работим. В случая на WinZip ще искаме да премахнем началния про-
зорец, който ни "подсеща", че версията не била регистрирана и дрън дрън.
Добре! Да видим по отблизо за какво става въпрос
При стартиране на програмата се показва прозореца-"жертва". После това програмата спира изпълне-
ние до като не бъде натиснат бутона "I Accept". След натискане програмата продължава изпълнение-
то си и показва главния прозорец. Знаем че извикването на фукнция под assembler става с инструк-
цията CALL <адрес>. От тука веднага си правим сметка каква ще е нашата цел: Да премахнем инструк-
цията и да е заменим с друг код. Но първо трябва да намерим къде е тази инструкция "CALL"
В "Допълнение 1" има описание на основните API функции, на които трябва да слагаме breakpoint,
в отделните случаи. В нашия случай искаме да прихванем създаването на нов прозорец. За целта
слагаме следните bp on execution (bpx)
bpx ShowWindowEx
bpx ShowWindow
Стартираме програмата и...ХОП!...няма нищо. Явно програмата използува друг начин за показване на
прозореца...има много начини за това. Сега мисля, че е подходящо да вмъкна един лаф от "Синя
Бездна" - "Може да си най-умното животно, но пак си оставаш животно" :). Та и тука случая е
същия "Може да си най-умния прозорец, но все пак си оставаш прозорец". Щом е прозорец, той тряб-
ва да бъде създаден т.е. в паметта да се отдели място за този обект (по принцип, за да бъде съз-
даден един прозорец първо в паметта, за него първо трябва да бъде отделено място като за нов
обект, а самото показване е вече функция към обекта) . За наше щастие прозорец не може да се
създаде по друг начин освен чрез някои от следните функции:
CreateWindow
CreateWindowEx
CreateWindowExA
Тъй като CreateWindow е 16-битова функция, е изключваме и остават само последните две. Слагаме
breakpoint на тях,стартираме WinZip и виждаме, че breakpoint-а е активиран...Еврика. (Заб: Как-
то казах в началото, долу в дясно на Main Window е изписано името на процеса, който е извикал
API функцията. Има начин breakpoint-а да се ограничи да се активира само при искан от нас процес,
но за сега просто натиснете Ctrl+D един-два пъти до като процеса стане WinZip32)
Във всяко crack-ване със SoftICE, а и не само най-трудната част е да намерим къде е кода, който
трябва да crack-нем. Много пъти със SoftICE не можем да отидем точно на него, но сега поне знаем,
че сме близо. При извикване на функция връщания адрес се записва в стека. Сега след като се е
активирал breakpoint-а виждаме, че е маркирано името на функцията, а под него започва кода.
Знаем че при извикване на функция връщания адрес се записва в стека. Следователно е достатъчно
да използуваме инструкцията G <адрес>, за да отидем на този адрес. Но къде е той? Сегмента на
стека се съхранява в регистъра SS. А отместването в ESP (Stack Pointer). Та за да отидем на то-
зи адрес използуваме следния ред: G @SS:ESP. В SoftICE по подразбиране клавиша F11 изпълнява съ-
щата роля (действита с F-keys могат да се видят с командата FKEY). До тук добре. Натискаме F11 и
отиваме на мястото където е била извикана функцията.
Преди да продължим нататък нека да обърнем внимание на клавишите F8 и F10 и съответстващите им
команди T и P. Командата T изпълнява една инструкция независимо каква е тя, а P прескача инструк-
цията INT и кода в инструкцита CALL освен ако тя не е зададена като breakpoint.

Сега почваме с F10 да изпълняваме инструкциите една след друга(първо премахнете breakpoint-а с
bc *). Няма да се занимаваме с кода, понеже той не ни интересува в случая (защото идеята е просто
да намерим къде се показва прозореца). В един момент стигаме до CALL на функцията MoveWindow,
последвана малко по-долу с четери CALL-вания на функцията InsertMenuA. Работата е ясна. С Move-
Window се премества прозореца по средата на екрана, а с InsertMenuA се вкарват менютата към
Caption-а на прозореца(за второто е само предположение, но и без това не ни трябва). И сега след
второто повикване на InsertMenuA виждаме:
014F:00437FC7 E8B1B4FCFF CALL 00423470
(адреса няма да е същия)
След като натиснем F10 виждаме, че изкача нашия прозорец. Сега сложете пак breakpoint на
CreateWindowExA и отидете до същото място на програмата (не изпълнявайте инструкцията CALL,
а нека просто остане осветена).Адресът е 014F:00437FC7,а адреса на следващия ред е 014F:00437FCC.
Въведете командата: R EIP 00437FCC (пак повтарям, че адреса при вас няма да е като този). Хопа!
Прескочихме инструкцията CALL. Сега натиснете F5 (Ctrl+D или X). Бинго! Прозореца не се показа!
Но (ех това "но") опитайте да отворите един архив и да дезархивирате нещо..."WINZIP.EXE damaged,
please reload from distribution disk". Защита братче...както казах програмата не е случайна.
Е, да ама и ние не сме случайни. Сложете пак breakpoint и отидете на мястото на call-а. Нека пър-
во помислим какво всъщност е станало: Явно в функцията извикана от CALL-а се записва във файл,
в регистър или в паметта дадена стойност. По този начин при дезархивиране WINZIP се опитва да
прочете тази стойност и ако не е намери разбира, че сме се опитвали да е crack-нем и дава грешка.
Такаааа....казахме, че някъде вътре в този call се намира и друг call, който всъщност показва
прозореца на екрана (също така в него се съдържа и код, който записва дадена стойност някъде си).
В момента сме маркирали отново:
014F:00437FC7 E8B1B4FCFF CALL 00423470
Този път използувайте F8...както казахме F8 показва и trace-ва кода и в самите подпрограми.
Сега trace-вайте докато се покаже прозореца и запомнете адреса му (някъде между АДРЕС и АДРЕС2
(вж. по-долу))
Лесно се вижда кода, който сега трябва да бъде променен. Това е точно няколко реда под начало-
то на функцията:
....
TEST EAX, EAX <- проверява дали EAX=0
JNZ АДРЕС <- ако не е 0 прескача на дадения АДРЕС (в случая не е)
....
JMP АДРЕС2
АДРЕС:
....
CALL показване
....
АДРЕС2:
....
Това е принципа на кода и на всеки if-then оператор. Идеята е, че виждаме, че прехода към АДРЕС2
прескача изпълнението на функцията, която показва прозореца. Това е и нашата цел. Сега е доста-
тъчно да премахнем инструкциите TEST и JNZ, като по този начин програмата ще продължи към АДРЕС2
след JMP. С какво ще заменим инструкциите е описано по-долу. Сега важното е да разберем къде
се намира кода в изпълнимия файл, за да можем да го crack-нем. Ето кода който трябва да замес-
тим погледнат в SoftICE (потретвам че адресите при вас няма да съвпадат с моите:) ):
014F:004034C3 85C0 TEST EAX, EAX
014F:004034C5 0F851E000000 JNZ 004034E9

В началото казахме, че кодовете на инструкциите са във втората графа. Сега остава да отворим
изпълнимия файл (winzip32.exe) и да намерим къде в него се намират тези стойности(важно е да се
отбележи, че в много случаи файла може да не е EXE, а DLL, така че може да се наложи да преглеж-
даме доста файлове при по-големи програми).За целта отваряме редактора HackMan (може и друг, но
аз ползувам него), натискаме Ctrl+F (Find) и пишем "85C00F851E000000". Уфф..има го на доста места. Нищо де...просто запомнете кодовете на предход-
ната и следващата инструкция и търсете пак заедно с тях. Например търсете с:
85C00F851E000000C705C4CC4D00
Ето сега попаднахте вече на конкретното място. Погледнете отместването...0x28C3 (28C3 hex)
Големината е 8 байта както се вижда (2 за TEST и 6 за JNZ)
Ами с това кракването е приключено...остава да напишем crack!...


Писане на Crack
Явно да се crack-не нещо не е никак трудно. Но би ли било човешко да накараме обикновенния по-
требител, който преди два дена си е взел компютър (ние у наше село им викаме 'ламери', а в гра-
да се викат по-цивилизовано 'леймъри') да прави всички тези операции?
Не, абсурд! Това би било животинско поведение към човекия род. За това са измислени crack-четата.
Това е програма улесняваща целия този процес на кракване като просто променя малко изпълнимия
файл/библиотека.
В случая ще пишем crack-ове на Pascal :)
Е добре. Няма нищо трудно. Знаем отместването във файла, знаем и кода който трябва да заменим, а
също и с какво трябва да го заменим.Т.е. ако не сте чели предишните две части ще ви обясня пак
с какво може да се замени стария код.
Ако имаме нечетен брой байтове за сменяне ще заменим кода с $40, $48, $43, $4B, $41, $49 и това
се повтаря до като стигнем до позиция 2n-1 а на края пишем $90
Тези кодове отговарят на инструкциите: inc EAX; dec EAX ; inc EBX; dec EBX; inc ECX; dec ECX...
NOP
Вижте предишните части за повече информация как се извеждат

Ако имате четен брой байтове няма да ползуваме NOP в края
Остава просто да идем на даденото отместване във файла и да запишем новия код.
Ето примерна програма за crack на Winzip 6.2

Program WinZipCrack;

Const AuthorInfo = '--------------'#13#10'/ |) /\ / |/'#13#10'\ |\ |--| \ |\'#13#10+
'--------------'#13#10'WinZip 6.2 Crack by |Razor|';
{Prosto copyright message}
OffSet=$28C3; {Otmestwaneto}
Buffer:Array[0..7] Of Byte = ($40,$48,$43,$4B,$41,$49,$40,$48); {cheten broj bajtowe}

Var CrackedFile:String; {imeto na file-a}
F:File;

Procedure Copyrights; { As title say...}
Begin
WriteLn(AuthorInfo);
End;

Function OpenFile(FileName:String):Boolean; {Opitwa se da otwori file-a i ako ne moje...False}
Begin
OpenFile:=True;
Assign(F,FileName);
{$I-}
Reset(F,1);
{$I+}
If IOResult<>0 Then OpenFile:=False;
End;

Procedure CloseFile;
Begin
Close(F);
End;

Begin
Copyrights;
CrackedFile:='WinZip32.Exe';
If ParamCount=1 Then CrackedFile:=ParamStr(1); {програмата може да приеме като параметър
името на файлта ако не е winzip32.exe}
If OpenFile(CrackedFile)=True Then
Begin
Seek(F,OffSet); {Otiwame na otmeswaneto}
BlockWrite(F,Buffer,SizeOf(Buffer)); {Zapiswame bufera}
CloseFile;
End
Else
Begin {Ako fajla ne e nameren}
Writeln(CrackedFile, ' not found!');
Halt(0);
End;
Writeln;
Writeln('Poink%$#@!!! Crack Applied Successful!');
End.

Е мисля, че всичко ви стана ясно. Сега си изберете някоя друга програма и давайте газ!



Допълнение 1:
Функции, които трябва да прихващаме за отделните видове програми
Както казах най-трудното в процеса на кракване е да разберем къде е кода, който трябва да проме-
ним. С помощта на SoftICE можем да се доближим максимално до този код и след това с tracing
(изпълняване на инструкциите една след друга) да го достигнем.
Но все пак трябва да се знае какви функции да прихващаме за отделните случаи:

1) Четене на текст от текстова кутия - при регистриране на програми със сериен номер
GetWindowText - 16 битова
GetWindowTextA - 32 битова
GetDlgItemText - 16 битова за диалогови прозорци
GetDlgItemTextA - 32 битова за диалогови прозорци
GetDlgItemInt - за четене на integer-и

2) Четене на системното време - за crack на програми с лимит във времето на ползуване
GetSystemTime
GetLocalTime

3) Показване на прозорец - като случая с WinZip също и много много други, които показват
такива подсещащи ни прозорци
CreateWindow - създаване на прозорец - 16 битова
CreateWindowExA - създаване на прозорец - 32 битова
ShowWindow - показване на прозореца

4) Четене и записване във файлове - това се прилага когато се знае, че програмата проверява от
файл дали е регистрирана или нещо такова. Универсално още.
ReadFile, ReadFileEx - четене (отбележете, че Ex се използува просто с повече параметри)
WriteFile, WriteFileEx - записване
SetFilePointer - позициониране във файла

5) Операции с регистъра - WinZip 8.0 записва информацията за това дали е регистрирана в рег.
RegOpenKey - отваря ключ
RegOpenKeyA - 32 битова
RegCloseKey - затваря ключ
RegCloseKeyA - 32 битова
RegCreateKey(A) - създава ключ съответно 16 и 32 битова
RegDeleteKey(A) - изтрива ключ
RegQueryValue(A) - чете стойност от ключ

6) Операции над INI файлове
GetPrivateProfileString(A) - чете информация от INI файл
WritePrivateProfileString(A) - записва информация в INI файл
GetPrivateProfileInt(A) , WritePrivateProfileInt(A) - съответно чете/записва числови стойности

7) Работа с message boxes - като тази например, която ни написа "WINZIP.EXE damaged...". Тези
прихващания работят добре с back-tracing т.е. след като веднъж сме
видяли къде се използуват да видим кода назад и да разберем къде е
правена проверка дали да се изпълни кода или не
MessageBox - 16 битова
MessageBoxA - 32 битова
MessageBoxExA - 32 битова

8) Работа със CD-ROM - за crack на програми, които не искат да вървят без CD
GetDriveType - проверява какъв тип е дадено устройство (CD, HDD, FDD...)
GetDriveTypeA - 32 битова
GetLogicalDrives - информация за наличните устройства
GetLogicalDrivesA - 32 битова



Цялата тема
ТемаАвторПубликувано
* Не мога да си пусна Softice под XP kube   03.08.04 19:21
. * Работа със SoftIce azazelo   03.08.04 22:07
. * Re: Работа със SoftIce Astral   03.08.04 22:12
. * Да ме прощаваш azazelo AliBabach   03.08.04 22:36
. * Re: Да ме прощаваш azazelo azazelo   03.08.04 22:45
. * Re: Да ме прощаваш azazelo azazelo   03.08.04 23:13
. * Re: Да ме прощаваш azazelo kube   04.08.04 13:16
. * Re: Работа със SoftIce лyдия xakep   10.08.04 11:14
. * Re: Не мога да си пусна Softice под XP azazelo   03.08.04 22:16
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.