首页
社区
课程
招聘
[求助]拜师学win ASM 写一个loader!!
发表于: 2009-7-1 10:49 5717

[求助]拜师学win ASM 写一个loader!!

2009-7-1 10:49
5717
我现在遇到一个问题,不知道如何解决,想拜师,不知道有人收不
具体问题是这样的:

我想使用loader在内存中修改C.dll的代码,但软件的启动顺序是这样的:A.exe-->B.exe然后B.exe中的模块含有c.dll
A.exe在B.exe启动后会退出,

想法:
1。CreateProcess    A.exe  并指定 DEBUG_PROCESS标志

2. 等待调试事件

3. 枚举B.exe的所有模块

4.循环查找模块名,当等于C.dll时,暂停线程,并猎取其基址与映象大小

5.从基址开始,搜索映象大小内存空间16进制数据(可以使用通配符),找到后返回内存地址。

6.调用写入内存函数,在得到的内存地址处写入补丁数据。

7.恢复进程

8.退出loader

现真诚的求一位老师能够教我。方便的话加我QQ(120446964),并注明(loader),在这里拜谢了。
PS:给出QQ号不会违反看雪的规定吧?!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
用 LPK.DLL 最方便

创建个线程不断监视DLL加载没有

加载就获取.......
2009-7-1 11:10
0
雪    币: 157
活跃值: (451)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
用得着这么麻烦呀...
2009-7-4 13:53
0
雪    币: 230
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
兄弟,麻烦是指什么?那如何做才是简单呢?
另:我只知道机器码,而且机器码使用通配符,,呵呵,所以要搜索内存才能知道地址
2009-7-4 17:57
0
雪    币: 372
活跃值: (36)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
看Iczelion的Win32汇编教程
Win32教程30-Win32调试API 第三部分
Win32教程29-Win32调试API 第二部分
Win32教程28-Win32调试API 第一部分
2009-7-4 18:16
0
雪    币: 230
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
仔细看了,不过感觉自己太菜,呵呵,如果使用调试API的话,如果loader退出,程序会退出吗?
还有,如何使用通配搜索内存?比如:48 2A 67 ?? F2 64  (??代表任意字符,其它的就是像OD中看到的机器码。。)
2009-7-6 08:20
0
雪    币: 157
活跃值: (451)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
自己写一个dll让程序加载取得C.dll的基址.加上偏移,就得到要path的地址.就可以修改了
2009-7-7 11:34
0
雪    币: 230
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
使用通配符就是因为,不同版本的同一dll,其偏移一般是不同的。
2009-7-13 12:23
0
游客
登录 | 注册 方可回帖
返回
//