首页
社区
课程
招聘
[旧帖] 一段汇编 一段IDA代码 愣是看不懂…… 0.00雪花
发表于: 2010-3-2 10:10 3495

[旧帖] 一段汇编 一段IDA代码 愣是看不懂…… 0.00雪花

2010-3-2 10:10
3495
汇编代码
loc_407348:                           
         mov     ebx, [ebx+19Ch]
         mov     edx, eax
         add     edx, ds:dword_46F270[edi*4]
         add     eax, 10h
         add     ecx, 2
         mov     dx, [ebx+edx*2+8]
         mov     ebx, [esp+8Ch+var_80]
         mov     [ecx-2], dx
         mov     edx, [esp+8Ch+var_68]
         dec     edx
         mov     [esp+8Ch+var_68], edx
jnz     short loc_407348
         mov     edx, [esp+8Ch+var_78]
IDA代码
     v23 = 40000 * v24;
      do
      {
        v26 = dword_46F270[v18] + v23;
        v23 += 16;
        v25 = (char *)v25 + 2;
        LOWORD(v26) = *(_WORD *)(*(_DWORD *)(v19 + 412) + 2 * v26 + 8);
        v19 = v30;
        *((_WORD *)v25 - 1) = v26;
      }
      while ( v37-- != 1 );
      v22 = v32;
哇塞……看不懂 帮忙解释下……
int dword_46F270[]
.rdata:0046F270 dword_46F270    dd 0, 1, 8, 9, 0Ah, 0Bh, 2, 3, 4, 5, 6, 7
dword_46F270[v18] 是个数字数组

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我也看不怎么懂 等待高手啊
2010-3-2 10:15
0
雪    币: 178
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是不是取数据呢?
2010-3-2 11:45
0
雪    币: 55
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哦晕,我只想说,上面才是IDA反汇编出来的代码……下面是Hex Decompiler做出来的伪C代码……
2010-3-2 16:42
0
雪    币: 49
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
答案已经出来了
2010-3-2 20:21
0
雪    币: 178
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我…………
你…………
2010-3-3 10:12
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
eax是传来的第一个参数para1,ebx放的[ebx+19Ch]是第二个参数para2
则:
temp= para1 + a[edi];
para1 += 10;
j++;
char buff = para2 + 2*temp + 8;
char retValue[j] = buff;

这是个循环体,循环控制变量在[esp+8Ch+var_68]里放着……
2010-5-4 13:14
0
雪    币: 253
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
eax,ebx是输入参数
可以设loop=[esp+8ch+var_68];Base=[ebx+19ch]实际上是个常数;temp=edx;scale=ds:dword_46f270[edi*4];temp2=eax
程序代码为
for(loop=n;loop>0;loop--)
{
   temp1=temp2;
  temp1=temp1+scale;
  temp2=temp2+16;
  des=des+2;
  temp1=*(base+temp1*2+8)
  *(des-2)=temp1;
}
2010-5-4 15:42
0
游客
登录 | 注册 方可回帖
返回
//