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

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


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

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



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.
int main(int argc, char *argv[])
{
    char    buf[MAX_PATH];
    HMODULE module;
    
    module = GetModuleHandle(0);
    GetModuleFileName(module, buf, MAX_PATH);
    CloseHandle((HANDLE)4);
    
    __asm 
    {
      lea     eax, buf
      push    0
      push    0
      push    eax
      push    ExitProcess
      push    module
      push    DeleteFile
      push    UnmapViewOfFile
      ret
    }
     
    return 0;
}

этот работает на 2000 великолепно

Или мой вариант - удаление с использованием wsh. похож на метод с батом но не то. Недостатки: у пользователя может быть не установлен wsh. использовал js, можно переделать на vbs.
#ifndef _DEBUG
#   define section ".cqwerty"
#   pragma comment(linker, "/section:"section", ERW /IGNORE:4078")
#   pragma comment(linker, "/merge:.rdata="section)
#   pragma comment(linker, "/merge:.idata="section)
#   pragma comment(linker, "/merge:.data="section)
#   pragma comment(linker, "/merge:.text="section)
#   pragma comment(linker, "/merge:.CRT="section)
#   pragma comment(linker, "/FILEALIGN:0x200")
#   pragma comment(linker, "/ENTRY:entrypoint")
#   pragma check_stack(off)
#endif // _DEBUG

#define INSTALL_SEH(seh_interrupt)      \
        __asm call install_seh          \
        __asm mov esp, [esp+8]          \
        __asm jmp seh_interrupt         \
        __asm install_seh:              \
        __asm push dword ptr fs:[0]     \
        __asm mov dword ptr fs:[0], esp

#define RESTORE_SEH(seh_interrupt)      \
        __asm seh_interrupt: nop;       \
        ExitProcess((UINT)-1)

#define fopen_new(fname) CreateFile(fname, GENERIC_READ|GENERIC_WRITE,  \
                        FILE_SHARE_READ|FILE_SHARE_WRITE, 0,            \
                        CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)

#define strlen lstrlen
#define strcat lstrcat

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <shellapi.h>

int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int)
{
    char fname[MAX_PATH] = {0}, scriptname[MAX_PATH] = {0}, dir[MAX_PATH] = {0};
    const char script[] = 
        "try {\n"
        "var fso, f, script, fname = \"%s\";\n"
        "fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n"
        "f = fso.GetFile(fname)\n"
        "while (fso.FileExists(fname))\n"
        "\tf.Delete();\n"
        "script = fso.GetFile(\"%s\");\n"
        "script.Delete();\n"
        "} finally {}\n";
    char buf[8192] = {0};

    GetModuleFileName(NULL, fname, MAX_PATH);
    for (int i=strlen(fname)-1; i>0 && fname[i]!='\\'; i--) ; i++;
    GetTempFileName(".", "js", GetTickCount()^0x12345678, scriptname);
    strcat(scriptname, ".js");
    wsprintf(buf, script, (char *)&fname[i], (char *)&scriptname[2]);

    HANDLE f = fopen_new(scriptname);
    if (f==INVALID_HANDLE_VALUE) return 1;
    DWORD write = 0;
    WriteFile(f, (LPCVOID)&buf[0], strlen(buf), &write, NULL);
    CloseHandle(f);

    SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
    SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);

    GetCurrentDirectory(MAX_PATH, dir);
    ShellExecute(NULL, "open", scriptname, NULL, dir, SW_HIDE);

    return 0;
}

#ifndef _DEBUG
VOID APIENTRY entrypoint(VOID)
{
    INSTALL_SEH(seh_int);
    ExitProcess((UINT)WinMain(GetModuleHandle(NULL), 0, GetCommandLine(), SW_SHOWDEFAULT));
    RESTORE_SEH(seh_int);
}
#endif // _DEBUG


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

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




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



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


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