Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

Как грохнуть процесс(в том числе системный)?

 
 #include <windows.h>
 
 #include <stdio.h>
 
 #pragma hdrstop
 
 
 
 // fkill forces a kill -- it will attempt to enable SeDebugPrivilege
 
 // before opening its process handles, allowing it to kill processes
 
 // running under builtin\system (LocalSystem, to the users out there).
 
 
 
 int main( int argc, char *argv[] );
 
 void getDebugPriv( void );
 
 
 
 #define isBadHandle(h) ( (h) == NULL || (h) == INVALID_HANDLE_VALUE )
 
 #define lenof(x) ( sizeof (x) / sizeof ((x)[0]) )
 
 
 
 const int MAXPID = 1024;
 
 
 
 int main( int argc, char *argv[] )
 
 {
 
  int pidCount, i, errors;
 
  char *p;
 
  HANDLE hProcess;
 
  static DWORD pid[MAXPID];
 
 
 
  // parse args, build PID list
 
  errors = pidCount = 0;
 
 
 
  for ( i = 1; i <argc; i ++ )
 
  {
 
   if ( pidCount == lenof( pid ) ) {
 
    errors ++;
 
    break;
 
   }
 
 
 
   pid[pidCount] = strtol( argv[i], &p, 0 );
 
   if ( p == argv[i] || *p )
 
    errors ++;
 
   else
 
    pidCount ++;
 
  }
 
 
 
  if ( errors || pidCount == 0 )
 
  {
 
   puts( "Usage: fkill pid [...]" );
 
   puts( "fkill tries to kill the processes specified by the PIDs. If the" );
 
   puts( "user has debug privileges, fkill is able to kill system processes." );
 
   puts( "PIDs may be decimal, octal (starts with 0), or hex (starts with 0x)."
 
 );
 
   return MAXPID + 1;
 
  }
 
 
 
  // try to acquire SeDebugPrivilege
 
  getDebugPriv(); //см. faq выше
 
 
 
  errors = 0;
 
  // for each PID:
 
  for ( i = 0; i < pidCount; i ++ )
 
  {
 
   printf( "pid %lu: ", pid[i] );
 
 
 
   // open process
 
   hProcess = OpenProcess( PROCESS_TERMINATE, FALSE, pid[i] );
 
   if ( isBadHandle( hProcess ) )
 
    printf( "OpenProcess() failed, err = %lu\n", GetLastError() );
 
   else
 
   {
 
    // kill process
 
    if ( ! TerminateProcess( hProcess, (DWORD) -1 ) )
 
     printf( "TerminateProcess() failed, err = %lu\n", GetLastError() );
 
    else
 
     puts( "killed." );
 
 
 
    // close handle
 
    CloseHandle( hProcess );
 
   }
 
  }
 
 
 
  return 0;
 
 }
 
 
 
 


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS