| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 894 人关注过本帖
标题:求解释,一个小函数的逆向问题
只看楼主 加入收藏
gpp6025
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2010-7-8
结帖率:84.62%
收藏
已结贴  问题点数:20 回复次数:7 
求解释,一个小函数的逆向问题
小弟刚接触逆向,最近在学也在练。
问题的具体的代码,和我自己写成C语言后文件,打包上传上来
求解释.rar (2.53 KB)

望路过大牛高手们不吝指点啊:

有个驱动文件,里面有很多东西不明白,所依RT:

问题一:
.text:0001B040                 push    ebp
.text:0001B041                 mov     ebp, esp
.text:0001B043                 push    0FFFFFFFFh
.text:0001B045                 push    offset dword_1BAA0
.text:0001B04A                 push    offset loc_1B8AA
.text:0001B04F                 mov     eax, large fs:0
.text:0001B055                 push    eax
.text:0001B056                 mov     large fs:0, esp
.text:0001B05D                 add     esp, 0FFFFFFE0h
.text:0001B060                 push    ebx
.text:0001B061                 push    esi
.text:0001B062                 push    edi
这段开始抬高栈底重新开一个栈,
接下来的三个压栈
.text:0001B043                 push    0FFFFFFFFh
.text:0001B045                 push    offset dword_1BAA0
.text:0001B04A                 push    offset loc_1B8AA
具体什么意思没看懂,既没有call调用,也没栈过渡赋值,只是一个压栈保护?但是也没见下面对这三个数据使用额。
还有做大的一个问题fs段0偏移中存储的应该是当前程序TEB结构体的地址吧?将此压栈保护后,把当前esp值放入fs:0处又什么意思啊?把TEB改成了当前的栈顶??而且又add     esp, 0FFFFFFE0h将栈顶回下0FFFFFFE0h大小?但是一进行下面的压栈就把原栈内容覆盖~~似乎解释不通啊 ~~。
问题二是在结束的时候:
.text:0001B1D1 loc_1B1D1:                              ; CODE XREF: sub_1B040+17Cj
.text:0001B1D1                 mov     eax, [ebp+var_24]
.text:0001B1D4                 mov     ecx, [ebp+var_10]
.text:0001B1D7                 mov     large fs:0, ecx
.text:0001B1DE                 pop     edi
.text:0001B1DF                 pop     esi
.text:0001B1E0                 pop     ebx
.text:0001B1E1                 mov     esp, ebp
.text:0001B1E3                 pop     ebp
.text:0001B1E4                 retn    8
.text:0001B1E4 sub_1B040       endp
最后
mov     eax, [ebp+var_24]
mov     ecx, [ebp+var_10]
mov     large fs:0, ecx
fs段0偏移内容改成var_10,而var_10在整个函数过程中都没见有操作,就是一开始的定义连个初始化都没。
这句mov     esp, ebp又将上面esp回下0FFFFFFE0h还原??

问题三:
.text:0001B198                 jmp     short loc_1B1B3
.text:0001B19A loc_1B19A:                              ; DATA XREF: .text:0001BAA4o
.text:0001B19A                 mov     eax, 1
.text:0001B19F                 retn
.text:0001B1A0 loc_1B1A0:
这段loc_1B19A根本就没见执行到:既没有跳转过来执行,上一句是jmp断掉。不知道是我自己逆错了还是咋滴。
还有对操作平台的构架体系上有很多不明白啊~~
求方法啊~~~~~~~
搜索更多相关主题的帖子: C语言 
2011-03-25 23:08
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:10 
这是最基本的东东。 设置SEH而已。都是很典型的代码。

你还是需要先补点win32汇编基础,对着一些教程用OD先动态调试一些简单的吧。
IDA以后再用。

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2011-03-25 23:24
gpp6025
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2010-7-8
收藏
得分:0 
回复 2楼 你们都要疼我哦
谢谢指点啊,就是弱弱的问下:
能简单点说点SEH方面的东东吗?或者SEH和TEB还有fs段方面的东东也行~~~
,谢谢啊~~
2011-03-27 20:36
gpp6025
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2010-7-8
收藏
得分:0 
回复 2楼 你们都要疼我哦
你还是需要先补点win32汇编基础,对着一些教程用OD先动态调试一些简单的吧。

或者具体推荐点啊~~,小弟不胜感激~~
2011-03-27 20:37
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:10 
调试的话 看雪

win32汇编基础 书 罗云彬 Iczelion

具体自己百度去罢
2011-03-27 21:10
gpp6025
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2010-7-8
收藏
得分:0 
回复 5楼 zklhp
难道不能再给点详细点吗~~省去我在那漫漫的百度无效结果下寻找~~
大哥~~好人有好报呀~~非常感谢呀~~
2011-03-28 18:58
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
bbs.

https://bbs.bccn.net/thread-237454-1-1.html

链接会点么


2011-03-28 19:11
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
已经讲的很具体了。就是设置结构化异常处理而已。
你光知道FS 0是TEB结构体地址,那也是TIB的0偏移,存放的是
SEH链入口。这个不需要主动调用,异常时就会跳到异常处理例程。
IDA你现在还不适合用,先用OD动态调些简单的程序吧。
这个不能浮躁,搜索的过程就是学习的过程,百度的过程就是了解的过程

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2011-04-01 14:01
快速回复:求解释,一个小函数的逆向问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022297 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved