Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить серийный номер процессора 
:(
    Опции темы
Нитонисе
Дата 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   Вверх
xvr
Дата 7.1.2010, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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

Чтоб хотя бы 20 баксов с нее поиметь)

Сдедайте свою программу shareware. Это более надежно  smile 
Цитата

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

А какими знаниями и спецпрограммами должен располагать такой "профессионал"?
Знаниями - професиональными, спецпрограммами - никакими: встроенного дебагера в VS вполне хватит
Цитата

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

И в каком виде получается исходный код? В том же, как я его пишу?
В виде ассемблера
Цитата

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

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

А вы могли бы сломать такую защиту? Давайте я выложу простенькую программу, где только защита и будет. Попробуете ее взломать? Понятно что это время, какое-никакое, но ща выходные, чисто из спортивного интереса)
Спортивный интерес к такого рода занятиям у меня давным давно закончился. Уже не интересно.
Но тут еще наверное остались люди, которым это может быть интересно  smile

Добавлено через 2 минуты и 19 секунд
Цитата(SVN74 @ 7.1.2010,  17:44)
Можно ключ внедрить в тело программы под видом "команд процессора" - все равно эти команды выполняться не смогут, -  и пускай попробуют отличить команды от нужного ключа .

Хакер не будет ничего искать - он просто оттрасирует прогу и найдет тот условный переход, который ломает программу при неверном ключе. Потом подправит пару байтов в exe'нике, и все  smile 
PM MAIL   Вверх
Нитонисе
Дата 8.1.2010, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(xvr @  7.1.2010,  23:40 Найти цитируемый пост)
Хакер не будет ничего искать - он просто оттрасирует прогу и найдет тот условный переход, который ломает программу при неверном ключе. Потом подправит пару байтов в exe'нике, и все

Так в данном случае если сделать из моего условного перехода - безусловный, ниче не выйдет, насколько я понимаю.
У меня идет проверка if (код != код) {выход из программы}. А дальше идет обычный код. Если из этого условного перехода сделать безусловный и переходить без всяких сравнений к {выход из программы}, то получается лажа. А еще я поставил в приложении таймер, в событии которого OnTimer через каждые пять минут прописал снова проверку. Это тоже бесполезный трюк с моей стороны?
PM MAIL   Вверх
Damp1L
Дата 8.1.2010, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну раз уж пошла такая катавасия, то почему не сделать просто навесную защиту? К примеру armadillo. Один чёрт взломают, а так хоть защита от дурака, ну и время не надо терять на её разработку =)
PM MAIL   Вверх
artsb
Дата 8.1.2010, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Нитонисе @  8.1.2010,  02:08 Найти цитируемый пост)
Это тоже бесполезный трюк с моей стороны? 

ИМХО с таким же успехом взломают. И будет ваш таймер "вертеться" впустую.


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


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

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



Цитата(Нитонисе @  7.1.2010,  20:28 Найти цитируемый пост)
А вы могли бы сломать такую защиту? Давайте я выложу простенькую программу, где только защита и будет. Попробуете ее взломать? Понятно что это время, какое-никакое, но ща выходные, чисто из спортивного интереса) 

Выкладывай, попробуем smile 


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
xvr
Дата 8.1.2010, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Нитонисе @ 8.1.2010,  02:08)
Так в данном случае если сделать из моего условного перехода - безусловный, ниче не выйдет, насколько я понимаю.
У меня идет проверка if (код != код) {выход из программы}.

Ваш конкретный условный переход забьют NOP'ами
В любом случае условный переход транслируется в операцию сравнения и команду типа je blablabla. Хакер может превратить ее в jmp blablabla или в пару nop (в зависимости от того, должен переход исполняться или нет)

Цитата

А еще я поставил в приложении таймер, в событии которого OnTimer через каждые пять минут прописал снова проверку. Это тоже бесполезный трюк с моей стороны?
Тоже (хотя времени на взлом уйдет больше). Поймают выход из программы и оттрасируют, откуда его звали. Дальше все тот же patch на условные переходы

