首页
社区
课程
招聘
[旧帖] 在线求汇编转译 0.00雪花
发表于: 2010-9-15 15:47 4275

[旧帖] 在线求汇编转译 0.00雪花

2010-9-15 15:47
4275
02E98350  /$  56            push esi
02E98351  |.  57            push edi
02E98352  |.  6A 00         push 0                                                                 ; /timer = NULL
02E98354  |.  E8 4F370000   call <jmp.&MSVCR71.time>                                               ; \time
02E98359  |.  50            push eax                                                               ; /seed
02E9835A  |.  E8 01380000   call <jmp.&MSVCR71.srand>                                              ; \srand
02E9835F  |.  8B7C24 18     mov edi,dword ptr ss:[esp+18]
02E98363  |.  83C4 08       add esp,8
02E98366  |.  33F6          xor esi,esi
02E98368  |>  E8 ED370000   /call <jmp.&MSVCR71.rand>                                              ; [rand
02E9836D  |.  99            |cdq
02E9836E  |.  B9 23000000   |mov ecx,23
02E98373  |.  F7F9          |idiv ecx
02E98375  |.  A1 B0F7EF02   |mov eax,dword ptr ds:[2EFF7B0]
02E9837A  |.  46            |inc esi
02E9837B  |.  81FE FF030000 |cmp esi,3FF
02E98381  |.  8A0C10        |mov cl,byte ptr ds:[eax+edx]
02E98384  |.  884C3E FF     |mov byte ptr ds:[esi+edi-1],cl
02E98388  |.^ 7C DE         \jl short iDeviceM.02E98368

转译
  v3 = time(NULL);
  srand(v3);
  v2 = 0;
  do
  {
    ++v2;
        int nrand =  rand() % 35;//
        *(BYTE *)(v2 + a2 - 1) = g_szrand[nrand];//2EFF7B0

  }
  while ( v2 < 1023 );

但是我不知道其中的cdq,怎么翻译
请大虾帮忙看下是否正确
谢谢了

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
哎,还没有人啊
算了,结帖了
我刚跟了一下,发现他在这里没有起作用
2010-9-15 17:04
0
雪    币: 576
活跃值: (1500)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
3
CDQ,,把EDX清零,就是EAX高位的扩展,

02E98368  |>  E8 ED370000   /call <jmp.&MSVCR71.rand>                                              ; [rand
02E9836D  |.  99            |cdq
02E9836E  |.  B9 23000000   |mov ecx,23
02E98373  |.  F7F9          |idiv ecx

翻译成C,就是   int nrand =  rand() % 35;//
2010-9-15 19:58
0
雪    币: 38
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
楼主 用的什么工具得到的这段反汇编代码啊 ?
2010-9-16 01:55
0
雪    币: 47
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我也不懂,新人一个
关注中
2010-9-16 12:53
0
雪    币: 62
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
建议楼主去下一个masm32开发包,里面的help文件夹下的opcodes.chm说得满清楚的~
CDQ - Convert Double to Quad (386+)

Usage:  CDQ

Modifies flags: None

Converts signed DWORD in EAX to a signed quad word in EDX:EAX by
extending the high order bit of EAX throughout EDX

                         Clocks                 Size
Operands         808x  286   386   486          Bytes
none              -     -     2     3             1

99 CDQ EDX:EAX

简单来说就是把EAX的有符号双字转换成 EDX:EAX 的4字数据,扩展EAX的符号位~
2010-9-16 19:17
0
雪    币: 38
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
我的疑惑是   楼主 用什么软件 能直接把 C 的函数给显示出来呢 -- rand(),time()
---------,OD貌似不能吧 ????

---------------------------
cdq  ===== convert dword eax to quad word edx:eax

直接说应是  将edx每一bit填充为eax的最高位的值,执行后 edx 是00000000 或 FFFFFFFF

效果是 使 EDX:EAX 的符号与 EAX相同,以达到正确 idiv 的目的
2010-9-16 23:07
0
雪    币: 21
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
CDQ 是一个让很多初学者感到困惑的指令. 它大多出现在除法运算之前.
它实际的作用只是把EDX的所有位都设成EAX最高位的值. 也就是说,
当EAX <80000000, EDX 00000000;
当EAX >= 80000000, EDX 则为FFFFFFFF.
2010-9-16 23:33
0
雪    币: 80
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
使用IDA的Hex-Ray插件可转成C
2010-9-17 16:36
0
游客
登录 | 注册 方可回帖
返回
//