首页
社区
课程
招聘
[旧帖] [求助]je不跳? 0.00雪花
发表于: 2008-4-21 20:00 5529

[旧帖] [求助]je不跳? 0.00雪花

2008-4-21 20:00
5529
00403B33  |.  39D0          cmp     eax, edx
00403B35  |.  0F84 8F000000 je      00403BCA

EAX 00D410D0 ASCII "Registered User"

EDX 00441014 ASCII "Registered User"

为什么不je不跳?   麻烦给小菜讲解一哈

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
你觉得它在比较字符串吗??
cmp   eax,edx
这是在比较什么,你好好想想,去翻翻Intel的指令集看看吧!!
2008-4-21 21:12
0
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
首先,那是比较的eax和edx的值,而不是他们说指的内存内容,当然不跳了(因为eax根本就不等于edx).
再次,想让它跳可以把je      00403BCA修改为jmp 00403bca
2008-4-22 08:58
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
呵呵,那咱们往下说,如果是比较内容怎么做。
2008-4-22 13:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
书上说跳的..
2008-8-21 10:59
0
雪    币: 6092
活跃值: (654)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
6
去 看论坛基础资料
这个都不懂   说明你  缺少耐心
2008-8-21 11:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
呵呵,这就是C中最基础的指针地址与指针指向值的区别问题.
2008-8-21 16:50
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lcw
8
http://bbs.pediy.com/showthread.php?s=&threadid=21308
OD入门系列里大确实有这两句解说,相信楼主看的就是这个例子
00403B33 |. 39D0            CMP EAX,EDX                         ; 用“Registered User”和我们输入的用户名作比较
00403B35 |. 0F84 8F000000   JE CrackMe3.00403BCA                ; 相同则跳
2008-8-21 17:23
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
9
自己动手找出答案是个好习惯,大多数情况下发帖问初级问题还不如自己查资料来得快
2008-8-21 17:36
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lcw
10
EAX 00D410D0 ASCII "Registered User"

EDX 00441014 ASCII "Registered User"
这两都是 Registered User 时这里确实不跳,按书上的解说跟注释的意思如果相同的话会跳的,大家回复新手问题的时侯好像都带着一种质疑的口气,如果像3楼所说的 “cmp     eax, edx
是比较的eax和edx的值,而不是他们说指的内存内容”, 那么就应该是书上的注释写错了

用OD打开实例 在 00403B33 处有个注释 initial cpu selection  在线翻译一下意思大概是“初步CPU的选择”
00403B33  |.  39D0          cmp     eax, edx                         ;  (initial cpu selection)
2008-8-21 17:53
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
11
不是回复新手问题带着质疑口气,这样的问题一本IA32指令集search一下几秒钟的时间就明白了
39 /r    CMP r/m32,r32    Compare r32 with r/m32
3B /r    CMP r32,r/m32    Compare r/m32 with r32

Compares the first source operand with the second source operand and sets the status flags in the EFLAGS register according to the results.
The comparison is performed by subtracting the second operand from the first operand and then setting the status flags in the same manner as the SUB instruction.

CMP实际上是一个SUB运算,所以你说的情形肯定不会跳
2008-8-21 18:10
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
12
来源与目标不得相同
00D410D0 != 00441014
很多人写Functin前面都会这样先确认一下
2008-8-21 18:23
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lcw
13
我们都知道CMP执行的是一个减法操作不返回结果只影响标志位,现在的疑问是书上的是不是写错了,我们好纠正过来,还有像4楼说的 “如果是比较内容怎么做” 那么指令是怎么样的。

按12楼的解说应该就是 作 者: CCDebuger 写破文解说的时侯疏忽理解错了

楼上的英语太强了,我看不懂
2008-8-21 18:25
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
14
先对楼上的兄弟说声抱歉,我刚才回复的时候看错了还以为是楼主,另外我没看过你们说的书,所以就不唠叨了
2008-8-21 18:34
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
15
贴程序码不要只贴2行
函数头
00403B2C /$ 53              PUSH EBX
00403B2D |. 56              PUSH ESI
00403B2E |. 57              PUSH EDI
00403B2F |. 89C6            MOV ESI,EAX
00403B31 |. 89D7            MOV EDI,EDX
00403B33 |. 39D0            CMP EAX,EDX                   ;来源与目标相同吗?
00403B35 |. 0F84 8F000000   JE CrackMe3.00403BCA
00403B3B |. 85F6            TEST ESI,ESI                  ;来源 = null ?
00403B3D |. 74 68           JE SHORT CrackMe3.00403BA7
00403B3F |. 85FF            TEST EDI,EDI                  ;目标 = null ?
00403B41 |. 74 6B           JE SHORT CrackMe3.00403BAE
00403B43 |. 8B46 FC         MOV EAX,DWORD PTR DS:[ESI-4]  ;来源字串长度
00403B46 |. 8B57 FC         MOV EDX,DWORD PTR DS:[EDI-4]  ;目标字串长度
2008-8-21 18:37
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lcw
16
http://bbs.pediy.com/showthread.php?s=&threadid=21308

我们都是看到这个贴子的教程,,加密解密(第三版) 应该也有这个帖子的内容

00403B2C /$ 53              PUSH EBX
00403B2D |. 56              PUSH ESI
00403B2E |. 57              PUSH EDI
00403B2F |. 89C6            MOV ESI,EAX                         ; 把EAX内我们输入的用户名送到 ESI
00403B31 |. 89D7            MOV EDI,EDX                         ; 把EDX内的数据“Registered User”送到EDI
00403B33 |. 39D0            CMP EAX,EDX                         ; 用“Registered User”和我们输入的用户名作比较
00403B35 |. 0F84 8F000000   JE CrackMe3.00403BCA                ; 相同则跳
00403B3B |. 85F6            TEST ESI,ESI                        ; 看看ESI中是否有数据,主要是看看我们有没有输入用户名
00403B3D |. 74 68           JE SHORT CrackMe3.00403BA7          ; 用户名为空则跳
00403B3F |. 85FF            TEST EDI,EDI
00403B41 |. 74 6B           JE SHORT CrackMe3.00403BAE
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         ; 不等则完蛋
2008-8-21 18:39
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
改JNE 或JNZ都可以的噢``````
2008-8-22 20:41
0
游客
登录 | 注册 方可回帖
返回
//