Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить серийный номер процессора 
:(
    Опции темы
Нитонисе
Дата 6.1.2010, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Как можно получить серийный номер процессора? Либо какого нибудь другого устройства (материнская плата, жесткий диск). Если не серийник, то какую либо другую уникальную информацию. Это нужно для привязки программы к конкретному компьютеру.
PM MAIL   Вверх
Rodman
Дата 6.1.2010, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



*.h
Код

/****************************************************************************
*                                                                           *
* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY     *
* KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE       *
* IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR     *
* PURPOSE.                                                                  *
*                                                                           *
* Copyright 1993-98  Microsoft Corporation.  All Rights Reserved.           *
*                                                                           *
****************************************************************************/

/****************************************************************************
*
* PROGRAM: SMART.H
*
* PURPOSE: Structure definitions for an application that calls SMART Ioctls
*
****************************************************************************/

#ifndef SMARTIOCTL_INCLUDED
#define SMARTIOCTL_INCLUDED

// Miscellaneous

#define    MAX_IDE_DRIVES    4    // Max number of drives assuming primary/secondary, master/slave topology
#define READ_ATTRIBUTE_BUFFER_SIZE    512
#define IDENTIFY_BUFFER_SIZE        512
#define READ_THRESHOLD_BUFFER_SIZE    512

//
// IOCTL commands
//
#define    DFP_GET_VERSION            0x00074080
#define    DFP_SEND_DRIVE_COMMAND    0x0007c084
#define DFP_RECEIVE_DRIVE_DATA    0x0007c088

//---------------------------------------------------------------------
// GETVERSIONOUTPARAMS contains the data returned from the 
// Get Driver Version function.
//---------------------------------------------------------------------
typedef struct _GETVERSIONOUTPARAMS {
    BYTE    bVersion;        // Binary driver version.
    BYTE    bRevision;        // Binary driver revision.
    BYTE    bReserved;        // Not used.
    BYTE    bIDEDeviceMap;    // Bit map of IDE devices.
    DWORD    fCapabilities;    // Bit mask of driver capabilities.
    DWORD    dwReserved[4];    // For future use.
} GETVERSIONOUTPARAMS, *PGETVERSIONOUTPARAMS, *LPGETVERSIONOUTPARAMS;

//
// Bits returned in the fCapabilities member of GETVERSIONOUTPARAMS 
//
#define    CAP_IDE_ID_FUNCTION                1    // ATA ID command supported
#define    CAP_IDE_ATAPI_ID                2    // ATAPI ID command supported
#define    CAP_IDE_EXECUTE_SMART_FUNCTION    4    // SMART commannds supported

//---------------------------------------------------------------------
// IDE registers
//---------------------------------------------------------------------
typedef struct _IDEREGS {
    BYTE    bFeaturesReg;        // Used for specifying SMART "commands".
    BYTE    bSectorCountReg;    // IDE sector count register
    BYTE    bSectorNumberReg;    // IDE sector number register
    BYTE    bCylLowReg;            // IDE low order cylinder value
    BYTE    bCylHighReg;        // IDE high order cylinder value
    BYTE    bDriveHeadReg;        // IDE drive/head register
    BYTE    bCommandReg;        // Actual IDE command.
    BYTE    bReserved;            // reserved for future use.  Must be zero.
} IDEREGS, *PIDEREGS, *LPIDEREGS;

//---------------------------------------------------------------------
// SENDCMDINPARAMS contains the input parameters for the 
// Send Command to Drive function.
//---------------------------------------------------------------------
typedef struct _SENDCMDINPARAMS {
    DWORD    cBufferSize;        // Buffer size in bytes
    IDEREGS    irDriveRegs;        // Structure with drive register values.
    BYTE    bDriveNumber;        // Physical drive number to send 
                                // command to (0,1,2,3).
    BYTE    bReserved[3];        // Reserved for future expansion.
    DWORD    dwReserved[4];        // For future use.
    BYTE    bBuffer[1];            // Input buffer.
} SENDCMDINPARAMS, *PSENDCMDINPARAMS, *LPSENDCMDINPARAMS;

//
// Valid values for the bCommandReg member of IDEREGS.
//
#define    IDE_ATAPI_ID                0xA1    // Returns ID sector for ATAPI.
#define    IDE_ID_FUNCTION                0xEC    // Returns ID sector for ATA.
#define    IDE_EXECUTE_SMART_FUNCTION    0xB0    // Performs SMART cmd.
                                            // Requires valid bFeaturesReg,
                                            // bCylLowReg, and bCylHighReg
//
// Cylinder register values required when issuing SMART command
//
#define    SMART_CYL_LOW    0x4F
#define    SMART_CYL_HI    0xC2

//---------------------------------------------------------------------
// Status returned from driver
//---------------------------------------------------------------------
typedef struct _DRIVERSTATUS {
    BYTE    bDriverError;        // Error code from driver, 
                                // or 0 if no error.
    BYTE    bIDEStatus;            // Contents of IDE Error register.
                                // Only valid when bDriverError
                                // is SMART_IDE_ERROR.
    BYTE    bReserved[2];        // Reserved for future expansion.
    DWORD    dwReserved[2];        // Reserved for future expansion.
} DRIVERSTATUS, *PDRIVERSTATUS, *LPDRIVERSTATUS;

//
// bDriverError values
//
#define    SMART_NO_ERROR            0    // No error
#define    SMART_IDE_ERROR            1    // Error from IDE controller
#define    SMART_INVALID_FLAG        2    // Invalid command flag
#define    SMART_INVALID_COMMAND    3    // Invalid command byte
#define    SMART_INVALID_BUFFER    4    // Bad buffer (null, invalid addr..)
#define    SMART_INVALID_DRIVE        5    // Drive number not valid
#define    SMART_INVALID_IOCTL        6    // Invalid IOCTL
#define    SMART_ERROR_NO_MEM        7    // Could not lock user's buffer
#define    SMART_INVALID_REGISTER    8    // Some IDE Register not valid
#define    SMART_NOT_SUPPORTED        9    // Invalid cmd flag set
#define    SMART_NO_IDE_DEVICE        10    // Cmd issued to device not present
                                    // although drive number is valid
// 11-255 reserved

//---------------------------------------------------------------------
// Structure returned by SMART IOCTL for several commands
//---------------------------------------------------------------------
typedef struct _SENDCMDOUTPARAMS {
    DWORD            cBufferSize;        // Size of bBuffer in bytes
    DRIVERSTATUS    DriverStatus;        // Driver status structure.
    BYTE            bBuffer[1];            // Buffer of arbitrary length in which to store the data read from the                                            // drive.
} SENDCMDOUTPARAMS, *PSENDCMDOUTPARAMS, *LPSENDCMDOUTPARAMS;


//---------------------------------------------------------------------
// Feature register defines for SMART "sub commands"
//---------------------------------------------------------------------
#define SMART_READ_ATTRIBUTE_VALUES                0xD0    // ATA4: Renamed 
                                                        // SMART READ DATA
#define    SMART_READ_ATTRIBUTE_THRESHOLDS            0xD1    // Obsoleted in ATA4!
#define SMART_ENABLE_DISABLE_ATTRIBUTE_AUTOSAVE    0xD2
#define SMART_SAVE_ATTRIBUTE_VALUES                0xD3
#define    SMART_EXECUTE_OFFLINE_IMMEDIATE            0xD4    // ATA4
// Vendor specific commands:
#define    SMART_ENABLE_SMART_OPERATIONS            0xD8
#define    SMART_DISABLE_SMART_OPERATIONS            0xD9
#define    SMART_RETURN_SMART_STATUS                0xDA

#endif

//---------------------------------------------------------------------
// The following structure defines the structure of a Drive Attribute
//---------------------------------------------------------------------
typedef    struct    _DRIVEATTRIBUTE {
    BYTE    bAttrID;        // Identifies which attribute
    WORD    wStatusFlags;    // see bit definitions below
    BYTE    bAttrValue;        // Current normalized value
    BYTE    bWorstValue;    // How bad has it ever been?
    BYTE    bRawValue[6];    // Un-normalized value
    BYTE    bReserved;        // ...
} DRIVEATTRIBUTE, *PDRIVEATTRIBUTE, *LPDRIVEATTRIBUTE;

//---------------------------------------------------------------------
// The following structure defines the structure of a Warranty Threshold
// Obsoleted in ATA4!
//---------------------------------------------------------------------
typedef    struct    _ATTRTHRESHOLD {
    BYTE    bAttrID;            // Identifies which attribute
    BYTE    bWarrantyThreshold;    // Triggering value
    BYTE    bReserved[10];        // ...
} ATTRTHRESHOLD, *PATTRTHRESHOLD, *LPATTRTHRESHOLD;

//---------------------------------------------------------------------
// The following struct defines the interesting part of the IDENTIFY
// buffer:
//---------------------------------------------------------------------
typedef struct _IDSECTOR {
    USHORT    wGenConfig;
    USHORT    wNumCyls;
    USHORT    wReserved;
    USHORT    wNumHeads;
    USHORT    wBytesPerTrack;
    USHORT    wBytesPerSector;
    USHORT    wSectorsPerTrack;
    USHORT    wVendorUnique[3];
    CHAR    sSerialNumber[20];
    USHORT    wBufferType;
    USHORT    wBufferSize;
    USHORT    wECCSize;
    CHAR    sFirmwareRev[8];
    CHAR    sModelNumber[40];
    USHORT    wMoreVendorUnique;
    USHORT    wDoubleWordIO;
    USHORT    wCapabilities;
    USHORT    wReserved1;
    USHORT    wPIOTiming;
    USHORT    wDMATiming;
    USHORT    wBS;
    USHORT    wNumCurrentCyls;
    USHORT    wNumCurrentHeads;
    USHORT    wNumCurrentSectorsPerTrack;
    ULONG    ulCurrentSectorCapacity;
    USHORT    wMultSectorStuff;
    ULONG    ulTotalAddressableSectors;
    USHORT    wSingleWordDMA;
    USHORT    wMultiWordDMA;
    BYTE    bReserved[128];
} IDSECTOR, *PIDSECTOR;

//---------------------------------------------------------------------
// Valid Attribute IDs
//---------------------------------------------------------------------
#define    ATTR_INVALID                0
#define ATTR_READ_ERROR_RATE        1
#define ATTR_THROUGHPUT_PERF        2
#define ATTR_SPIN_UP_TIME            3
#define ATTR_START_STOP_COUNT        4
#define ATTR_REALLOC_SECTOR_COUNT    5
#define ATTR_READ_CHANNEL_MARGIN    6
#define ATTR_SEEK_ERROR_RATE        7
#define ATTR_SEEK_TIME_PERF            8
#define ATTR_POWER_ON_HRS_COUNT        9
#define ATTR_SPIN_RETRY_COUNT        10
#define ATTR_CALIBRATION_RETRY_COUNT 11
#define ATTR_POWER_CYCLE_COUNT        12

//---------------------------------------------------------------------
// Status Flags Values
//---------------------------------------------------------------------
#define    PRE_FAILURE_WARRANTY        0x1
#define    ON_LINE_COLLECTION            0x2
#define    PERFORMANCE_ATTRIBUTE        0x4
#define    ERROR_RATE_ATTRIBUTE        0x8
#define    EVENT_COUNT_ATTRIBUTE        0x10
#define    SELF_PRESERVING_ATTRIBUTE    0x20

#define    NUM_ATTRIBUTE_STRUCTS         30

smartapp.h:

/****************************************************************************
*                                                                           *
* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY     *
* KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE       *
* IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR     *
* PURPOSE.                                                                  *
*                                                                           *
* Copyright 1993-98  Microsoft Corporation.  All Rights Reserved.           *
*                                                                           *
****************************************************************************/

/****************************************************************************
*
* PROGRAM: SMARTAPP.H
*
* PURPOSE: Simple console application for calling SMART IOCTL's
*
****************************************************************************/
//
// FUNCTION DEFINITIONS
//

BOOL DoIDENTIFY(HANDLE, PSENDCMDINPARAMS, PSENDCMDOUTPARAMS, BYTE, BYTE, PDWORD);
BOOL DoEnableSMART(HANDLE, PSENDCMDINPARAMS, PSENDCMDOUTPARAMS, BYTE, PDWORD);
BOOL DoReadAttributesCmd(HANDLE, PSENDCMDINPARAMS, PSENDCMDOUTPARAMS, BYTE );
BOOL DoReadThresholdsCmd(HANDLE, PSENDCMDINPARAMS, PSENDCMDOUTPARAMS, BYTE );
VOID DoPrintData(PCHAR, PCHAR, BYTE);
VOID ChangeByteOrder(PCHAR, USHORT);
VOID PrintIDERegs(PSENDCMDINPARAMS);
HANDLE OpenSMART(VOID);
VOID DisplayIdInfo(PIDSECTOR, PSENDCMDINPARAMS, BYTE, BYTE, BYTE);


Добавлено через 4 минуты и 11 секунд
исходник


Присоединённый файл ( Кол-во скачиваний: 44 )
Присоединённый файл  source.cpp 12,73 Kb
PM MAIL WWW Skype GTalk YIM MSN   Вверх
artsb
Дата 6.1.2010, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64





--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Нитонисе
Дата 6.1.2010, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Спасибо.

Скажите, а сложна ли следующая защита программы?

Определяю серийный номер (например 1234).
Провожу с ним несложные арифметические операции (например 1234 + 10 = 1244).
Полученные номер (1244) является внутренним кодом, зависящим от железа, он высылается разработчику.
Разработчик (то есть я) генерирую внешний код, который определяется опять же несложными арифметическими действиями над полученным внутренним кодом (например 1244 +100 = 1344). Далее сохраняю этот код в текстовый файл и отдаю пользователю.
Проверка осуществляется следующим образом.
Программа определяет серийный номер (1234).
Проводит с ним все те же нужные арифметические действия (1234 + 10 = 1244).
Проводит с ним все те же дополнительные действия (1244 + 100 = 1344).
Если полученное значение совпадает со значением, прочитанном из файла, который я дал пользователю - программа запускается.
Если не совпадает - выдается сообщение, что программа не зарегистрирована и она закрывается.
PM MAIL   Вверх
artsb
Дата 6.1.2010, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



ИМХО у этого способа много минусов.
Некоторые из них:
- Проблемы после апгрейда ПК. Ключ уже не годен. Нужно опять связываться с разработчиком.
- Нет возможности пользоваться честно купленной программой на ПК дедушки, к которому владелец программы поехал отдыхать. (одна из ситуаций)
- Зависимость от Интернета, ну или необходимость созваниваться, для получения ключа.

Это сообщение отредактировал(а) artsb - 6.1.2010, 18:31


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Нитонисе
Дата 6.1.2010, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Цитата(artsb @  6.1.2010,  18:28 Найти цитируемый пост)
ИМХО у этого способа много минусов.Некоторые из них:- Проблемы после апгрейда ПК. Ключ уже не годен. Нужно опять связываться с разработчиком.- Нет возможности пользоваться честно купленной программой на ПК дедушки, к которому владелец программы поехал отдыхать. (одна из ситуаций)- Зависимость от Интернета, ну или необходимость созваниваться, для получения ключа.

Ну, все эти вопросы удобства - это одна сторона. Меня больше интересовала сторона безопасности.
PM MAIL   Вверх
artsb
Дата 6.1.2010, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Да вроде нормально...
Но может умные люди ещё что-нибудь скажут.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
vikaz
Дата 7.1.2010, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



Если кому-то сильно понадобится твоя программа,то её вскроют! Если продукт коммерческий, то лучше использовать аппаратный ключ защиты.(senselock). Ну а если проект не очень серьезный, то пойдет. Но как написал камрад Выше, есть минусы и не очень приятные. 


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
xvr
Дата 7.1.2010, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Нитонисе @ 6.1.2010,  18:13)
Скажите, а сложна ли следующая защита программы?

