首页
社区
课程
招聘
[旧帖] 脱壳为何要在回跳下一句按F4? 0.00雪花
发表于: 2014-6-26 13:45 5811

[旧帖] 脱壳为何要在回跳下一句按F4? 0.00雪花

2014-6-26 13:45
5811
一直不惑,回跳后不可能发生到OEP的跳转吗?
求讨论,求群殴。

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

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 102
活跃值: (2025)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
mark
2014-6-26 14:09
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
一般会跳是循环过程中, 当你确定了下一句可以跳出这个该死的循环时,F4 满足你的需要
2014-6-26 14:37
0
雪    币: 55
活跃值: (519)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
4
若循环内存在一个条件决定是否跳转OEP,在循环的下一句F4不就没用了 ?
怎么避免,以及这种壳是否存在。
如不存在,原因是什么?(循环中符合某个条件就 进行恢复堆栈,然后JMP到OEP)
2014-6-27 09:17
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
一般这种都会有个特征的调用的,譬如

1: jmp dword ptr[eax*xxxx]    //   不一定是  EAX ,这里只是随便找个寄存器

1: call  eax                             //    同上, EAX 只是一个例子

解决这个看不到的调用,可以写个脚本,譬如

var i
var temp
ebp   xxxxxxx                 // xxxxxxx  就是这上面两个特征代码处
log:
esto
inc i
mov temp,eax
temp=temp*xxxx
eval "{i} :  {temp}"     
log $RESULT
jmp log

这个时候你运行一次脚本,就可以在 log 窗口得到

1 : 401733
2 : 445674
。。。。
。。。。
N : 442832

譬如 N 是最后一次,那么 就是从这个调用  N 次,由  442832 到达目的地

当然还有很多猥琐的方式到达的,这里只是举个例子
2014-6-27 14:07
0
雪    币: 68
活跃值: (190)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
因为让程序走快点
2014-6-27 14:12
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看一下自己的头像现金
2014-6-27 15:32
0
雪    币: 16386
活跃值: (1600)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
没啥,就为了快点到达某地省的火车误点。
你还可以 先F2,再F9,再F2,这样不易跟飞。
2014-6-27 17:12
0
雪    币: 7
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
一般这种情况主要发生在壳加压源程序的时候,并不是不可能出现跳到OEP的状况,如果代码是人为设定的,或者壳自身设定的,那就是有可能的。
2014-6-28 19:40
0
雪    币: 55
活跃值: (519)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
10
那么循环中如果满足某个条件就进行跳转OEP呢?这种情况可能吗。我知道我挖老贴了 ,但是如今看到依旧有点纠结
2015-2-26 13:39
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我觉得楼主确实有点纠结 循环语句的出现就是为了等待一个判断或者比较 没有判断和比较必然会一直循环下去 F4的意义就在于此 给你加一个向外跳转的外部力量就结了  这就好比驴子拉磨盘 它不是饿了要拉了什么的种种条件就不会停下来  F4的意义在于跳出磨盘拉磨这件事 让他去下底种田  懂了没?
2015-3-2 13:35
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
顺序执行
2015-3-2 13:54
0
雪    币: 55
活跃值: (519)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
13
我知道是跳过循环,但是否有壳会故意在循环中插入跳往OEP的指令,这种情况下,调试中 当我们碰到往回跳转的指令时,在整个循环的下一句F4时,就会跑飞了不是吗。。
2015-3-3 09:39
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
好好研究一下 基本的机器语言  包括了解一下高级语言和汇编语言的区别联系 这个一时半会真讲不清楚 反正得告诉你OD显示都是汇编语言---对应的高级语言的底层解释。  比如IF 语句加参数在机器代码里面不是一句汇编就能表达的 ,而是很多句汇编语言表达出来的 。试问他能加进去什么咧?  就算加进去什么东西  语言的解释也就出问题了 ,IF可能改变为其它的功能语句了,那么软件本身的功能就泡汤了 。别纠结这个。 我觉得要紧的是多理解一下汇编语言和高级语言的联系。如果你一眼就看出一组汇编语言代表了什么高级语言的代码,那么你就大牛了。写点伪代码完全不是问题。  咱们学习逆向,应该是学习别个软件的思路,搞清楚功能是如何实现的。而不是简单的爆破就完了,那没有意义。最初我也就是想破解点什么软件拉,外挂啦,可是进来才发现这个逆向工程真的是烟波浩渺。我现在都回头去看基础的东西了,越看越有意思。推荐一本书看看 论坛应该有----老“码”识途 从机器码到框架的系统观逆向修炼之路
2015-3-18 10:06
0
雪    币: 55
活跃值: (519)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
15

你说的这种情况,是改源程序的代码,IF的语句块里面是可以插入语句的,但是就会面临代码长度导致后面的代码被覆盖的问题。
但我说……的是壳自己的循环语句中是否可能包含满足某个条件就跳转到OEP的情况,比如满足某个条件,就做
push pOep
ret
这种操作。所以我提问是否有可能存在不应该直接在下一句按F4的回跳。
2015-3-31 16:36
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
因为那里是死循环,所以得按F4跳过去呀
2015-3-31 17:50
0
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
只要你F8按多了,就知道了,无需问。
纸上得来终觉浅。
2015-4-4 19:38
0
游客
登录 | 注册 方可回帖
返回
//