PM MAIL   Вверх
SVN74
Дата 8.1.2010, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А если заранее "подпортить" – изменить  код без всяких if конструкций то бишь привести программу в нерабочее состояние (правда в  таком случае try версии не получиться), а потом отдельной программой (ключом) восстановить данные в основной программе?  
PM MAIL WWW   Вверх
Нитонисе
Дата 8.1.2010, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Кому не влом, попробуйте поломать эту защиту.
Суть ее такова. Если программа не зарегистрирована - она выдает исходящий код, который вы высылаете разработчику (то есть мне), а даю вам на основе этого кода уже входящий код, который будет записан в файле Reg.txt. С правильным кодом программа будет работать.


Это сообщение отредактировал(а) Нитонисе - 8.1.2010, 13:40

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  _______________.zip 243,15 Kb
PM MAIL   Вверх
Rrader
Дата 8.1.2010, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

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



Пофиксил следующим образом. Нашел вызов первого FileExists в обработчике формы OnCreate. Заменил его на прыжок в конец обработчика. Результат - программе все равно на Reg.txt, существует он или нет.

Добавлено @ 17:25
Ах да, еще таймер отключить надо. Это совсем просто - по аналогии. smile 

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Project1.zip 242,75 Kb


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Нитонисе
Дата 8.1.2010, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



И вся "защита"?)

Добавлено через 2 минуты и 29 секунд
а выложите поломанную программу, которой бы все могли пользоваться.
PM MAIL   Вверх
Rrader
  Дата 8.1.2010, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

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



Выложил smile 


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Нитонисе
Дата 8.1.2010, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Rrader @  8.1.2010,  17:31 Найти цитируемый пост)
Выложил

Это была моя самая надежная защита)) 
Однако поменялся размер файла. Можно же отследить размер, сравнивать его с эталонным и если размер отличается - не запускать программу?

Добавлено через 1 минуту и 2 секунды
а, не поменялся.. это просто текстового файла в архиве не было
PM MAIL   Вверх
W4FhLF
Дата 8.1.2010, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Цитата(vikaz @  7.1.2010,  15:25 Найти цитируемый пост)
Камрад, а если виртуализировать часть кода отвечающую за сверку?


Можно разобрать эту ВМ. Либо сэмулировать её имея один валидный ключ. 

PS Защита предложенная автором фигня, в своё время ломал такие за 3 минуты. smile

Добавлено через 47 секунд
Цитата(Нитонисе @  8.1.2010,  17:35 Найти цитируемый пост)
Однако поменялся размер файла. Можно же отследить размер, сравнивать его с эталонным и если размер отличается - не запускать программу?


Ну найдут это сравнение и "убьют" его точно так же как проверку твоего ключа. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Rrader
  Дата 8.1.2010, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

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



Цитата(Нитонисе @  8.1.2010,  23:35 Найти цитируемый пост)
сравнивать его с эталонным

Тоже лечится smile 


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Нитонисе
Дата 8.1.2010, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(W4FhLF @  8.1.2010,  17:37 Найти цитируемый пост)
Ну найдут это сравнение и "убьют" его точно так же как проверку твоего ключа. 

Так а взломщик может затирать лбюбые фрагменты кода, которые посчитает нужным? Или как бы обходить их вставкой какого-то безусловного перехода? Например перед проверкой регистрации вставить что-то типа "go to" и указать на первую команду после проверки?

Добавлено через 1 минуту и 9 секунд
Цитата(Rrader @  8.1.2010,  17:39 Найти цитируемый пост)
Тоже лечится


Ну я понимаю что лечится вообще все. Мне бы лишь бы программа продержалась хотя бы часов 10 против пусть не мегавзломщика, но против сильного хакера.

PM MAIL   Вверх
vikaz
Дата 8.1.2010, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(W4FhLF @  8.1.2010,  19:37 Найти цитируемый пост)
Можно разобрать эту ВМ. Либо сэмулировать её имея один валидный ключ. 

Ну это явно более устойчивое, чем все предложенное! А ВМ+SenseLock, практически непобедимая вещь! Сумма взлома одного только  ключа начинается от 10 000 у.е.



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

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


Эксперт
****


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

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



Цитата(SVN74 @ 8.1.2010,  12:36)
А если заранее "подпортить" – изменить  код без всяких if конструкций то бишь привести программу в нерабочее состояние (правда в  таком случае try версии не получиться), а потом отдельной программой (ключом) восстановить данные в основной программе?

