首页
社区
课程
招聘
关于call和jmp区别的
发表于: 2014-12-5 13:15 7481

关于call和jmp区别的

2014-12-5 13:15
7481
一款软件壳,尝试给dll加壳。引导代码的结尾是:
jmp  edx

此时就跳转到申请的内存中去执行了
执行的指令是:
ShellStart LABEL  DWORD
  call  $+5
  pop  edx
  sub  edx,5h
这样定位没什么问题。也可以正常执行。

但是如果把,引导末尾的代码修改为:
  call   edx
后面的指令相应的修改为:
ShellStart LABEL  DWORD
  pop  eax
  mov  al,byte ptr[eax]  
  call  $+5
  pop  edx
  sub  edx,8h
  pop  ebp
就会出现错误,而且这个错误很难定位到,要等dll加载之后,并且导出的函数运行起来之后才会出现错误!求教怎么回事?

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 218
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
来学习的哦,坐等老师们解答。
2014-12-5 13:46
0
雪    币: 783
活跃值: (1121)
能力值: ( LV5,RANK:78 )
在线值:
发帖
回帖
粉丝
3
观察堆栈.
2014-12-5 16:54
0
雪    币: 8201
活跃值: (2701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
call要压栈的
2014-12-5 17:29
0
雪    币: 807
活跃值: (2278)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
call edx

ShellStart LABEL  DWORD
  pop eax
  call  $+5
  pop  edx
  sub  edx,5h

执行完: sub  edx,5h  ;edx将会指向 call  $+5   指令地址。

楼主的: sub edx,8h   ;不知道什么意图。
2014-12-5 17:46
0
雪    币: 39
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
你call之后ret了么?是不是堆栈不平衡。。。
2014-12-5 18:27
0
雪    币: 90
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
哎 不知道是我没看明白,还是你没说清楚
2014-12-5 21:07
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
把指令序列拿上来看一下,怀疑你的call是短call上下偏移不超过128
2014-12-6 15:45
0
雪    币: 6542
活跃值: (4341)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
9
call会先入栈返回地址,jmp直接跳走~
2014-12-6 18:44
0
雪    币: 785
活跃值: (2358)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
10
call =   push +  jmp
2014-12-6 19:18
0
游客
登录 | 注册 方可回帖
返回
//