首页
社区
课程
招聘
这段用C语言怎么写?
发表于: 2014-2-21 19:34 4668

这段用C语言怎么写?

2014-2-21 19:34
4668
00554E71  |.  51            push    ecx
00554E72  |.  B9 E8030000   mov     ecx, 3E8
00554E77  |.  99            cdq
00554E78  |.  F7F9          idiv    ecx                              ;  后四位处以1000
00554E7A  |.  59            pop     ecx
00554E7B  |.  83E8 05       sub     eax, 5                           ;  减去5
00554E7E  |.  894424 04     mov     dword ptr [esp+4], eax           ;  存到+4
00554E82  |.  8BC3          mov     eax, ebx
00554E84  |.  BB E8030000   mov     ebx, 3E8
00554E89  |.  99            cdq
00554E8A  |.  F7FB          idiv    ebx
00554E8C  |.  8BDA          mov     ebx, edx                         ;  找edx
00554E8E  |.  8B4424 04     mov     eax, dword ptr [esp+4]           ;  存到+4的数据给eax
00554E92  |.  99            cdq
00554E93  |.  33C2          xor     eax, edx
00554E95  |.  2BC2          sub     eax, edx



我写不出来。。。。有的蒙了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
大致能看明白就是转化成VC就打住。
2014-2-21 19:35
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
idiv    ecx  

    xor     eax, edx
主要是
这两句
2014-2-21 19:36
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
求解答idiv除
2014-2-21 20:02
0
雪    币: 9189
活跃值: (3119)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
5
00554E71  |.  51            push    ecx
00554E72  |.  B9 E8030000   mov     ecx, 3E8                         ;0x3e8 == 1000
00554E77  |.  99            cdq
00554E78  |.  F7F9          idiv    ecx                              ;  除以1000   eax/1000   
00554E7A  |.  59            pop     ecx
00554E7B  |.  83E8 05       sub     eax, 5                           ;  减去5   商减去5
00554E7E  |.  894424 04     mov     dword ptr [esp+4], eax           ;  [esp+4]=eax
00554E82  |.  8BC3          mov     eax, ebx                         ;  eax=ebx
00554E84  |.  BB E8030000   mov     ebx, 3E8
00554E89  |.  99            cdq
00554E8A  |.  F7FB          idiv    ebx                              ;eax/0x3e8
00554E8C  |.  8BDA          mov     ebx, edx                         ;  edx是余数,余数给ebx
00554E8E  |.  8B4424 04     mov     eax, dword ptr [esp+4]           ;  存到+4的数据给eax,第一次除法的商
00554E92  |.  99            cdq
00554E93  |.  33C2          xor     eax, edx                         ;第一次除法的商和第二次除法的余数异或
00554E95  |.  2BC2          sub     eax, edx                         ;异或结果再减去余数

只有这一段没法写,被除数是未知的。你看看二个被除数分别是什么值。
2014-2-21 20:05
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
eax 是 一个16进制数字
2014-2-21 20:14
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
mov eax,ebx 上一句是这样的,而ebx的值是4C8十进制的1124
2014-2-21 20:15
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
这个值是根据时间动态变化的
2014-2-21 20:17
0
雪    币: 1028
活跃值: (135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
int nEcx = 0x3E8;
nArg = nEax / nEcx - 5;
nEbx = nEbx % nEcx;
nEax = abs(nArg);

cdq
xor eax, edx
sub eax, edx
这三句是取绝对值。

补充:
idiv是有符号的除法指令。cdq是将eax的符号位扩展到edx,参与运算,在进行逆向的时候不需要翻译成对应的C代码。
2014-2-21 21:28
0
雪    币: 1
活跃值: (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
同上....
2014-2-22 16:07
0
雪    币: 284
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
第一列是地址吗?这是指针么??
2014-2-22 21:37
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
感谢各位结贴
2014-2-24 15:08
0
游客
登录 | 注册 方可回帖
返回
//