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

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

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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

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

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