首页
社区
课程
招聘
求助一下返回原程序入口的问题
发表于: 2012-10-11 14:40 3715

求助一下返回原程序入口的问题

2012-10-11 14:40
3715
添加一个新节,新节内容是弹出一个窗口,是一段shellcode类型的,怎么能当弹出窗口后在返回源程序,比如下面格式(shellcode不是完整的)
shellcode_bin  = $
   shelldata:

     db  0EBh,54h,8Bh,75h,3Ch,8Bh,74h,35h,78h,03h,0F5h,56h,8Bh,76h,20h,03h,0F5h,33
     db 41h,0ADh,33h,0DBh,36h,0Fh,0BEh,14h,28h,38h,0F2h,74h,08h,0C1h,0CBh,0Dh,0
     db  0EFh,3Bh,0DFh,75h,0E7h,5Eh,8Bh,5Eh,24h,03h,0DDh,66h,8Bh,0Ch,4Bh,8Bh
     db  8Bh,04h,8Bh,03h,0C5h,0C3h,75h,72h,6Ch,6Dh,6Fh,6Eh,2Eh,64h,6Ch,
shellcode_end  = $

怎么编写当执行完shellcode就开始执行源程序呢?求指导,

    mov    eax,[ebx]. OptionalHeader.AddressOfEntryPoint  ;入口地址
    mov    eax, [ebx].OptionalHeader.ImageBase   ;基址
    mov    old_base,eax

原入口我保存在了old_base里面了

我想执行完shellcode就直接跳到原程序

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
把保存的原入口old_base
加上jmp寫在shellcode最後面
執行完shellcode不就會跳回去了嗎?
2012-10-13 20:33
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rev
3
怎么写?给个格式
2012-10-15 15:08
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
怎么写?给个格式

突然不知道怎麼回答。
我也不知道shelldata是做甚麼的,有哪些程式碼?
試試看這樣吧

     db  0EFh,3Bh,0DFh,75h,0E7h,5Eh,8Bh,5Eh,24h,03h,0DDh,66h,8Bh,0Ch,4Bh,8Bh
     db  8Bh,04h,8Bh,03h,0C5h,0C3h,75h,72h,6Ch,6Dh,6Fh,6Eh,2Eh,64h,6Ch,
     db  90h,90h,90h,90h,90h  <==增加5個位元組.90h是nop指令,寫入失敗也沒關係
不會執行奇怪的指令
shellcode_end  = $

mov    eax, [ebx].OptionalHeader.ImageBase  
mov    old_base,eax
mov    [shellcode_end - 5],0e9h  0e9是jmp長轉移指令
mov    [shellcode_end  -4],eax   把位址放入剩下的4位元組空間

上面的寫法是錯的,
不過大概是這種意思。
2012-10-15 20:32
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rev
5
不管成不成功,十分感谢回答,马上送上分
2012-10-16 09:01
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rev
6
试了这种方法不行,因为shellcode哪里是不可写的,但是可以再映射文件中操作,写吧shellcode写到文件中去,在用SetFilePointer和WriteFile操作,把后面的5个自己改成jmp xxx这样就OK了
2012-10-16 10:17
0
游客
登录 | 注册 方可回帖
返回
//