首页
社区
课程
招聘
用IDA得到的反汇编代码的问题
发表于: 2004-7-21 23:43 5828

用IDA得到的反汇编代码的问题

2004-7-21 23:43
5828
我反汇编了一个驱动文件,有几个问题不明白:
1。
repe stosd
是什么指令?!好象不能这样用吧(会有错误instruction prefix not allowed)?我想知道怎样改。
2。
下面的指令可能是什么?
call dword ptr [ecx]
还有
call [ebp+arg_14]
3。
看到我的驱动反编译后的代码,对于调用的处理类似于:
func(long a,long b)  ->
1:
push a
push b
call func
2:
push b
push a
call func
还有局部变量的处理:
{long a,b;          ->
1:
push ebp
mov  ebp,esp
add  esp,ffffffffch
...
调用:
mov  eax,[ebp-4] ;a
mov  ecx,[ebp-8] ;b
2:
push ebp
mov  ebp,esp
调用:
mov  eax,[ebp+8] ;a
mov  ecx,[ebp+0ch] ;b
搞不明白......
我现在做手动的翻译,想把他们还原成高级语言。不知道是不是只要逻辑和反
编译的汇编代码一样,代码就可以正确运行,“看起来”和原来的一样?

帮个忙好吗?谢了!

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

收藏
免费 2
支持
分享
最新回复 (2)
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
repe stosd
~~~~~~~~~~
repz stdsd我想可能是这个把??

是什么指令?!好象不能这样用吧
(会有错误instruction prefix not allowed)?我想知道怎样改。
2004-7-22 00:03
0
雪    币: 218
活跃值: (129)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这几天跟踪了一下repe stosd好像是改声卡的指令。
现在麻烦大了......反汇编后有800多个函数......看来还原是没指望了(里面有很多是编译器加的,鬼知道哪些是源代码里的)。
事情本来是这样的:
驱动加载后可以正常工作,可是当工作近半小时后系统就崩溃(如果开了画图等图形程序后这段时间还会变短。),而且没留下dumpfile ?!我就用softice 拦截,结果崩溃前softice 自动弹出,分析后得知是数据段存储链表的那一段
在运行时随机遭篡改。如果哪个指针被改成了指向不存在的区域,系统就崩溃。按理说不会吧...

我现在只想两种方法,就是不知道怎样实现:
一种是查出怎样篡改的,最好有种软件能跟踪纪录最近的运行路径和寄存器值(特权0),或者直接通过softice实现?
另一种:我找到了发生错误的部位,想加入一段代码返回到windowsXP,而不是蓝屏。不知道怎样改。
2004-7-31 01:13
0
游客
登录 | 注册 方可回帖
返回
//