Не сложна и абсолютно бесполезна - взломают в течении суток  smile 
Используйте нормальные криптографические алгоритмы. Используйте CryptoAPI и защищенные хранилища (в CyptoAPI). Результатом регистрации программы должен быть сертификат (или ключ) записанный в защищенном хранилище в неизвлекаемом виде.

PS. Все равно сломают, но подольше повозятся  smile

Добавлено через 1 минуту и 2 секунды
Вдогонку - у CPU серийного номера нет (Intel сделал его в PPro, был большой скандал - номер изъяли)

PM MAIL   Вверх
artsb
Дата 7.1.2010, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(xvr @  7.1.2010,  12:54 Найти цитируемый пост)
Не сложна и абсолютно бесполезна - взломают в течении суток

Тут ещё большую роль играет сама программа. Если она будет очень востребована, то можно особо с защитой не заморачиваться - всё равно взломают. С другой стороны, если прога будет не очень востребована, то тоже нет смысла делать крутую защиту - всё равно её никто ломать не будет  smile 
ИМХО


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Нитонисе
Дата 7.1.2010, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Программа-то не серьезная, она стоит 20 баксов. И защита крутая не нужна, нужен такой уровень, чтобы неразбирающийся не мог сломать вообще, средний пользователь долго возился, ну а профессионал и интересоваться этой прогой не будет. То есть если моя программа будет сопротивляться взлому хотя бы 10 часов - это уже супер. Так выдержит такая защита 10 часов?

