Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #45, АВГУСТ 2004 г.

Ломаем структуры

Мысла Владислав

Спецвыпуск Xakep, номер #045, стр. 045-036-4


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

Реализация аутентификации с помощью классов

class credentials { private: bool admin;

public: char name[0x10]; char pass[0x10];

public: SetCredentials(char* _name, char* _pass );

virtual void Administrate();

private: virtual void Admin(); };

credentials::SetCredentials(char* _name, char* _pass ) {

memcpy( name, _name, strlen(_name) );

memcpy( pass, _pass, strlen(_pass) );

name[strlen(_name)] = '\0'; pass[strlen(_pass)] = '\0';

admin = false; }

void credentials::Administrate() {

if( !strcmp(name,"adm") && !strcmp(pass,"adm") ) {

Admin(); } ....... }

int _tmain(int argc, _TCHAR* argv[]) {

......

bool TwoUsers = false;

if( argc==5 ) TwoUsers = true;

......

credentials* cUserFirst; credentials* cUserSecond;

cUserFirst = new credentials();

if( TwoUsers ) cUserSecond = new credentials();

.....

if( TwoUsers )cUserSecond-<SetCredentials( argv[3], argv[4] );

cUserFirst-<SetCredentials ( argv[1], argv[2] );

....

cUserFirst-<Administrate();

if( TwoUsers ) cUserSecond-<Administrate();

... }

Назад на стр. 045-036-3  Содержание