首页
社区
课程
招聘
想写一个loader,完成如下功能,请问有没有可以参考的源码?
发表于: 2006-1-20 00:22 4468

想写一个loader,完成如下功能,请问有没有可以参考的源码?

2006-1-20 00:22
4468
1、修改一个配置文件的参数。(这个简单)
2、加载软件,在内存中修改这个软件的一段代码(这个怎么做?有没有可以参考的源码?)

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
第2点非常简单, 首先使用CreateProcess创建被修改程序的进程并得到句柄,然后就可以用ReadProcessMemory和WriteProcessMemory来读写进程的地址空间了,注意权限
2006-1-20 00:27
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
要先看目标程序有没有加壳
2006-1-20 00:40
0
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
4
这样做就是专门对付加壳程序的,否则直接修改磁盘文件就可以了
2006-1-20 01:01
0
雪    币: 217
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
或者winexec打开程序,然后用findwindow查找程序句并,接着用ReadProcessMemory和WriteProcessMemory来操作代码
2006-1-20 17:37
0
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
这样做麻烦一点,当然也是可以的,但是如果有特殊要求如运行后中断在入口点上就不行了.
另外FindWindow只能得到窗口句柄,要得到进程句柄还得用GetWindowThreadProcessId得到进程ID然后用OpenProcess函数打开进程得到进程句柄
2006-1-20 18:55
0
雪    币: 217
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
是是,我漏了个OpenProcess
2006-1-21 09:47
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
8
查查精华。里面好象有
2006-1-22 10:56
0
雪    币: 615
活跃值: (1132)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
http://bbs.pediy.com/showthread.php?threadid=14300
2006-1-22 11:12
0
雪    币: 234
活跃值: (104)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谢谢!参考http://bbs.pediy.com/showthread.php?threadid=14300
,对没有加壳的软件已经搞定了。

如果目标软件加了壳该怎么办?直接ReadProcessMemory找不到关键代码,怎么样才能等到壳运行完毕后,再动态修改代码?
2006-1-23 12:39
0
雪    币: 21
活跃值: (269)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
最初由 auser 发布
谢谢!参考http://bbs.pediy.com/showthread.php?threadid=14300
,对没有加壳的软件已经搞定了。

如果目标软件加了壳该怎么办?直接ReadProcessMemory找不到关键代码,怎么样才能等到壳运行完毕后,再动态修改代码?

一般没有做内存校验的壳,可以读取目标程序某个位置的几个字节,进行比较,如果相等,应该就是已经解壳完毕,否则,等待几十毫秒再试。
http://www.codebreakers-journal.com/
建议上这儿去看看,N篇关于loader的文章,经典,英文的
2006-1-24 06:58
0
雪    币: 234
活跃值: (104)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
最初由 littlepotato 发布

......,否则,等待几十毫秒再试。


这个时间可能把握不了吧!等待几十毫秒后就发现软件已经检测到未注册,退出了。
2006-1-26 18:38
0
雪    币: 234
活跃值: (104)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我觉得如下方法可行,就是不知道怎么编码实现。

先用debug(如softice)工具找到程序自动解码完毕,关键代码又没有执行时调用的某个api函数(如GetVersion),然后编程用自己的程序先hook这个api,在hook中判断是否解码完毕,以获取动态修改代码的关键时机。

上面这个方案不知可行否,应该如何编码。(主要是hook api不知道怎么写)
2006-1-27 16:44
0
游客
登录 | 注册 方可回帖
返回
//