首页
社区
课程
招聘
[原创]OllyDBG 入门系列(二)-字串参考
发表于: 2006-2-14 13:34 1500792

[原创]OllyDBG 入门系列(二)-字串参考

2006-2-14 13:34
1500792
收藏
免费 10
支持
分享
最新回复 (1465)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
676
学习分享,楼主辛苦了!!!
2008-6-27 15:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
677
非常详细,非常有用。
2008-6-29 13:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whh
678
跟着这里一步一步学  结束了以后还是不会
2008-6-29 15:48
0
雪    币: 372
活跃值: (36)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
679
又来看一遍哈哈
2008-6-29 21:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
680
真是太谢谢LZ了!
2008-7-4 15:06
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
681
看了,给楼主提个小错误。不知道其他人发现没有。
00403B33 |. 39D0            CMP EAX,EDX                         ; 用“Registered User”和我们输入的用户名作比较

这块应该是比较两个字符串地址,不是比较用户名。这个比较基本都是不相同的。

00403B55 |> 8B0E            MOV ECX,DWORD PTR DS:[ESI]          ; 把我们输入的用户名送到ECX
00403B57 |. 8B1F            MOV EBX,DWORD PTR DS:[EDI]          ; 把“Registered User”送到EBX
00403B59 |. 39D9            CMP ECX,EBX                         ; 比较
00403B5B |. 75 58           JNZ SHORT CrackMe3.00403BB5         ; 不等则完蛋

这块也有点问题,其实比较字符串是以下的代码,
00403B55  |> /8B0E          /mov     ecx, dword ptr [esi]
00403B57  |. |8B1F          |mov     ebx, dword ptr [edi]
00403B59  |. |39D9          |cmp     ecx, ebx
00403B5B  |. |75 58         |jnz     short 00403BB5
00403B5D  |. |4A            |dec     edx
00403B5E  |. |74 15         |je      short 00403B75
00403B60  |. |8B4E 04       |mov     ecx, dword ptr [esi+4]
00403B63  |. |8B5F 04       |mov     ebx, dword ptr [edi+4]
00403B66  |. |39D9          |cmp     ecx, ebx
00403B68  |. |75 4B         |jnz     short 00403BB5
00403B6A  |. |83C6 08       |add     esi, 8
00403B6D  |. |83C7 08       |add     edi, 8
00403B70  |. |4A            |dec     edx
00403B71  |.^\75 E2         \jnz     short 00403B55
00403B73  |.  EB 06         jmp     short 00403B7B

应该是一个循环了。
2008-7-6 18:49
0
雪    币: 180
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
682
还是十分感谢楼主,你这个系列的东西十分好。我已经看了好几遍了,希望你能把这个系列继续写下去,强烈支持你!
2008-7-6 18:52
0
雪    币: 112
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
683
支持支持....我也是新手.
2008-7-8 21:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
684
还好 原版在此 看了一本编译的ebook,图片小的看不清楚
2008-7-9 00:00
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
685
谢谢。是你教会了我用OD
2008-7-9 02:31
0
雪    币: 112
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
686
不错,不错
嘎,我是新手.不过这里我有一点疑问??
"就是那个断点为什么要设在那里?"
设在其它地方不行吗?
2008-7-10 13:36
0
雪    币: 246
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
687
详细,我刚进都可以理解了,呵呵!谢了,louzhu!
2008-7-11 19:30
0
雪    币: 246
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
688
00403B43 |. 8B46 FC         MOV EAX,DWORD PTR DS:[ESI-4]        ; 用户名长度送EAX
00403B46 |. 8B57 FC         MOV EDX,DWORD PTR DS:[EDI-4]        ; “Registered User”字串的长度送EDX
00403B49 |. 29D0            SUB EAX,EDX                         ; 把用户名长度和“Registered User”字串长度相减
00403B4B |. 77 02           JA SHORT CrackMe3.00403B4F          ; 用户名长度大于“Registered User”长度则跳
00403B4D |. 01C2            ADD EDX,EAX                         ; 把减后值与“Registered User”长度相加,即用户名长度
00403B4F |> 52              PUSH EDX
00403B50 |. C1EA 02         SHR EDX,2                           ; 用户名长度值右移2位,这里相当于长度除以4
00403B53 |. 74 26           JE SHORT CrackMe3.00403B7B          ; 上面的指令及这条指令就是判断用户名长度最少不能低于4
00403B55 |> 8B0E            MOV ECX,DWORD PTR DS:[ESI]          ; 把我们输入的用户名送到ECX
00403B57 |. 8B1F            MOV EBX,DWORD PTR DS:[EDI]          ; 把“Registered User”送到EBX
00403B59 |. 39D9            CMP ECX,EBX                         ; 比较
00403B5B |. 75 58           JNZ SHORT CrackMe3.00403BB5         ; 不等则完蛋,
为什么用户名要大于4?说说哦,我很低的,请教高手。
还有00403B50 |. C1EA 02         SHR EDX,2                           ; 用户名长度值右移2位,这里相当于长度除以4,这里又是为什么要相当于除以4呢?xiexie,教教我。好吗?
2008-7-11 20:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
689
做了又不记得
我多练他几次
2008-7-15 09:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
690
坚决支持,下下来,慢慢看
2008-7-16 14:39
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
691
我来回答688楼的问题。
1:问题:用户名长度值右移2位,这里相当于长度除以4,这里又是为什么要相当于除以4呢?
    回答:用户名的数据在计算机中是以2进制保存的(其实所有数据都是以2进制保存的),在2进制中,数据右移1位相当与除以2,右移2位相当与除以2*2,依次类推,右移N位相当与除以2的N次方,左移刚好相反,左移N位相当与乘以2的N次方。举例数据8(00001000),右移1位后变成4(00000100)。
2:问题:为什么用户名要大于4?
    回答:看这行代码   JE SHORT CrackMe3.00403B7B  
            JE是相等则跳转,判断的是ZF(你不知道ZF,晕,那我就没法解释了)是否等于1,等于1时就表示计算结果为0 ,当用户名长度小于4时,除以4那结果就为0,设置状态ZF=1。这时就跳转了。所以被除数必须大于等于4。

呵呵。解释的不知道你明白不?
2008-7-19 02:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
692
非常感谢楼主,支持写下去。
2008-7-19 12:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
693
好东西啊 很适合俺们这种初学者
2008-7-24 16:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
694
看不懂怎么办。
2008-7-27 12:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
695
学习了!谢谢LZ
2008-7-28 20:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
696
这个就已经挺复杂了,看了好久才明白
2008-8-1 08:25
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
697
一步一步跟着学!
2008-8-1 15:41
0
雪    币: 4326
活跃值: (2958)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
698
支持 你们 啊
2008-8-1 19:37
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
699
00403B43 |. 8B46 FC         MOV EAX,DWORD PTR DS:[ESI-4]        ; 用户名长度送EAX
00403B46 |. 8B57 FC         MOV EDX,DWORD PTR DS:[EDI-4]        ; “Registered User”字串的长度送EDX
00403B49 |. 29D0            SUB EAX,EDX                         ; 把用户名长度和“Registered User”字串长度相减
00403B4B |. 77 02           JA SHORT CrackMe3.00403B4F          ; 用户名长度大于“Registered User”长度则跳
我是超级菜鸟 现在刚学完汇编!!请问ja的跳转条件不是cf和zf都为0吗?
为什么是   用户名长度大于“Registered User”长度则跳呢
2008-8-3 17:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
700
厉害!我不能不佩服!我要好好学习数学!(*^__^*) 嘻嘻……
2008-8-5 17:53
0
游客
登录 | 注册 方可回帖
返回
//