首页
社区
课程
招聘
[旧帖] [求助]关于几句逆向程序的疑问 0.00雪花
发表于: 2008-3-26 14:07 3414

[旧帖] [求助]关于几句逆向程序的疑问 0.00雪花

2008-3-26 14:07
3414
逆向代码如下

mov     edx, [ebp+var_54]
mov     eax, [edx+14h]
add     eax, 1
mov     ecx, [ebp+var_54]
mov     [ecx+14h], eax

最后一句为什么不直接使用edx呢?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 208
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
第二个问题

mov     edx, [ebp+var_58]       
mov     eax, [ebp+var_54]       
mov     ecx, [eax+8]       
mov     [edx], ecx       

是否可以从最后一句来判断var_58 是指针?
是否可以通过第三句怀疑var_54是结构体指针?
2008-3-26 15:51
0
雪    币: 208
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
第三个问题

IDA反编译的函数 int __cdecl sub_63E380(int)
里面有一段代码

mov     eax, [ebp+arg_0]
mov     [ebp+var_4], eax

这里可以判断var_4是int类型么?

之后
mov     ecx, [ebp+var_4]
cmp     dword ptr [ecx+14h], 0FFFFFFFFh

那么var_4应该是个地址吧,dword ptr [ecx+14h]能说明var_4是结构体指针么?
2008-3-28 10:59
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
第一、使用不使用edx没有固定的说法,主要还是要全局的操作和指令的优化有关系。如可能后面的操作要使用edx的值,而现在改变edx的值就会增加后面再次读取的时间。
第二、暂时不能从最后一句判断var_58就是一个指针,因也可能是一个整数值。可以怀疑var_54是一个结构体或类指针
第三、从之后的操作中可以看出arg_0变量是一个结构体或类指针,所以可以判断前面并不是一个int类型变量,而应该是结构体或类指针变量。
2008-3-28 12:37
0
雪    币: 208
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
谢谢回答,第二个和第三个问题我明白了,第一个还是不明白,我说的是
为什么不直接用edx

mov     edx, [ebp+var_54]
mov     eax, [edx+14h]
add     eax, 1
mov     ecx, [ebp+var_54]    这个时候edx里面就是 [ebp+var_54]
mov     [ecx+14h], eax   这里和上面一句为什么不直接用 mov     [edx+14h], eax
这样并没有改变edx,而是改变了edx+14h指向的数据,是不是怀疑var_54是通用数据指针的原因呢?
2008-3-28 12:43
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
6
前面已经说过了,和当前环境和编译器对指令的优化而决定。毕竟机器是机器,还没有智能到和人一样的智能。
2008-3-28 13:10
0
雪    币: 208
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
收到,谢谢。
2008-3-28 13:14
0
游客
登录 | 注册 方可回帖
返回
//