Мне вот что интересно. Есть ли инструментарий, позволяющий взломщику получить код исполняемого файла? Ведь в коде прописан алгоритм обработки серийного номера жесткого диска и его не состовляет труда воспроизвеси и таким образом найти правильные исходящий код и входящий.
PM MAIL   Вверх
xvr
Дата 7.1.2010, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Нитонисе @ 7.1.2010,  14:11)
Программа-то не серьезная, она стоит 20 баксов. 

Нафига тогда ее защищать?

Цитата

И защита крутая не нужна, нужен такой уровень, чтобы неразбирающийся не мог сломать вообще, средний пользователь долго возился, ну а профессионал и интересоваться этой прогой не будет. То есть если моя программа будет сопротивляться взлому хотя бы 10 часов - это уже супер. Так выдержит такая защита 10 часов?
Нет. Время взлома для 'профессионала' (если он вдруг заинтересуется) - 1 час

Цитата

Мне вот что интересно. Есть ли инструментарий, позволяющий взломщику получить код исполняемого файла?
Есть - дебагер называется  smile 
Цитата
Ведь в коде прописан алгоритм обработки серийного номера жесткого диска и его не состовляет труда воспроизвеси и таким образом найти правильные исходящий код и входящий.
А он (взломщик) и не будет разбираться в коде проверки. Он просто найдет тот самый переход, что отличает правильный код от неправильного, и забъет его прямо в бинарном коде программы.

