{"id":2261,"date":"2024-04-04T03:17:51","date_gmt":"2024-04-03T18:17:51","guid":{"rendered":"https:\/\/h4ck.kr\/?p=2261"},"modified":"2024-05-20T13:20:42","modified_gmt":"2024-05-20T04:20:42","slug":"multiplicative","status":"publish","type":"post","link":"https:\/\/h4ck.kr\/?p=2261","title":{"rendered":"Multiplicative"},"content":{"rendered":"\n<p>JavaCrackMe.jar\uc774\ub77c\ub294 .jar \ud655\uc7a5\uc790\ub97c \uac00\uc9c4 \uc790\ubc14 \ud328\ud0a4\uc9c0 \ud30c\uc77c\uc744 \ub0b4\ub824\ubc1b\uac8c \ub41c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Decompiled-src<\/h2>\n\n\n\n<p>jadx-gui\ub85c \ub514\ucef4\ud30c\uc77c\ud574\uc11c \uc18c\uc2a4\ucf54\ub4dc\ub97c \ud655\uc778\ud574\ubd24\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package defpackage;\n\n\/* renamed from: JavaCrackMe  reason: default package *\/\n\/* loaded from: JavaCrackMe.jar:JavaCrackMe.class *\/\npublic class JavaCrackMe {\n    public static final synchronized \/* bridge *\/ \/* synthetic *\/ void main(String... strArr) {\n        try {\n            System.out.println(\"Reversing.Kr CrackMe!!\");\n            System.out.println(\"-----------------------------\");\n            System.out.println(\"The idea came out of the warsaw's crackme\");\n            System.out.println(\"-----------------------------\\n\");\n            if (Long.decode(strArr[0]).longValue() * 26729 == -1536092243306511225L) {\n                System.out.println(\"Correct!\");\n            } else {\n                System.out.println(\"Wrong\");\n            }\n        } catch (Exception e) {\n            System.out.println(\"Please enter a 64bit signed int\");\n        }\n    }\n}<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p>long \ud0c0\uc785\uc778 \uac12\uc744 \uc785\ub825\ubc1b\uc544 26729\ub97c \uacf1\ud588\uc744\ub54c, -1536092243306511225\ub77c\ub294 \uac12\uc774 \ub098\uc640\uc57c\ub41c\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">>>> -1536092243306511225 \/ 26729\n-57469125044203.34<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p>\ub098\ub204\uc5b4 \ub5a8\uc5b4\uc9c0\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0,<br>integer overflow\ud574\uc11c \uc800 \uac12\uc73c\ub85c \ub9de\ucd94\uc5b4\uc57c \ub41c\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from z3 import *\nimport numpy as np\n\ndef twos_complement(n, bits=64):\n    return n - 2 ** 64 \n\n\ncode1 = BitVec('code1', 64)\n\nequations = [\n    (code1 * 26729) &amp; 0x7fffffffffffffff == (-1536092243306511225 &amp; 0x7fffffffffffffff)\n]\n\nsolver = Solver()\n\nfor equation in equations:\n    solver.add(equation)\n\nsolutions = []\nwhile solver.check() == sat:\n    model = solver.model()\n    solution = {\n        'code1': model[code1].as_long()\n    }\n    solutions.append(solution)\n    solver.add(code1 != model[code1])\n\nfor i, solution in enumerate(solutions):\n    print(f\"Solution {i + 1}:\")\n    for var_name, value in solution.items():\n        print(f\"{var_name}: {(value)}\")\n        print(twos_complement(value))\n    print()<\/pre>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">PS C:\\Users\\Seo Hyun-gyu\\Downloads\\JavaCrackMe> python3 solve.py\nSolution 1:\ncode1: 245287194656008047\n-18201456879053543569\n\nSolution 2:\ncode1: 9468659231510783855\n-8978084842198767761<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p>\uadf8\ub7fc 2\uac1c\uc758 \uacb0\uacfc\uac00 \ub098\uc624\ub294\ub370, \uc774\uc911 9468659231510783855 \uac12\uc758 \ubcf4\uc218\uc778 -8978084842198767761 \uac12\uc774 \uc815\ub2f5\uc774\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JavaCrackMe.jar\uc774\ub77c\ub294 .jar \ud655\uc7a5\uc790\ub97c \uac00\uc9c4 \uc790\ubc14 \ud328\ud0a4\uc9c0 \ud30c\uc77c\uc744 \ub0b4\ub824\ubc1b\uac8c \ub41c\ub2e4. Decompiled-src jadx-gui\ub85c \ub514\ucef4\ud30c\uc77c\ud574\uc11c \uc18c\uc2a4\ucf54\ub4dc\ub97c \ud655\uc778\ud574\ubd24\ub2e4. long \ud0c0\uc785\uc778 \uac12\uc744 \uc785\ub825\ubc1b\uc544 26729\ub97c \uacf1\ud588\uc744\ub54c, -1536092243306511225\ub77c\ub294 \uac12\uc774 \ub098\uc640\uc57c\ub41c\ub2e4. \ub098\ub204\uc5b4 \ub5a8\uc5b4\uc9c0\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0,integer overflow\ud574\uc11c \uc800 \uac12\uc73c\ub85c \ub9de\ucd94\uc5b4\uc57c \ub41c\ub2e4. \uadf8\ub7fc 2\uac1c\uc758 \uacb0\uacfc\uac00 \ub098\uc624\ub294\ub370, \uc774\uc911 9468659231510783855 \uac12\uc758 \ubcf4\uc218\uc778 -8978084842198767761 \uac12\uc774 \uc815\ub2f5\uc774\ub2e4.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[16],"tags":[24],"class_list":["post-2261","post","type-post","status-publish","format-standard","hentry","category-reversing-kr","tag-reversing"],"_links":{"self":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts\/2261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2261"}],"version-history":[{"count":1,"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts\/2261\/revisions"}],"predecessor-version":[{"id":2262,"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts\/2261\/revisions\/2262"}],"wp:attachment":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}