Полезно за вас: Речник | Игри | Новини | Фирми | Рецепти | Обяви
Начало на реферати

Асемблер за кракери


Информационни технологии | 2009-12-04 | 101 сваляния

Асемблер за кракери




AND

Употреба:

AND dest,src

Резултат:

Извършва логическо И(AND) на две входни данни и замества dest с резултата.

Пример:

AND BX,03h




CALL

Употреба:

CALL address

Резултат:

Изпълнява функция на адрес 'address'

Пример:

CALL 10284312


След завършването на функцията с командата ret изпълнението се връща на командата след CALL.




CMP

Употреба:

CMP dest,src

Резултат:

Сравнява dest със src и променя флаговете .

Пример:

CMP AX,03h


Това е най-важната инструкция от наша гледна точка. С нея програмата проверява например: дали въведения сериен номер е еднакъв със истинския, дали времето през което ползваме програмата не е по-голямо от trial периода и т.н.

Нормално тази инструкция предхожда инструкция за условен преход.




Flags

Флаговете приличат на регистрите , но за разлика от тях получават само две стойности true(истина) или false(лъжа) (или 0 и 1). Установяват се от команди като предходната CMP, и се ползват за проверка на резултата :

CMP AX, BX ; Сравни AX с BX, и ако са равни zero flag e равен на 1

JZ 00124531 ; Ако zero flag е 1, скочи на 001254531

MOV

Употреба:

MOV dest,src

Резултат:

Премества стойността на dest в src

Пример:

MOV AX,10

Използва се за преместване на стойност от едно място на друго.

JMP

Употреба:

JMP address

Резултат:

Безусловен преход на адрес 'address'

Пример:

JMP 00402011


JMP се ползва за безусловен преход (unconditional jump) на адрес. Има много разновидности на операторите за преход. Поради тяхната важност за нашата дейност са извадени в отделна таблица.

Пример за ползване на CMP инструкцията:

CMP RealSerial,BadSerial ; СравниИстинският сериен номер с грешния.

JNE МахайСеЛошКракер ; Ако не са еднакви (If Not Equal) излез.



Registers

Регистрите обикновенно са мястото, където се съхраняват данните. Тези, които ни интересуват са:


(E)AX, (E)BX, (E)CX, (E)DX (E) се появява, когато дебъгваме 32-Bit код.


За регистрите засега е достатъчно да знаете, че са променливи които съхраняват данни.





RET

Употреба:

RET

Резултат:

Връщане (return) от функция извикана с CALL.

Пример:

RET

Винаги ще видите тази команда на края на функция. Тя просто инструктира процесора да се върне на адреса след CALL.



Push и POP - две инструкции за използване на стека

Push

Употреба:

Push Register

Резултат:

Поставя данни на върха на стека.

Пример:

Push eax


Pop

Употреба:

Pop Register

Резултат:

Поставя данни от върха на стека в регистър.

Пример:

Pop eax


За да се изясни идеята ще дам за пример код, който разменя стойностите на EAX и ЕCX:

push ecx поставя ecx в стека

push eax поставя eax в стека

pop ecx поставя стойността от върха на стека в ecx

pop eax поставя стойността от върха на стека в eax



Оператори за преход


download

Jump

Описание

Hex код

JA

скочи ако е повече

jump if above

77 или 0F87

JAE

скочи ако е повече или равно

jump if above or equal

73 или 0F83

JB

скочи ако е по-ниско

jump if below

72 или 0F82

JBE

скочи ако е по-ниско или равно

jump if below or equal

76 или 0F86

JE

скочи ако е равно

jump if equal

74 или 0F84

JG

скочи ако е по-голямо

jump if greater

7F или 0F8F

JGE

скочи ако е по-голямо или равно

jump if greater or equal

7D или 0F8D

JL

скочи ако е по-малко

jump if less

7C или 0F8C

JLE

скочи ако е по-малко или равно

jump if less or equal

7E или 0F8E

JMP

безусловен преход

EB

JNA

скочи ако не е повече

jump if not above

76 или 0F86

JNAE

скочи ако не е повече или равно

jump if not above or equal

72 или 0F82

JNB

скочи ако не е по-ниско

jump if not below

73 или 0F83

JNBE

скочи ако не е по-ниско или равно

jump if not below or equal

77 или 0F87

JNE

скочи ако не е равно

jump if not equal

75 или 0F85

JNG

скочи ако не е по-голямо

jump if not greater

7E или 0F8E

JNGE

скочи ако не е по-голямо или равно

jump if not greater or equal

7C или 0F8C

JNL

скочи ако не е по-малко

jump if not less

7D или 0F8D

JNLE

скочи ако не е по-малко или равно

jump if not less or equal

7F или 0F8F

JNZ

скочи ако не е нула

jump if not zero

75 или 0F85

JZ

скочи ако е нула

Jump if zero

74 или 0F84

NOP

не прави нищо

90

Call

виж CALL

CALL ( Address/ ******** )

E8********




ASCII таблица


download

В Асемблер се ползват шестнайсетичните стойности на символите. Всички те са включени в таблицата, която може да си свалите по-горе.





Какво e API (Application Programming Interface) функция. Нищо по-различно от функция или процедура на езици като Pascal, C++ или Visual Basic. Това е част от програмен код, на която се подават входящи параметри и тя връща резултат.