Достаточно стандартный метод шифрования части исполняемого кода. Защита снимается запуском с валидным ключем и последующим 'сдергиванием' образа памяти (к моменту запуска он уже расшифрован).

Есть более сложная защита - есть несколько кусков кода которые по очереди расшифровываются и зашифровываются обратно. Так что в каждый момент времени только ОДИН кусок кода находится в расшифрованном состоянии (и именно он и исполняется). Т.е. в памяти не бывает полностью расшифрованного образа. 
Тоже ломается путем пошагового сброса расшифрованных кусков кода.

Добавлено через 2 минуты и 11 секунд
Цитата(Нитонисе @ 8.1.2010,  17:40)
Цитата(W4FhLF @  8.1.2010,  17:37 Найти цитируемый пост)
Ну найдут это сравнение и "убьют" его точно так же как проверку твоего ключа. 

Так а взломщик может затирать лбюбые фрагменты кода, которые посчитает нужным? Или как бы обходить их вставкой какого-то безусловного перехода? Например перед проверкой регистрации вставить что-то типа "go to" и указать на первую команду после проверки?

Да
Цитата

Добавлено @ 17:41
Цитата(Rrader @  8.1.2010,  17:39 Найти цитируемый пост)
Тоже лечится


Ну я понимаю что лечится вообще все. Мне бы лишь бы программа продержалась хотя бы часов 10 против пусть не мегавзломщика, но против сильного хакера.
Стоимость создания такой защиты будет СИЛЬНО превышать стоимость самой защищаемой программы  smile 

PM MAIL   Вверх
vikaz
Дата 8.1.2010, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(xvr @  8.1.2010,  21:01 Найти цитируемый пост)
Есть более сложная защита - есть несколько кусков кода которые по очереди расшифровываются и зашифровываются обратно. Так что в каждый момент времени только ОДИН кусок кода находится в расшифрованном состоянии (и именно он и исполняется). Т.е. в памяти не бывает полностью расшифрованного образа. 
Тоже ломается путем пошагового сброса расшифрованных кусков кода.

Отсюда напрашивается простой вывод! Ничего идеального нет, как и защита ПО! Просто нужно для себя решить, какая на данный момент менее затратная реализация алгоритма защиты. Импровизируйте, пусть тот человек который, вдруг, будет взламывать Вашу программу, будет в шоке от того, как Вы там намудрили. Главное сами не за путайтесь!!!   smile 


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

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


Опытный
**


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

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



А сломайте, пожалуйста, эту программу.



Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  _______________.zip 242,27 Kb
PM MAIL   Вверх
Rrader
  Дата 9.1.2010, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

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



Цитата(Нитонисе @  9.1.2010,  06:08 Найти цитируемый пост)
А сломайте, пожалуйста, эту программу.

Ничего не изменилось:
Цитата(Rrader @  8.1.2010,  23:23 Найти цитируемый пост)
Нашел вызов первого FileExists в обработчике формы OnCreate. Заменил его на прыжок в конец обработчика.




--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
W4FhLF
Дата 9.1.2010, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



user posted image

Минут 10 smile


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Kirgston
Дата 9.1.2010, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Нитонисе @  7.1.2010,  14:11 Найти цитируемый пост)
Мне вот что интересно. Есть ли инструментарий, позволяющий взломщику получить код исполняемого файла? 

IDA Pro + Hex Rays... и Сишный код всей программы у тебя на ладони... да конечно некоторые переменные будут в виде 1231112 или _dword128388 т.к. имена ф-ций, переменных, структур, классов и т.д. просто теряются. Переменные могут быть не того типа (редко но бывает). И т.д. но чисто чтобы проанализировать что ж ты делал - легко. 

Можешь тупо хешировать каждую ф-цию и программно проверять не изменила ли она свой хеш (ну и делать соответствующие действия). Хотя аналогично... это только геморой...
А можешь просто купить что то типа WinLicense и радоваться))) т.к. последнюю ВЛ не думаю что тебе станут вскрывать менее чем за 200$ а если у тебя прога стоит 20$ то точно не будут =). 
PM MAIL   Вверх
Нитонисе
Дата 9.1.2010, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Rrader 
W4FhLF
Так вы просто проигнорировали весь код в функции OnCreate? А если там тело программы, которое собственно выполняет нужные функции? Сейчас сделаю полезную программу с защитой - решение кубического уравнения.

