风一样的男孩 发表于 2008-9-1 13:53:44

手把手教你编程写DLL并注入实现进程保护

1.下载后手动建个目录,e:\desktop
2.把文件解压到你刚才建立的目录下面e:\desktop
3.运行测试。
测试效果:如果你运行测试后,procmon.exe会自动运行,并且关闭不了,那就证明测试成功了。

清除方法:结束EXPLORER.exe,再运行EXPLORER.EXE

风一样的男孩 发表于 2008-9-1 13:58:17

我先给大家介绍一个工具 PowerBASIC: 我们要用到的就这一个工具。这一个工具比易语言,AU3等可以说是强N倍,当然,编程难度也可能是AU3等的N倍。我也刚刚接触到这软件,所以我也是菜鸟,都在学习。这小工具几乎可以媲美C++,只有你想不到的,没有它做不成的。而整个附件只有 4.15 MB。通常PowerBASIC 编译的代码在性能上比VB 编译的代码好3到23 倍; 产生的可执行文件比VB生成的可执行文件小4 到40 倍!确实是一门超强的语言,只是太难学了,用的几乎全是API。好了,我们开始写可插入的标准DLL吧。(我就是因为VB不可以写标准DLL,才找了2天找到这个好学的,试过C++,DELPHI都搞不懂。)
1.先下载附件里的程序。PowerBASIC.rar。然后安装。安装好后运行程序,点-File----New File as dll framework libmain的界面如下:


2,把代码全部复制进去,代码如下,(我懂的我都注释了。高手别取笑)
#COMPILE DLL\'表示编译成DLL文件
#DIM ALL
%USEMACROS = 1
#INCLUDE \\"Win32API.inc\\"      \'在C:\\PBWin80\\WinAPI目录下的文件,这是Win32API函数库,只要这样用了大部分的API都可以直接用了
GLOBAL ghInstance AS DWORD
GLOBAL hThread AS DWORD

FUNCTION IsFileRun(BYVAL pFile AS STRING) AS LONG
    DIM hFile AS LONG
    hFile = CreateFile(BYVAL STRPTR(pFile), %GENERIC_READ OR %GENERIC_WRITE, 0&, BYVAL %NULL, %OPEN_EXISTING, %FILE_ATTRIBUTE_NORMAL, 0&)
    IsFileRun = hFile
    CloseHandle hFile
END FUNCTION
\'这是打开和创建文件等等的API函数
\'如执行成功,则返回文件句柄,如果失败就返回INVALID_HANDLE_VALUE 即-1,这跟下面的判断是符合的。
\'CreateFile这个API函数详细信息BAIDU一下就清楚了。
\'大概原理是:看看指定路径的文件可不可直接改写,如果可以就表示文件没运行,如果不可,就表示它在运行了。当然这只是一种方法。
FUNCTION LIBMAIN(BYVAL hInstance AS LONG, BYVAL fwdReason AS LONG, BYVAL lpvReserved AS LONG) AS LONG   \'这是DLL的入口函数LIBMAIN
                                                                                                      \'这
    SELECT CASE fwdReason                                                                               \'一
    CASE %DLL_PROCESS_ATTACH                                                                            \'大
                                                                                                      \'块
      ghInstance = hInstance                                                                        \'是
      THREAD CREATE ThreadProc1(%NULL) TO hThread   \'DLL载入时建立一个线程 ThreadProc1            \'用
      FUNCTION = 1                                                                                    \'来
                                                                                                      \'控
    CASE %DLL_PROCESS_DETACH\'进程被停止                                                               \'制
                                                                                                      \'线
      \'TerminateThread hThread, %NULL                  \'DLL卸载时结束线程 ,这里我们不需要去动它。   \'程
      \'Function = 1                                                                                 \'的
                                                                                                      \'
    CASE %DLL_THREAD_ATTACH       \'线程被调用                                                         \'
                                                                                                      \'
      FUNCTION = 1                                                                                    \'
                                                                                                      \'
    CASE %DLL_THREAD_DETACH         \'线程被停止                                                         \'
                                                                                                      \'
      FUNCTION = 1                                                                                    \'
                                                                                                      \'
    END SELECT                                                                                          \'
END FUNCTION                                                                                          \'

FUNCTION ThreadProc1(BYVAL x AS DWORD) AS LONG\'这是被创建的线程,我们的目的是用来检测进程
    DO WHILE (%TRUE)\'死循环,不怕,在注入DLL里不会影响CPU多少
      IF IsFileRun(\\"e:/desktop/procmon.exe\\") <> -1 THEN\'检测e:/desktop/procmon.exe有没有运行,这就是您要保护的进程路径了。
            FUNCTION = SHELL(\\"e:\\desktop\\procmon.exe\\")\'如果没有运行就运行它。
      END IF
      SLEEP (300)    \'暂停1秒
    LOOP
END FUNCTION
3.点File-SAVE- as 保存,保存后会生成一个。BAS的文件,可以记事本直接打开编辑的。

4.在 http://www.maxxp.com.cn/bbs/images/mobantang/attachimg.gif http://www.maxxp.com.cn/bbs/attachments/month_0808/20080831_85349213cd80e46d3ba2Kx21O3iiTYoH.jpg

http://www.maxxp.com.cn/bbs/attachments/month_0808/20080831_4726f4ac8ab8bcea13ce0VfysWV6w8pj.jpg
就会在你刚才保存的目录下生成一个DLL文件,这个DLL就是我们要的文件。

5.下载下面的注入工具rel.exe,运行rel.exe 你的DLL路径|要注入的进程名。一定要用|区分哦,如果是CMD下|要改成^|的。或者你也可以去网上下载一些注入工具。如果注入成功,那么就会运行你要的程序。

**** Hidden Message *****

mood100 发表于 2009-8-15 10:30:25

经典教程,收藏了,感谢分享

bangxing 发表于 2009-9-1 22:10:06

看看,这个是什么东东

51xit 发表于 2009-9-28 14:58:44

学习了!!!!

51xit 发表于 2009-9-28 14:59:07

收下感谢!@

mood100 发表于 2009-11-11 12:45:40

太牛呢,经典啊,收藏

gggll457 发表于 2010-12-27 23:28:12

学习下保护进程

qq501177 发表于 2012-5-12 10:15:39

我来看看好东西部

qq8533 发表于 2012-7-18 18:53:22

如果注入成功,那么就会运行你要的程序
页: [1] 2
查看完整版本: 手把手教你编程写DLL并注入实现进程保护