Защо са ни необходими API функциите. Всички програми под Windows задължително ползват API за най-различн цели: четене на файл, вземане на серийния номер, отваряне на reg key, извикване на NAG screen или въобще неща, които са безкрайно интересни за кракера. Подробно обяснение за действието на всяка функция няма да давам. Достатъчно за начинаещия е да знае коя функция за какво се използва (в голяма степен можете да се ориентирате за предназначението им по името). За по-любознателните от вас препоръчвам да си свалите този файл. И така:

API Функции


download

Сериен номер


bpx hmemcpy (най-важната)
bpx GetDlgItemText /GetDlgItemTextA
bpx GetWindowText /GetWindowTextA

Диалогов прозорец


bpx MessageBoxА
bpx MessageBoxExA
bpx MessageBeep
bpx SendMessage/SendMessageА

bpx DialogBoxParam/DialogBoxParamA
bpx CreateWindow
bpx CreateWindowEx
bpx ShowWindow
bpx UpdateWindow
bpx CreateDialogParamA

Trial програми


bpx GetLocalTime
bpx GetFileTime
bpx GetSystemtime
bpx GetTickCount
bpx SystemTimeToFileTime

CD-ROM проверка и
Hard Disk


bpx CreateFileA
bpx GetDiskFreeSpaceA
bpx GetFileAttributesA
bpx GetFileSize
bpx GetDriveTypeA
0 Drive can't be determinded
1 Drive can't be determinded
2 Root Directory does not exist
3 Fixed Drive (Harddisk)
4 Remote Drive (Network)
5 CD-ROM-Drive
6 RAM-Disk
bpx GetFullPathNameA
bpx GetLastError
bpx ReadFile

Действия с файл


bpx ReadFile/ReadFileА
bpx WriteFile
bpx CreateFile/CreateFileА
bpx SetFilePointer
bpx GetSystemDirectory

Действия с INI файл


bpx GetPrivateProfileString
bpx GetPrivateProfileInt
bpx WritePrivateProfileString
bpx WritePrivateProfileInt

Действие с Registry


bpx RegCreateKey/RegCreateKeyA
bpx RegCreateKeyExA
bpx RegDeleteKey/RegDeleteKeyA
bpx RegDeleteValueA
bpx RegOpenKeyA
bpx RegQueryValueA
bpx RegQueryValueExA
bpx RegCloseKey
bpx RegOpenKey

Заб. По-новите програми работят с API функциите завършващи с А.



Какво ви е нужно за да започнете:

  1. Най-важно е да имате дебъгер и деасемблатор. За дебъгера прочетете S-Ice Tutor. Относно деасемблатора може би първото средство, което ще ползвате ще бъде W32Dasm. Версията, която аз имам е 8.9. Намерете я и вие. Подробни разяснения за W32Dasm няма да давам, защото програмата е направена пределно опростено и ясно. Това, което най-често ще ползвате ще е 'String Data References', даващо ви списък на String-овете (Пример 'Thank You (for registering)', 'Wrong Serial', 'Invalid Serial' и т.н. След като намерите това, което ви интересува, кликнете два пъти върху него и сте в програмния код. След това потърсете, инструкция за преход (jne, jz, jbe и т.н.) преди стринга и изтълкувайте какво прави тя. Може би кракът вече е готов.

  2. Нужен ви е добър Hex редактор. Защо?: за да можете да промените (кракнете) програмата, затова. Задължително ви трябва Hiew 6.xx. Този редактор съдържа вграден асемблер, който върши отлична работа. Можете да идете на offset така като го виждате в S-Ice {и в W32Dasm в прозореца с кода(маркировката с жълто). Но W32dasm за разлика от S-Ice ви дава и File Offset(червено) .Как става това: F5(go to)-> след това за да отидете на Code Data пишете .xxxxxxxx , а за да стигнете до File offset(червеното)напишете само(без точка) xxxxxxxx (xxxxxxxx естествено е адреса, на който искате да отидете)}. Hiew има и


Асемблер за кракери

Добави своя коментар:



Тагове от реферата: , , , ,


Подобни материали


Какво представлява DLL- файла Информационни технологии | 2010-11-15 | 97 прочитания
ИНФОРМАЦИЯ И ИНФОРМАЦИОННИ СИСТЕМИ Информационни технологии | 2010-11-15 | 88 прочитания
Работа с интерактивен манипулатор тип мишка. Протоколи на обмен. Управление Информационни технологии | 2010-11-15 | 68 прочитания
Редица от числа-сходимост,свойства Информационни технологии | 2010-11-15 | 80 прочитания
Photoshop Информационни технологии | 2010-11-15 | 122 прочитания
Проектиране на базата данни и нормализация Информационни технологии | 2010-11-15 | 83 прочитания
Компютърни информационни системи Информационни технологии | 2010-11-15 | 238 прочитания
Създаване на таблици Информационни технологии | 2010-11-15 | 163 прочитания
Локалните мрежи Информационни технологии | 2010-11-15 | 45 прочитания
Процес на резолвинг на имена. DNS-конфигурационни файлове Информационни технологии | 2010-11-15 | 71 прочитания