DOS & Black
Вторник, 03.12.2024, 20:31
Приветствую Вас DOS
Главная | Регистрация | Вход | RSS

Пишем кряк - Форум

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Пишем кряк
DOSДата: Понедельник, 15.06.2009, 11:03 | Сообщение # 1
Генералиссимус
Группа: Администратор
Сообщений: 709
Репутация: 102
Статус: Offline
Эту статью можно назвать продолжением статьи "Взламываем защиту CDRWin".

Сегодня мы рассмотрим то, как простейшим образом написать кряк. Делать это мы будем на 3 самых популярных в данное время языках программирования: Делфи, Си и ассемблер.
Использовать будем функции WinAPI: CreateFile, SetFilePointer, WriteFile. Думаю что первая и третья функции у вас не вызовут вопросов, название говорит само за себя. Для тех кто не знает скажу, что функция SetFilePointer делает смещение в нужное нам место(offset).
Мы уже знаем, что нам надо заменить в файле cdrwin5.exe байты, расположенные по адресам 003D99 и 0018871, на байт EB (в 16ом виде), чтобы переход был безусловным.

Итак, приступим. Я сразу приведу все 3 исходных кода с комментариями.

Delphi:

program cdrwincrk;
{$APPTYPE CONSOLE}
uses Windows;

var iByteWrt:Cardinal;
hFile:THandle;
const JmpByte:integer=$EB;

Begin
Writeln('Crack for CDRWin v5.01 - 5.02 by Over G[DWC Gr0up]');
hFile:=CreateFile('cdrwin5.exe',GENERIC_WRITE,FILE_SHARE_READ,nil,OPEN_EXISTING,0,0);
SetFilePointer(hFile,$3D99,nil,0); //Смещение на 003D99
WriteFile(hFile, JmpByte, 1, iByteWrt, nil); //Пишем байт $EB по адресу 003D99
SetFilePointer(hFile,$18871,nil,0); //Смещение на 0018871
WriteFile(hFile, JmpByte, 1, iByteWrt, nil); //Пишем байт $EB по адресу 0018871
CloseHandle(hFile);//Закрываем файл
Writeln('File Successfull cracked!'+#13#10+'Press ENTER to exit');
Readln;
End.


:)
 
DOSДата: Понедельник, 15.06.2009, 11:04 | Сообщение # 2
Генералиссимус
Группа: Администратор
Сообщений: 709
Репутация: 102
Статус: Offline
C++

#include "windows.h"

int main(int argc, char* argv[])
{
char JmpByte[] = "xeb";

HANDLE hFile;
DWORD iByteWrt = 0;

printf("Crack for CDRWin v5.01 - 5.02 by Over G[DWC Gr0up] ");
hFile=CreateFile("cdrwin5.exe",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,0);
SetFilePointer(hFile,0x3D99,NULL,0); //Смещение на 003D99
WriteFile(hFile, JmpByte, 1, &iByteWrt, NULL); //Пишем байт EB по адресу 003D99
SetFilePointer(hFile,0x18871,NULL,0); //Смещение на 0018871
WriteFile(hFile, JmpByte, 1, &iByteWrt, NULL); //Пишем байт EB по адресу 0018871
CloseHandle(hFile); //Закрываем файл
printf("File Successfull cracked!");
return 0;
}

ASM:

.386
.model flat,stdcall
option casemap:none

include masm32includewindows.inc
include masm32includeuser32.inc
include masm32includekernel32.inc
includelib masm32libuser32.lib
includelib masm32libkernel32.lib

.data
AppName db "Crack for CDRWin v5.01 - 5.02 by Over G[DWC Gr0up]",0
isOK db " File successfull cracked!",0
CrkPrg db "cdrwin5.exe",0
JmpByte db 0EBh

.data?
hFile HANDLE ?
hWnd HANDLE ?
SizeWrite DWORD ?

.code
start:
invoke MessageBox,hWnd,ADDR AppName,ADDR AppName,64
invoke CreateFile,ADDR CrkPrg,GENERIC_WRITE, FILE_SHARE_WRITE, NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL
mov hFile,eax
invoke SetFilePointer,hFile,03D99h,NULL,0 //Смещение на 003D99
invoke WriteFile,hFile,ADDR JmpByte,1,ADDR SizeWrite,NULL //Пишем байт EB по адресу 003D99
invoke SetFilePointer,hFile,018871h,NULL,0 //Смещение на 0018871
invoke WriteFile,hFile,ADDR JmpByte,1,ADDR SizeWrite,NULL //Пишем байт EB по адресу 0018871
invoke CloseHandle,hFile
invoke MessageBox,hWnd,ADDR isOK,ADDR AppName,64
ret
end start


:)
 
  • Страница 1 из 1
  • 1
Поиск: