首页
社区
课程
招聘
[求助]一个中年新人。请教几个汇编代码,请指教
发表于: 2008-7-10 21:36 3545

[求助]一个中年新人。请教几个汇编代码,请指教

2008-7-10 21:36
3545
才学习汇编。好不容易跟到算法里面。又点看不懂
006BD29C  /$  8B4424 04     MOV EAX,DWORD PTR SS:[ESP+4]             ;  入ax=aaaaaaaaaa
006BD2A0  |.  A8 03         TEST AL,3                                ;  zf=1
006BD2A2  |.  75 2D         JNZ SHORT widi_unp.006BD2D1
006BD2A4  |>  8B10          /MOV EDX,DWORD PTR DS:[EAX]
006BD2A6  |.  83C0 04       |ADD EAX,4                               ;  ax=aaaaaa
006BD2A9  |.  8BCA          |MOV ECX,EDX
006BD2AB  |.  81EA 01010101 |SUB EDX,1010101
006BD2B1  |.  81E2 80808080 |AND EDX,80808080
006BD2B7  |.^ 74 EB         |JE SHORT widi_unp.006BD2A4
006BD2B9  |.  F7D1          |NOT ECX
006BD2BB  |.  23D1          |AND EDX,ECX
006BD2BD  |.^ 74 E5         \JE SHORT widi_unp.006BD2A4
006BD2BF  |.  84D2          TEST DL,DL
006BD2C1  |.  75 28         JNZ SHORT widi_unp.006BD2EB
006BD2C3  |.  84F6          TEST DH,DH
006BD2C5  |.  75 25         JNZ SHORT widi_unp.006BD2EC
006BD2C7  |.  F7C2 0000FF00 TEST EDX,0FF0000
006BD2CD  |.  75 1E         JNZ SHORT widi_unp.006BD2ED
006BD2CF  |.  EB 1D         JMP SHORT widi_unp.006BD2EE
006BD2D1  |>  83C0 04       ADD EAX,4
006BD2D4  |.  F640 FC FF    TEST BYTE PTR DS:[EAX-4],0FF
006BD2D8  |.  74 11         JE SHORT widi_unp.006BD2EB
006BD2DA  |.  F640 FD FF    TEST BYTE PTR DS:[EAX-3],0FF
006BD2DE  |.  74 0C         JE SHORT widi_unp.006BD2EC
006BD2E0  |.  F640 FE FF    TEST BYTE PTR DS:[EAX-2],0FF
006BD2E4  |.  74 07         JE SHORT widi_unp.006BD2ED
006BD2E6  |.  48            DEC EAX
006BD2E7  |.  24 FC         AND AL,0FC
006BD2E9  |.^ EB B9         JMP SHORT widi_unp.006BD2A4
006BD2EB  |>  48            DEC EAX
006BD2EC  |>  48            DEC EAX
006BD2ED  |>  48            DEC EAX
006BD2EE  |>  8B4C24 04     MOV ECX,DWORD PTR SS:[ESP+4]
006BD2F2  |.  48            DEC EAX
006BD2F3  |.  2BC1          SUB EAX,ECX
006BD2F5  \.  C3            RETN

请高手帮忙注释下。在下愚昧ADD EAX,4 都没搞懂为何变成了aaaaaa,其他下面的就更糊涂了。第一次又点上不了手

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
EAX的内容刚好是一个合法的内存地址,而该内存位置保存的信息就是aaaaaa
2008-7-11 00:32
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
在这里EAX是一个指向字符串的指针

EAX = OFFSET "aaaaaaaaaa"
              ^EAX现在指向这里

ADD EAX, 4
就是说指针向后移动4个字节也就是32位,那么现在EAX的情况就是:

EAX = OFFSET "[COLOR="Red"]aaaa[/COLOR]aaaaaa"
                  ^EAX现在指向这里,那么现在EAX指向的字符串就少了4个A


推荐LZ好好看一下关于指针的部分。
再给你推荐一本好书《Pointers On C》,中文译名是《C和指针》

然后再详细看看CISRG 7all写的<How to study C&ASM CODE>系列文档,相信读懂这些之后会对今后的学习有很大的帮助。
2008-7-11 01:18
0
雪    币: 350
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
同楼主一起学习了.  谢谢版主和soshort
2008-7-11 03:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
中年人来学习 精神可嘉啊 我们年轻人要更加努力了 不像我爸天天做在电脑前面只知道斗地主 哎
2008-7-11 03:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好的,谢谢几位朋友的指导。
2008-7-11 08:49
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
有幸一起学习,我深感谢意
2008-7-11 09:07
0
游客
登录 | 注册 方可回帖
返回
//