蓝色动力网络

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 12242|回复: 14

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

[复制链接]
发表于 2008-9-1 13:53:44 | 显示全部楼层 |阅读模式
1.下载后手动建个目录,e:\desktop
2.把文件解压到你刚才建立的目录下面e:\desktop
3.运行测试。
测试效果:如果你运行测试后,procmon.exe会自动运行,并且关闭不了,那就证明测试成功了。

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
 楼主| 发表于 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.在


就会在你刚才保存的目录下生成一个DLL文件,这个DLL就是我们要的文件。

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

游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2009-8-15 10:30:25 | 显示全部楼层
经典教程,收藏了,感谢分享
回复 支持 反对

使用道具 举报

发表于 2009-9-1 22:10:06 | 显示全部楼层
看看,这个是什么东东
回复 支持 反对

使用道具 举报

发表于 2009-9-28 14:58:44 | 显示全部楼层
学习了!!!!
回复 支持 反对

使用道具 举报

发表于 2009-9-28 14:59:07 | 显示全部楼层
收下  感谢!@
回复 支持 反对

使用道具 举报

发表于 2009-11-11 12:45:40 | 显示全部楼层
太牛呢,经典啊,收藏
回复 支持 反对

使用道具 举报

发表于 2010-12-27 23:28:12 | 显示全部楼层
学习下保护进程
回复 支持 反对

使用道具 举报

发表于 2012-5-12 10:15:39 | 显示全部楼层
我来看看好东西部
回复 支持 反对

使用道具 举报

发表于 2012-7-18 18:53:22 | 显示全部楼层
如果注入成功,那么就会运行你要的程序
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

蓝色动力网络微信平台
网站管理,业务合作联系邮箱: admin#lansedongli.com    QQ:13412492 限网站业务问题.
网站帐号、密码、密保找回请使用注册邮箱,发送邮件至 password#lansedongli.com ,否则不予受理.
免责声明:本论坛所有文字和图片仅代表其个人观点.
本站某些资料或文章来自于互联网,不代表本站观点,如果侵犯了您的权益,请来信告知,我们会在三天内删除.
为了给大家一个更好的交流场所,请勿在本论坛发表与中华人民共和国法律相抵触的言论,请合作,谢谢!
Copyright © 2007-2019 Corporation Powered by网吧系统 版权所有    转载请注明!
浙ICP备11043737号 程序:Discuz! x3.4

湘公网安备 43018102000145号

手机版|Archiver|蓝色动力网络   

快速回复 返回顶部 返回列表