首页
社区
课程
招聘
[旧帖] [求助]反汇编进制转换是怎么知道的啊?碰到类似问题就倒了 0.00雪花
发表于: 2010-3-17 01:11 1300

[旧帖] [求助]反汇编进制转换是怎么知道的啊?碰到类似问题就倒了 0.00雪花

2010-3-17 01:11
1300
00401039  |.  8BFE          mov     edi, esi
0040103B  |.  83C9 FF       or      ecx, FFFFFFFF
0040103E  |.  33C0          xor     eax, eax
00401040  |.  33D2          xor     edx, edx
00401042  |.  F2:AE         repne   scas byte ptr es:[edi]
00401044  |.  F7D1          not     ecx
00401046      49            dec     ecx
00401047  |.  74 17         je      short 00401060
00401049  |>  0FBE0C32      /movsx   ecx, byte ptr [edx+esi]         ;  假码第一位
0040104D  |.  03E9          |add     ebp, ecx                        ;  ebp=ebp+ecx
0040104F  |.  8BFE          |mov     edi, esi                        ;  edi=esi
00401051  |.  83C9 FF       |or      ecx, FFFFFFFF
00401054  |.  33C0          |xor     eax, eax                        ;  eax=0
00401056  |.  42            |inc     edx                             ;  edx=edx+1
00401057  |.  F2:AE         |repne   scas byte ptr es:[edi]
00401059  |.  F7D1          |not     ecx
0040105B  |.  49            |dec     ecx                             ;  ecx=ecx-1
0040105C  |.  3BD1          |cmp     edx, ecx
0040105E    ^ 72 E9         jb      short 00401049
00401060  |>  81C5 64600000 add     ebp, 6064
00401066  |.  55            push    ebp
00401067  |.  68 34604000   push    00406034                         ;  %lu
0040106C  |.  68 306B4000   push    00406B30
00401071  |.  E8 B6030000   call    0040142C

我就郁闷了 就凭最后3行代码就知道是要转10进制数啊?作者说的 我看不懂...
od寄存器的esp的内容为 Aa
还有就是00401047  |.  74 17         je      short 00401060什么意思?前面不是取了字符长度
怎么还来一个相等就跳  跟谁相等啊  

哎  ....
帮帮我吧 这个时候了还在扛!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
ecx放的是字符串长度,je也就是说如果字符串长度为0就跳。
至于转10进制……应该是看到的注释把,%lu,貌似是printf之类的函数,printf("number is %lu",num);这样的话压栈时就是push num,push "%lu",push "number is "。
2010-3-17 10:35
0
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
还是不懂0..
2010-3-17 20:45
0
雪    币: 424
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
应该是sscanf函数吧,将字符串转换成数:
sscanf("100", "%d", &num);
2010-3-17 21:10
0
雪    币: 6924
活跃值: (2745)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你接触过编程就知道了。printf 和scanf函数里面可以定义输入输出的格式。 和你的问题联系起来,就是%lu   是输入或输出无符号长整型书籍。  l 是长整型, u 是无符号
2010-3-18 16:11
0
游客
登录 | 注册 方可回帖
返回
//