标题:dll文件如何生成
只看楼主
b1592187525
Rank: 1
等 级:新手上路
帖 子:86
专家分:4
注 册:2017-2-15
结帖率:90.32%
已结贴  问题点数:15 回复次数:11 
dll文件如何生成
那个0x1285CA20是植物大战僵尸里阳光的内存地址。我要修改阳光值。现在我重新将该代码
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void* lpReserved)
{
    int *p=(int*)0x1285CA20;
    *p=10000;
}
保存,文件名为7.c
在编译器中按照
cl /c 7.c
link /dll 7.obj
编译得到dll文件。
然后用dll注入器将dll文件注入的植物大战僵尸进程中。但注入器提示加载动态连接库失败。

[此贴子已经被作者于2017-3-20 16:17编辑过]

搜索更多相关主题的帖子: 植物大战 编译器 如何 动态 僵尸 
2017-03-19 22:21
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:5 
DLL也是可执行文件的一种。是需要对源码进行编译链接的

DO IT YOURSELF !
2017-03-20 05:15
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
新建一个DLL类型的工程项目
1、#include <windows.h>
2、声明函数的前面加 __declspec(dllexport), 如:
__declspec(dllexport) int add(int a, int b)
{
    return a+b;
}
3、入口函数是 DllMain()
原型为:
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved);
其中:
hModule .. DLL句柄
ul_reason_for_call ... DLL状态,如DLL_PROCESS_ATTACH加载,DLL_PROCESS_DETACH卸载
lpReserved ... 保留,已很少用。
DllMain()在DLL载入和卸载时执行,可用来初始化和释放资源,如只是向外提供函数,可省略 DllMain()。

[此贴子已经被作者于2017-3-20 10:23编辑过]

2017-03-20 07:28
b1592187525
Rank: 1
等 级:新手上路
帖 子:86
专家分:4
注 册:2017-2-15
得分:0 
回复 3楼 吹水佬
是不是这样
#include"windows.h"
_declspec(dllexport)BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void*

lpReserved){
    int *p=(int*)0x1285CA20;
    *p=10000;
}
但编译器进行编译的时候提示必须定义入口点




[此贴子已经被作者于2017-3-20 13:29编辑过]

2017-03-20 13:23
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
回复 4楼 b1592187525
新建一个dll工程,输入如下代码

__pragma(comment(linker, "/EXPORT:add=_add@8"))
int _stdcall add( int a, int b )
{
    return a+b;
}

编译
2017-03-20 13:53
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
你要实现啥目的呢
猜测你要写其他进程的地址空间。如果是的话
那不是如此简单的

DO IT YOURSELF !
2017-03-20 13:57
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用b1592187525在2017-3-20 13:23:23的发言:

是不是这样
#include"windows.h"
_declspec(dllexport)BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void*

lpReserved){
    int *p=(int*)0x1285CA20;
    *p=10000;
}
但编译器进行编译的时候提示必须定义入口点

入口函数DllMain()不是导出函数,不用 __declspec(dllexport) 修饰。
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void* lpReserved)
{
    int *p=(int*)0x1285CA20;
    *p=10000;
}
PS:0x1285CA20这个地址是什么东东?这样改动此地址的内容有效吗?
2017-03-20 15:08
b1592187525
Rank: 1
等 级:新手上路
帖 子:86
专家分:4
注 册:2017-2-15
得分:0 
回复 7楼 吹水佬
那个0x1285CA20是植物大战僵尸里阳光的内存地址。我要修改阳光值。现在我重新将该代码
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void* lpReserved)
{
    int *p=(int*)0x1285CA20;
    *p=10000;
}
保存,文件名为7.c
在编译器中按照
cl /c 7.c
link /dll 7.obj
编译得到dll文件。
然后用dll注入器将dll文件注入的植物大战僵尸进程中。但注入器提示加载动态连接库失败。

2017-03-20 16:07
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
不好意思,不清楚注入器是什么东东。

2017-03-20 16:23
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
以下是引用wp231957在2017-3-20 13:57:51的发言:

你要实现啥目的呢
猜测你要写其他进程的地址空间。如果是的话
那不是如此简单的
我都说过了  要写进程地址空间 需要获取该进程的写权限  哪有你想那么简单啊

DO IT YOURSELF !
2017-03-20 16:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475267-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.477562 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved