From 680c313a1794948447dfd88353defbb72df418dd Mon Sep 17 00:00:00 2001 From: bemandrei Date: Thu, 28 Mar 2024 09:03:31 +0200 Subject: [PATCH 1/3] I have added goto instead of break and continue, and also defined some goto points, a modification was needed to the original source, because there was some compilation errors --- .../2-warm-up-gotos/a-bogosort/bogosort.c | 4 ++-- .../2-warm-up-gotos/a-bogosort/rez1 | Bin 0 -> 16168 bytes .../b-ignore_the_comments/ignore_the_comments | Bin 0 -> 16184 bytes .../b-ignore_the_comments/ignore_the_comments.c | 6 +++--- .../2-warm-up-gotos/b-ignore_the_comments/rez1 | Bin 0 -> 16056 bytes 5 files changed, 5 insertions(+), 5 deletions(-) create mode 100755 laborator/content/toolchain-decompilare/2-warm-up-gotos/a-bogosort/rez1 create mode 100755 laborator/content/toolchain-decompilare/2-warm-up-gotos/b-ignore_the_comments/ignore_the_comments create mode 100755 laborator/content/toolchain-decompilare/2-warm-up-gotos/b-ignore_the_comments/rez1 diff --git a/laborator/content/toolchain-decompilare/2-warm-up-gotos/a-bogosort/bogosort.c b/laborator/content/toolchain-decompilare/2-warm-up-gotos/a-bogosort/bogosort.c index 8cd52ce0..93b44476 100644 --- a/laborator/content/toolchain-decompilare/2-warm-up-gotos/a-bogosort/bogosort.c +++ b/laborator/content/toolchain-decompilare/2-warm-up-gotos/a-bogosort/bogosort.c @@ -39,9 +39,9 @@ int main(void) if (is_sorted(numbers, 6)) /* TODO use goto instead of break */ - break; + goto end; } - + end: for (i = 0; i < 6; i++) printf("%d ", numbers[i]); printf("\n"); diff --git a/laborator/content/toolchain-decompilare/2-warm-up-gotos/a-bogosort/rez1 b/laborator/content/toolchain-decompilare/2-warm-up-gotos/a-bogosort/rez1 new file mode 100755 index 0000000000000000000000000000000000000000..140fdc4b6e66011b0301f65d88db8f26cd54511e GIT binary patch literal 16168 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 literal 0 HcmV?d00001 From 3a04698aa756cd2223e899fad97e110dbd0bf616 Mon Sep 17 00:00:00 2001 From: bemandrei Date: Thu, 28 Mar 2024 09:26:44 +0200 Subject: [PATCH 2/3] I have implemented a max function and a binary search only with goto! --- .../3-goto-algs/a-vector_max/rez | Bin 0 -> 16016 bytes .../3-goto-algs/a-vector_max/vector_max.c | 9 ++++ .../b-binary_search/binary_search.c | 45 +++++++++++++----- .../3-goto-algs/b-binary_search/rez | Bin 0 -> 16064 bytes 4 files changed, 42 insertions(+), 12 deletions(-) create mode 100755 laborator/content/toolchain-decompilare/3-goto-algs/a-vector_max/rez create mode 100755 laborator/content/toolchain-decompilare/3-goto-algs/b-binary_search/rez diff --git a/laborator/content/toolchain-decompilare/3-goto-algs/a-vector_max/rez b/laborator/content/toolchain-decompilare/3-goto-algs/a-vector_max/rez new file mode 100755 index 0000000000000000000000000000000000000000..9935f66a2f25853eb8d3d42c152f2bd5bea222b9 GIT binary patch literal 16016 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 Vy04Pez|-JL`tNP_yjHw}{=c81Ii~;s literal 0 HcmV?d00001 diff --git a/laborator/content/toolchain-decompilare/3-goto-algs/a-vector_max/vector_max.c b/laborator/content/toolchain-decompilare/3-goto-algs/a-vector_max/vector_max.c index 3d28d646..ce70e82c 100644 --- a/laborator/content/toolchain-decompilare/3-goto-algs/a-vector_max/vector_max.c +++ b/laborator/content/toolchain-decompilare/3-goto-algs/a-vector_max/vector_max.c @@ -11,7 +11,16 @@ int main(void) /* TODO: Implement finding the maximum value in the vector */ max = v[0]; i = 1; + loop: + if (i >= 7) + goto end; + if (v[i] > max) + max = v[i]; + i++; + goto loop; + end: + printf("%d\n", max); (void) i; (void) max; } diff --git a/laborator/content/toolchain-decompilare/3-goto-algs/b-binary_search/binary_search.c b/laborator/content/toolchain-decompilare/3-goto-algs/b-binary_search/binary_search.c index eb817220..c3d1ed39 100644 --- a/laborator/content/toolchain-decompilare/3-goto-algs/b-binary_search/binary_search.c +++ b/laborator/content/toolchain-decompilare/3-goto-algs/b-binary_search/binary_search.c @@ -1,16 +1,37 @@ -// SPDX-License-Identifier: BSD-3-Clause - #include -int main(void) -{ - int v[] = {1, 2, 15, 51, 53, 66, 202, 7000}; - int dest = v[2]; /* 15 */ - int start = 0; - int end = sizeof(v) / sizeof(int) - 1; +int main(void) { + int v[] = {1, 2, 15, 51, 53, 66, 202, 7000}; + int dest = v[2]; /* 15 */ + int start = 0; + int end = sizeof(v) / sizeof(int) - 1; + int found = 0; + int mid; + +binary_search: + if (start > end) + goto not_found; + mid = (start + end) / 2; + if (v[mid] == dest) { + found = 1; + goto found; + } else if (v[mid] < dest) { + start = mid + 1; + goto binary_search; + } else { + end = mid - 1; + goto binary_search; + } + +not_found: + printf("not found.\n"); + goto end_prog; - /* TODO: Implement binary search */ - (void) dest; - (void) start; - (void) end; +found: + printf("index %d.\n", mid); + goto end_prog; + +end_prog: + return 0; } + diff --git a/laborator/content/toolchain-decompilare/3-goto-algs/b-binary_search/rez b/laborator/content/toolchain-decompilare/3-goto-algs/b-binary_search/rez new file mode 100755 index 0000000000000000000000000000000000000000..3a7806937883aaa7b2885e0429007ecff0d25795 GIT binary patch literal 16064 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 literal 0 HcmV?d00001 From 5c0e8bf8d74aa0477c16ae1aa33c85806570968a Mon Sep 17 00:00:00 2001 From: bemandrei Date: Thu, 28 Mar 2024 09:44:51 +0200 Subject: [PATCH 3/3] After using Ghidra i found that i need a password with E on the 3-rd character --- .../4-tutorial-ghidra/crackme | Bin 9820 -> 16408 bytes .../4-tutorial-ghidra/readme.txt | 1 + .../4-tutorial-ghidra/run | Bin 0 -> 16080 bytes 3 files changed, 1 insertion(+) mode change 100644 => 100755 laborator/content/toolchain-decompilare/4-tutorial-ghidra/crackme create mode 100644 laborator/content/toolchain-decompilare/4-tutorial-ghidra/readme.txt create mode 100755 laborator/content/toolchain-decompilare/4-tutorial-ghidra/run diff --git a/laborator/content/toolchain-decompilare/4-tutorial-ghidra/crackme b/laborator/content/toolchain-decompilare/4-tutorial-ghidra/crackme old mode 100644 new mode 100755 index 202bfc810a21649d1a0e21250b79ca6f7ad02290..8d25771e274e626bfccc3d02a3828b8673f230d3 GIT binary patch literal 16408 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 IA!Hu;KO>;irvLx| diff --git a/laborator/content/toolchain-decompilare/4-tutorial-ghidra/readme.txt b/laborator/content/toolchain-decompilare/4-tutorial-ghidra/readme.txt new file mode 100644 index 00000000..b7d91d00 --- /dev/null +++ b/laborator/content/toolchain-decompilare/4-tutorial-ghidra/readme.txt @@ -0,0 +1 @@ +./crackme AAAEAAAA diff --git a/laborator/content/toolchain-decompilare/4-tutorial-ghidra/run b/laborator/content/toolchain-decompilare/4-tutorial-ghidra/run new file mode 100755 index 0000000000000000000000000000000000000000..db861ee37a3444dcec14dd4cadcb751e53fec83b GIT binary patch literal 16080 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 R)8$J1w`Jhh2M7UG{RdR%U`_x4 literal 0 HcmV?d00001