Bonjour,
(Je sais pas si mon message et sur le bon forum, si c'est le cas dites le moi et je bougerais la discussion.)
Comme vous pouvez le voir dans le titre je dois faire un devoir qui consiste a plusieurs challenges. Pour ces challenges on nous a conseiller d’étudier des méthodes de reverse engineering.
On m'a conseiller d'utiliser gdb pour en resoudre un ou plusieurs challenge mais lorsque je regarde je vois les différentes variable (ici la fonction main obtenue avec la commande gdb :disas main):et ici la fonction check pass
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 0x0000000000001203 <+0>: push %rbp 0x0000000000001204 <+1>: mov %rsp,%rbp 0x0000000000001207 <+4>: sub $0x70,%rsp 0x000000000000120b <+8>: lea -0x70(%rbp),%rdx 0x000000000000120f <+12>: mov $0x0,%eax 0x0000000000001214 <+17>: mov $0xc,%ecx 0x0000000000001219 <+22>: mov %rdx,%rdi 0x000000000000121c <+25>: rep stos %rax,%es:(%rdi) 0x000000000000121f <+28>: mov %rdi,%rdx 0x0000000000001222 <+31>: mov %eax,(%rdx) 0x0000000000001224 <+33>: add $0x4,%rdx 0x0000000000001228 <+37>: lea 0xdfc(%rip),%rdi # 0x202b 0x000000000000122f <+44>: mov $0x0,%eax 0x0000000000001234 <+49>: callq 0x1050 <printf@plt> 0x0000000000001239 <+54>: mov 0x2e10(%rip),%rax # 0x4050 <stdout@@GLIBC_2.2.5> 0x0000000000001240 <+61>: mov %rax,%rdi 0x0000000000001243 <+64>: callq 0x1070 <fflush@plt> 0x0000000000001248 <+69>: lea -0x70(%rbp),%rax 0x000000000000124c <+73>: mov $0x63,%edx 0x0000000000001251 <+78>: mov %rax,%rsi 0x0000000000001254 <+81>: mov $0x0,%edi 0x0000000000001259 <+86>: callq 0x1060 <read@plt> 0x000000000000125e <+91>: lea -0x70(%rbp),%rax 0x0000000000001262 <+95>: mov %rax,%rdi 0x0000000000001265 <+98>: callq 0x1175 <check_pass> 0x000000000000126a <+103>: test %eax,%eax 0x000000000000126c <+105>: je 0x127a <main+119> 0x000000000000126e <+107>: lea 0xdc7(%rip),%rdi # 0x203c 0x0000000000001275 <+114>: callq 0x1030 <puts@plt> 0x000000000000127a <+119>: mov $0x0,%eax 0x000000000000127f <+124>: leaveq 0x0000000000001280 <+125>: retqMais lorsque je place des breakpoints et que je regarde les valeurs des différentes variable soit ça me met : <error: Cannot access memory at address 0xffffffffffffdc80>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 Dump of assembler code for function check_pass: 0x0000000000001175 <+0>: push %rbp 0x0000000000001176 <+1>: mov %rsp,%rbp 0x0000000000001179 <+4>: sub $0x10,%rsp 0x000000000000117d <+8>: mov %rdi,-0x8(%rbp) 0x0000000000001181 <+12>: mov -0x8(%rbp),%rax 0x0000000000001185 <+16>: mov %rax,%rdi 0x0000000000001188 <+19>: callq 0x1040 <strlen@plt> 0x000000000000118d <+24>: cmp $0x6,%rax 0x0000000000001191 <+28>: je 0x11fc <check_pass+135> 0x0000000000001193 <+30>: mov -0x8(%rbp),%rax 0x0000000000001197 <+34>: add $0x1,%rax 0x000000000000119b <+38>: movzbl (%rax),%eax 0x000000000000119e <+41>: cmp $0x70,%al 0x00000000000011a0 <+43>: jne 0x11fc <check_pass+135> 0x00000000000011a2 <+45>: mov -0x8(%rbp),%rax 0x00000000000011a6 <+49>: add $0x3,%rax 0x00000000000011aa <+53>: movzbl (%rax),%eax 0x00000000000011ad <+56>: cmp $0x6b,%al 0x00000000000011af <+58>: jne 0x11fc <check_pass+135> 0x00000000000011b1 <+60>: mov -0x8(%rbp),%rax 0x00000000000011b5 <+64>: movzbl (%rax),%eax 0x00000000000011b8 <+67>: cmp $0x45,%al 0x00000000000011ba <+69>: jne 0x11fc <check_pass+135> 0x00000000000011bc <+71>: mov -0x8(%rbp),%rax 0x00000000000011c0 <+75>: add $0x4,%rax 0x00000000000011c4 <+79>: movzbl (%rax),%eax 0x00000000000011c7 <+82>: cmp $0x33,%al 0x00000000000011c9 <+84>: jne 0x11fc <check_pass+135> 0x00000000000011cb <+86>: mov -0x8(%rbp),%rax 0x00000000000011cf <+90>: add $0x5,%rax 0x00000000000011d3 <+94>: movzbl (%rax),%eax 0x00000000000011d6 <+97>: cmp $0x4b,%al 0x00000000000011d8 <+99>: jne 0x11fc <check_pass+135> 0x00000000000011da <+101>: mov -0x8(%rbp),%rax 0x00000000000011de <+105>: add $0x2,%rax 0x00000000000011e2 <+109>: movzbl (%rax),%eax 0x00000000000011e5 <+112>: cmp $0x31,%al 0x00000000000011e7 <+114>: jne 0x11fc <check_pass+135> 0x00000000000011e9 <+116>: lea 0xe18(%rip),%rdi # 0x2008 0x00000000000011f0 <+123>: callq 0x1030 <puts@plt> 0x00000000000011f5 <+128>: mov $0x0,%eax 0x00000000000011fa <+133>: jmp 0x1201 <check_pass+140> 0x00000000000011fc <+135>: mov $0x1,%eax 0x0000000000001201 <+140>: leaveq 0x0000000000001202 <+141>: retq End of assembler dump.
ou soit ça me met le mot de passe que je met rentre lorsque le programme me le demande.
Je pense avoir loupé quelque chose ou mal compris ce qu'on m'a dit c'est pour cela que je voulais savoir si vous aviez des conseils et/ou des pistes à me donné.
Partager