📄 1094.html
字号:
(gdb) break *0x804ea96 <br>
Breakpoint 2 at 0x804ea96 <br>
(gdb) c <br>
Continuing. <br>
<br>
Breakpoint 2, 0x804ea96 in _start () <br>
(gdb) info reg eax <br>
eax 0x8083dd0 134757840 <br>
(gdb) x/s 0x8083dd0 <br>
0x8083dd0: "I007" <br>
<br>
看来 "I007" 放在 0x8083dd0, 这个地址还存放到了 0x806e584 <br>
<br>
(gdb) ni <br>
.... <br>
<br>
到第三次调用fl_get_input完回到0x804eabb时,我们知道了输入的信息存在在哪 <br>
<br>
名称 值 地址 <br>
Name "I007" 0x8083dd0 <br>
Order number "B123456789" 0x809e850 <br>
Key "87654321" 0x809e880 <br>
<br>
以下的一些反汇编代码中会有一些注释, 主要说明是执行到这样地方时一些情况, <br>
也不一步步的ni了.. <br>
(gdb) disass 0x804eabb 0x804ffff <br>
Dump of assembler code from 0x804eabb to 0x804ffff: <br>
0x804eabb <_start+17575>: movl %eax,%ebx (eax: 0x809e880->""87654321") <br>
<br>
0x804eabd <_start+17577>: movl %ebp,%edx (ebp: 0x809e850->"B123456789" <br>
) <br>
0x804eabf <_start+17579>: movl %ebp,%eax <br>
0x804eac1 <_start+17581>: addl $0x18,%esp <br>
0x804eac4 <_start+17584>: andl $0x3,%edx <br>
0x804eac7 <_start+17587>: je 0x804eadf <_start+17611> -- <br>
0x804eac9 <_start+17589>: jp 0x804eada <_start+17606> | <br>
0x804eacb <_start+17591>: cmpl $0x2,%edx | <br>
0x804eace <_start+17594>: je 0x804ead5 <_start+17601> | <br>
0x804ead0 <_start+17596>: cmpb %dh,(%eax) | <br>
0x804ead2 <_start+17598>: je 0x804eb05 <_start+17649> | <br>
0x804ead4 <_start+17600>: incl %eax | <br>
0x804ead5 <_start+17601>: cmpb %dh,(%eax) | <br>
0x804ead7 <_start+17603>: je 0x804eb05 <_start+17649> | <br>
0x804ead9 <_start+17605>: incl %eax | <br>
0x804eada <_start+17606>: cmpb %dh,(%eax) | <br>
0x804eadc <_start+17608>: je 0x804eb05 <_start+17649> | <br>
0x804eade <_start+17610>: incl %eax | <br>
| <br>
以下检查Order number长度是否为10: | <br>
0x804eadf <_start+17611>: movl (%eax),%edx <- <br>
0x804eae1 <_start+17613>: testb %dh,%dl <br>
0x804eae3 <_start+17615>: jne 0x804eaed <_start+17625> <br>
0x804eae5 <_start+17617>: testb %dl,%dl <br>
0x804eae7 <_start+17619>: je 0x804eb05 <_start+17649> <br>
0x804eae9 <_start+17621>: testb %dh,%dh <br>
0x804eaeb <_start+17623>: je 0x804eb04 <_start+17648> <br>
0x804eaed <_start+17625>: testl $0xff0000,%edx <br>
0x804eaf3 <_start+17631>: je 0x804eb03 <_start+17647> <br>
0x804eaf5 <_start+17633>: addl $0x4,%eax <br>
0x804eaf8 <_start+17636>: testl $0xff000000,%edx <br>
0x804eafe <_start+17642>: jne 0x804eadf <_start+17611> <br>
0x804eb00 <_start+17644>: subl $0x3,%eax <br>
0x804eb03 <_start+17647>: incl %eax <br>
0x804eb04 <_start+17648>: incl %eax <br>
0x804eb05 <_start+17649>: subl %ebp,%eax <br>
0x804eb07 <_start+17651>: cmpl $0xa,%eax <br>
0x804eb0a <_start+17654>: jne 0x804ebe6 <_start+17874> <br>
<br>
以下检查Key的长度是否为8: <br>
0x804eb10 <_start+17660>: movl %ebx,%edx <br>
0x804eb12 <_start+17662>: movl %ebx,%eax <br>
0x804eb14 <_start+17664>: andl $0x3,%edx <br>
0x804eb17 <_start+17667>: je 0x804eb2f <_start+17691> - <br>
0x804eb19 <_start+17669>: jp 0x804eb2a <_start+17686> | <br>
0x804eb1b <_start+17671>: cmpl $0x2,%edx | <br>
0x804eb1e <_start+17674>: je 0x804eb25 <_start+17681> | <br>
0x804eb20 <_start+17676>: cmpb %dh,(%eax) | <br>
0x804eb22 <_start+17678>: je 0x804eb55 <_start+17729> | <br>
0x804eb24 <_start+17680>: incl %eax | <br>
0x804eb25 <_start+17681>: cmpb %dh,(%eax) | <br>
0x804eb27 <_start+17683>: je 0x804eb55 <_start+17729> | <br>
0x804eb29 <_start+17685>: incl %eax | <br>
0x804eb2a <_start+17686>: cmpb %dh,(%eax) | <br>
0x804eb2c <_start+17688>: je 0x804eb55 <_start+17729> | <br>
0x804eb2e <_start+17690>: incl %eax | <br>
0x804eb2f <_start+17691>: movl (%eax),%edx <- <br>
0x804eb31 <_start+17693>: testb %dh,%dl <br>
0x804eb33 <_start+17695>: jne 0x804eb3d <_start+17705> <br>
0x804eb35 <_start+17697>: testb %dl,%dl <br>
0x804eb37 <_start+17699>: je 0x804eb55 <_start+17729> <br>
0x804eb39 <_start+17701>: testb %dh,%dh <br>
0x804eb3b <_start+17703>: je 0x804eb54 <_start+17728> <br>
0x804eb3d <_start+17705>: testl $0xff0000,%edx <br>
0x804eb43 <_start+17711>: je 0x804eb53 <_start+17727> <br>
0x804eb45 <_start+17713>: addl $0x4,%eax <br>
0x804eb48 <_start+17716>: testl $0xff000000,%edx <br>
0x804eb4e <_start+17722>: jne 0x804eb2f <_start+17691> <br>
0x804eb50 <_start+17724>: subl $0x3,%eax <br>
0x804eb53 <_start+17727>: incl %eax <br>
0x804eb53 <_start+17727>: incl %eax <br>
0x804eb54 <_start+17728>: incl %eax <br>
0x804eb55 <_start+17729>: subl %ebx,%eax <br>
0x804eb57 <_start+17731>: cmpl $0x8,%eax <br>
0x804eb5a <_start+17734>: jne 0x804ebe6 <_start+17874> <br>
<br>
检查Order nuber是否为"I000000000": <br>
0x804eb60 <_start+17740>: movl %ebp,%esi (ebp:0x809e850->"B123456789 <br>
") <br>
0x804eb62 <_start+17742>: movl $0x805b9a6,%edi (0x805b9a6->"I000000000 <br>
")0x804eb67 <_start+17747>: movl $0xb,%ecx <br>
0x804eb6c <_start+17752>: cld <br>
0x804eb6d <_start+17753>: xorl %eax,%eax <br>
0x804eb6f <_start+17755>: repz cmpsb %ds:(%esi),%es:(%edi) <br>
0x804eb71 <_start+17757>: je 0x804eb77 <_start+17763> <br>
<br>
<br>
0x804eb73 <_start+17759>: sbbl %eax,%eax <br>
0x804eb75 <_start+17761>: orb $0x1,%al <br>
0x804eb77 <_start+17763>: testl %eax,%eax <br>
0x804eb79 <_start+17765>: jne 0x804ebd1 <_start+17853> - <br>
... | <br>
... | <br>
0x804ebd1 <_start+17853>: pushl %eax (eax:0xffffffff) <- <br>
0x804ebd2 <_start+17854>: pushl $0x806e9ac (0x806e9ac:0x00000000) <br>
0x804ebd7 <_start+17859>: pushl %ebx (ebx:0x809e880->"87654321") <br>
0x804ebd8 <_start+17860>: pushl %ebp (ebp:0x809e850->"B123456789") <br>
0x804ebd9 <_start+17861>: call 0x8055978 <whereError+11004> <br>
^____这里很可疑 <br>
<br>
0x804ebde <_start+17866>: movl %eax,0x806e574 <br>
0x804ebe3 <_start+17871>: addl $0x10,%esp <br>
0x804ebe6 <_start+17874>: movl 0x806e574,%edx <br>
0x804ebec <_start+17880>: testl %edx,%edx <br>
0x804ebee <_start+17882>: je 0x804ec62 <_start+17998> <br>
... <br>
0x804ec62 <_start+17998>: movl 0x806e9d4,%eax <br>
0x804ec67 <_start+18003>: pushl %eax <br>
0x804ec68 <_start+18004>: movl (%eax),%edx <br>
0x804ec6a <_start+18006>: pushl %edx <br>
0x804ec6b <_start+18007>: call 0x804a474 <fl_hide_form> <br>
0x804ec70 <_start+18012>: pushl $0x1 <br>
0x804ec72 <_start+18014>: pushl $0x8059017 <br>
0x804ec77 <_start+18019>: pushl $0x805ba6c (0x805ba6c->"Check <br>
registration information and try again") <br>
0x804ec7c <_start+18024>: pushl $0x805ba99 (0x805ba99->"Incorrect <br>
registration information!") <br>
0x804ec81 <_start+18029>: call 0x804a790 <_start+380> (警告框出现) <br>
....... <br>
<br>
到注册信息不对的警告框出现,只有一个函数调用比较可疑: <br>
0x804ebd9 call 0x8055978 <whereError+11004> <br>
而且调用结束后还有一个比较跳转的动作, 那么我们就跟踪进去看看 <br>
(gdb) break *0x8055978 <br>
Breakpoint 3 at 0x8055978 <br>
(gdb) c <br>
Continuing. <br>
<br>
Breakpoint 3, 0x8055978 in whereError () <br>
(gdb) disass 0x8055978 0x805ffff <br>
Dump of assembler code from 0x8055978 to 0x805ffff: <br>
0x8055978 <whereError+11004>: subl $0x8,%esp <br>
0x805597b <whereError+11007>: pushl %ebp <br>
0x805597c <whereError+11008>: pushl %edi <br>
0x805597d <whereError+11009>: pushl %esi <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -