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

ВИДЕОКУРС ВЗЛОМ
выпущен 10 декабря!


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

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



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

Как сделать, чтобы некотоpое пpиложение не показывалось в Task Bar, System Tray и в списке по Ctrl+Alt+Del?

/* Alexey Chubar & Paul Ishenin*/
 #pragma hdrstop
 #include <condefs.h>
 #include <windows.h>
 #include <tlhelp32.h>
 #include <string.h>
 #include <stdlib.h>
 USELIB("KERNEL32.lib");
 #pragma argsused
 extern "C" __stdcall DWORD RegisterServiceProcess(DWORD dwProcessID, DWORD
 dwType);
 char * ExtractFilePath(const char *Name)
 {
  int i = strlen(Name), l = strlen(Name);
  char *res="\0";
  while ((i > 0)&&(Name[i] != '\\')) i--;
  if (i)
  {
    res = (char *)malloc(l - i);
    strcpy(res, Name + i + 1);
    res[l-i-1] = '\0';
  }
  return res;
 }
 void HideApp(DWORD dwProcessID)
 {
  HWND MyHandle = GetTopWindow(0);
  DWORD WindowProcess;
  while (MyHandle != NULL)
  {
    if ((GetWindowThreadProcessId(MyHandle, &WindowProcess) != 0) &&
 (WindowProcess == dwProcessID))
    {
     ShowWindow(MyHandle, SW_HIDE);
    }
    MyHandle = GetNextWindow(MyHandle, GW_HWNDNEXT);
  }
  RegisterServiceProcess(dwProcessID, 1);
 }
 DWORD __fastcall FindID(const char *FName)
 {
  HANDLE h;
  PROCESSENTRY32 p;
  h=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  p.dwSize=sizeof(p);
  if(!Process32First(h,&p))
   return -1;
  if(strcmp(strlwr((char *)FName), strlwr(ExtractFilePath(p.szExeFile)))==0)
  {
     CloseHandle(h);
     return p.th32ProcessID;
   }
  while(Process32Next(h,&p))
   if(strcmp(strlwr((char *)FName), strlwr(ExtractFilePath(p.szExeFile)))==0)
   {
     CloseHandle(h);
     return p.th32ProcessID;
    }
   CloseHandle(h);
   return -1;
 }
 int main(int argc, char* argv[])
 {
   if (argc > 1)
   {
    DWORD ProgID=FindID(argv[1]);
    if(ProgID != (DWORD)-1)
     HideApp(ProgID);
    }
    return 0;
 }
 

или

   _asm{
    mov eax,1
    push eax
    dec eax
    push eax
    call dword ptr[pRegisterServiceProcess]
   }
 

А теперь более подробно. Невидимость по Alt-Tab:

  var  WnHnd   : Integer;
  WnHnd := GetWindowLong(Application.Handle, GWL_EXSTYLE);
  WnHnd := WnHnd or WS_EX_TOOLWINDOW; {Типа Tools-окно}
  SetWindowLong(Application.Handle, GWL_EXSTYLE, WnHnd);
 

Невидимость в Панели Задач:

  ShowWindow[Async](Application.Handle,SW_HIDE)




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

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




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



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


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