PM MAIL   Вверх
Нитонисе
Дата 7.1.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Цитата(xvr @  7.1.2010,  14:22 Найти цитируемый пост)
Нафига тогда ее защищать?

Чтоб хотя бы 20 баксов с нее поиметь)
Цитата(xvr @  7.1.2010,  14:22 Найти цитируемый пост)
Нет. Время взлома для 'профессионала' (если он вдруг заинтересуется) - 1 час

А какими знаниями и спецпрограммами должен располагать такой "профессионал"?
Цитата(xvr @  7.1.2010,  14:22 Найти цитируемый пост)
Есть - дебагер называется

И в каком виде получается исходный код? В том же, как я его пишу?
Цитата(xvr @  7.1.2010,  14:22 Найти цитируемый пост)
А он (взломщик) и не будет разбираться в коде проверки. Он просто найдет тот самый переход, что отличает правильный код от неправильного, и забъет его прямо в бинарном коде программы.

А можно менять исходный код программы, по желанию выключая какие-то блоки, либо добавляя?

А вы могли бы сломать такую защиту? Давайте я выложу простенькую программу, где только защита и будет. Попробуете ее взломать? Понятно что это время, какое-никакое, но ща выходные, чисто из спортивного интереса)
PM MAIL   Вверх
vikaz
Дата 7.1.2010, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



Цитата(xvr @  7.1.2010,  16:22 Найти цитируемый пост)
А он (взломщик) и не будет разбираться в коде проверки. Он просто найдет тот самый переход, что отличает правильный код от неправильного, и забъет его прямо в бинарном коде программы.

Камрад, а если виртуализировать часть кода отвечающую за сверку?


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
SVN74
Дата 7.1.2010, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 11
Всего: 18



Можно ключ внедрить в тело программы под видом "команд процессора" - все равно эти команды выполняться не смогут, -  и пускай попробуют отличить команды от нужного ключа .
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0999 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.