Добавлено через 2 минуты и 53 секунды
Цитата(Kirgston @  9.1.2010,  10:42 Найти цитируемый пост)
IDA Pro + Hex Rays... и Сишный код всей программы у тебя на ладони...

А у тебя есть эти программы? Можешь показать результат их работы на примере моей тестовой проги? Хочу посмотреть как будет выглядеть мой код, чтобы знать от чего защищаться.
PM MAIL   Вверх
Нитонисе
Дата 9.1.2010, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Предлагаю вам попробовать поломать эту программу решения кубического уравнения.



Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  _______________.zip 251,08 Kb
PM MAIL   Вверх
W4FhLF
Дата 9.1.2010, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



user posted image

Поидее должно быть -1. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
artsb
Дата 9.1.2010, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Как орехи...


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


Опытный
**


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

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



W4FhLF, как взломал?

То что не совсем точное решение - это что-то с округлениями.

Это сообщение отредактировал(а) Нитонисе - 9.1.2010, 15:31
PM MAIL   Вверх
W4FhLF
Дата 9.1.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Цитата(Нитонисе @  9.1.2010,  15:29 Найти цитируемый пост)
W4FhLF, как взломал?


Запустил OllyDBG, посмотрел какие API вызывает программа, увидел:

Цитата

Found intermodular calls, item 9
 Address=00401E3E
 Disassembly=CALL    <JMP.&KERNEL32.GetVolumeInformationA>
 Destination=kernel32.GetVolumeInformationA


Посмотрел откуда она вызывается, поставил туда бряк. Он сработал, я протрасировал функцию и поправил несколько переходов. В прицнипе если посидеть подольше можно и keygen тебе замутить, там алгоритм то простой. smile


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Нитонисе
Дата 9.1.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(W4FhLF @  9.1.2010,  15:40 Найти цитируемый пост)
Посмотрел откуда она вызывается, поставил туда бряк. Он сработал, я протрасировал функцию и поправил несколько переходов. В прицнипе если посидеть подольше можно и keygen тебе замутить, там алгоритм то простой.

Что нужно сделать в конкретно этой защите, чтобы тебе было сложнее ее поломать? Или она изначально по задумке ни к черту?

P.S. По округлениям не понятно. Почему все же точность низкая? Переправил все числа с float на double - тот же результат. Подозреваю что точность извлечения корней sqrt, возведения в степень pow и вычисления логарифмов log в подключаемом модуле math.h не на высоте. Похоже на то?
PM MAIL   Вверх
W4FhLF
Дата 9.1.2010, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Цитата(Нитонисе @  9.1.2010,  15:47 Найти цитируемый пост)
Что нужно сделать в конкретно этой защите, чтобы тебе было сложнее ее поломать? Или она изначально по задумке ни к черту?


Скорее второе. 

Что можно сделать, чтобы без ключа не сломали. Это шифровать часть критически важного функционала или данных. И расшифровывать по регистрационному ключу. Кроме тебя, алгоритма генерации ключа ни у кого быть не должно. И сам шифр надо взять посерьёзней. Тогда без хотя бы одного валидного ключа не взломают. Ну и погугли на тему "anti debugger"


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Нитонисе
Дата 9.1.2010, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(W4FhLF @  9.1.2010,  16:07 Найти цитируемый пост)
Это шифровать часть критически важного функционала или данных.

А как это делать?

Цитата(W4FhLF @  9.1.2010,  16:07 Найти цитируемый пост)
И сам шифр надо взять посерьёзней

