首页
社区
课程
招聘
[求助]如何给EXE增加代码?
发表于: 2008-10-1 10:36 4407

[求助]如何给EXE增加代码?

2008-10-1 10:36
4407
手头有个程序,在设计时就留下了BUG。由于没有源代码,通过OD找到了BUG存在的地方及原因。现要修复,但是由于程序里可用的空白地方不够写下修复代码,要如何才能给它增加这部分代码呢?
在网上搜索了一下,好像可以通过给EXE的PE中增加section来开辟空间加入我的代码,然后再有BUG的地方调用。由于对PE不是很熟悉,看了半天也没找到方法。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 277
活跃值: (106)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
2
你可以增加一个节外节,把代码写在那里,然后在有bug的地方跳转到节外节的地址去,执行完后再跳回去
2008-10-1 11:09
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
什么叫节外节?是修改.text的大小?
2008-10-1 13:58
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
4
angel是说添加一个新节
2008-10-1 14:41
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
具体操作要怎么做呢?我用PEID打开程序的PE,实在不知道怎么下手.

另外我使用VirtualAllocEx在程序运行后申请空间来加代码,再转跳到那里,好像不行。
2008-10-1 14:56
0
雪    币: 306
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
VirtualAllocEx 是可以的.但要设置可执行属性,还有你要保证你的跳转命令是否有效.
因为 Jmp 是相对的.除非你用 Jmp eax 或 Jmp DWORD
可以用一个普通程序调试好了,于移过去.
2008-10-1 16:16
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
换了另外一个PE工具增加了一个Section,问题解决。
2008-10-1 16:58
0
雪    币: 197
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
简单的办法,把修复代码放进 DLL。用的时候就加载
2008-10-1 17:57
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我也想过用DLL来放代码,但是线程注入的DLL,在原来程序中如何获得DLL里函数的地址呢?
2008-10-1 20:12
0
雪    币: 197
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
PVOID KGetGlobalVarAddr(PVOID pVar)
{
        PVOID pCurAddr = NULL;
        __asm
        {
Start:
                call lbl_Next
lbl_Next:
                pop eax
                sub eax, 5
                sub eax, offset Start
                add eax, pVar
                mov pCurAddr, eax
        }
        return pCurAddr;
}
2008-10-2 08:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
修改.text?   那软件就用不了
2008-10-2 22:45
0
雪    币: 224
活跃值: (75)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
12
方法很多写个loader也行啊.
2008-10-3 10:38
0
游客
登录 | 注册 方可回帖
返回
//