А у меня легкий сам принцип преобразования серийного номера или легкость в том что мало операций преобразования исходного серийного номера жесткого диска?
PM MAIL   Вверх
W4FhLF
Дата 9.1.2010, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Нитонисе, у тебя вопросы слишком объёмные. Учитывая твой уровень знаний в области реверс-инжиниринга мне придётся написать как минимум огромную статью, чтобы ответить тебе на твоём уровне. У меня нет столько времени. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Нитонисе
Дата 9.1.2010, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(W4FhLF @  9.1.2010,  16:50 Найти цитируемый пост)
Нитонисе, у тебя вопросы слишком объёмные. Учитывая твой уровень знаний в области реверс-инжиниринга мне придётся написать как минимум огромную статью, чтобы ответить тебе на твоём уровне. У меня нет столько времени. 

Я так и понял. Наверное в моем случае лучше воспользоваться спецпрограммами для защиты? Как они ломаются? Достаточно только знать чем защищена программа и все? Например AsProtect (тут много всяких перечислено http://forum.vingrad.ru/forum/topic-100401.html). Как в этом случае будет выглядеть взлом? Взломщик определяет программу защиты, берет уже готовое решение для ломания этой защиты - и все?
PM MAIL   Вверх
artsb
Дата 9.1.2010, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Нитонисе, ИМХО лучше с этим не заморачиваться, т.к. ломают ВСЁ. Лучше надеяться на добросовестность людей (хотя мы же в России живём...). Люди разные: одни купят, другие сломают, третьи найдут кряк. Поэтому, самодельной защиты вполне хватит.
Ещё очень хороший вариант (о нём упоминали выше) - урезать функционал (пробная версия). И полную версию высылать только после покупки.


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


Опытный
**


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

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



Цитата(artsb @  9.1.2010,  17:45 Найти цитируемый пост)
Нитонисе, ИМХО лучше с этим не заморачиваться, т.к. ломают ВСЁ. Лучше надеяться на добросовестность людей (хотя мы же в России живём...). Люди разные: одни купят, другие сломают, третьи найдут кряк.

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

Цитата(artsb @  9.1.2010,  17:45 Найти цитируемый пост)
Поэтому, самодельной защиты вполне хватит.

Ну ты видишь как мою самодельную защиту ломают на счет "раз"?))

Цитата(artsb @  9.1.2010,  17:45 Найти цитируемый пост)
щё очень хороший вариант (о нём упоминали выше) - урезать функционал (пробная версия). И полную версию высылать только после покупки.

Можно было бы. Но как только вышлю одному человеку полную версию - она появится в интернете в свободном доступе.

Попробую что-нибудь мутить со спец-прогами для защиты. От неподготовленных хотябы защищусь)
PM MAIL   Вверх
artsb
Дата 9.1.2010, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ну удачи  smile 


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


Опытный
**


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

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



Немного изменил защиту своего файла. Попробуете взломать? В первую очередь обращаюсь к уже ломавшим)


Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  ___________.zip 430,07 Kb
PM MAIL   Вверх
artsb
Дата 19.1.2010, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Хотя уже прошло прилично времени... Но думаю для Нитонисе это будет интересно:
user posted image

ЗЫ почему-то она не всегда правильно считает... Может я перемудрил...  smile 

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  cubic.rar 229,04 Kb


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


Опытный
**


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

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



Цитата(artsb @  19.1.2010,  11:06 Найти цитируемый пост)
Хотя уже прошло прилично времени... Но думаю для Нитонисе это будет интересно

Думаю да, немного перемудрил, тут должен быть один корень уравнения. А вообще эту защиту уже давно сломали на cracklab.ru  smile Правда не сказали на сколько это было сложно, по всей видимости легко.
PM MAIL   Вверх
artsb
Дата 19.1.2010, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Нитонисе @  19.1.2010,  13:25 Найти цитируемый пост)
Думаю да, немного перемудрил, тут должен быть один корень уравнения. 

smile
Так лучше:
user posted image
?


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


Опытный
**


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

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



Цитата(artsb @  19.1.2010,  14:40 Найти цитируемый пост)
Так лучше:

Пожалуй)) Никудышний из меня защитник программ, надо с этим завязывать))
PM MAIL   Вверх
artsb
Дата 19.1.2010, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Нитонисе @  19.1.2010,  17:49 Найти цитируемый пост)
Никудышний из меня защитник программ, надо с этим завязывать)) 

Да все никудышные. Всё ломается рано или поздно. Так что не отчаивайся ;)


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

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

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

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

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


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

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


 




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


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

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