我在Windows
,我正在尝试使用Retargetable Decompiler
提供的cURL API 。 由于cURL是一个Linux实用程序,我从这里下载了一个Windows
版本。 假设我想执行下面的反编译: 这是使用浏览器工作,并产生一个结果。 现在当试图从命令行使用cURL
执行相同的操作时,出现错误。
输出:
>curl --form "mode=raw" --form "input=code.bin" --form "architecture=powerpc" --form "endian=big" --form "raw_entry_point=0x0" --form "raw_section_vma=0x0" -u my-secret-api-key: "https://retdec.com/service/api/decompiler/decompilations" { "id": "yVWe4pe5", "links": { "decompilation": "https://retdec.com/service/api/decompiler/decompilations/yVWe4pe5", "status": "https://retdec.com/service/api/decompiler/decompilations/yVWe4pe5/status", "outputs": "https://retdec.com/service/api/decompiler/decompilations/yVWe4pe5/outputs" }} { "code": 400, "description": "The input file is missing.", "message": "Missing Input File" } curl: (3) [globbing] unmatched brace in column 1 curl: (6) Could not resolve host: id curl: (6) Could not resolve host: yVWe4pe5, curl: (6) Could not resolve host: links curl: (3) [globbing] unmatched brace in column 1 curl: (6) Could not resolve host: decompilation { "code": 405, "description": "The method is not allowed for the requested URL.", "message": "Method Not Allowed" } curl: (6) Could not resolve host: status { "code": 404, "description": "The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.", "message": "Not Found" } curl: (6) Could not resolve host: outputs { "code": 405, "description": "The method is not allowed for the requested URL.", "message": "Method Not Allowed" } curl: (3) [globbing] unmatched close brace/bracket in column 1
还有,code.bin与命令行(脚本)位于同一个目录中。 我怎样才能使它工作? 实际上,我更喜欢 Java
一个解决scheme,而不是cURL
但是首先在cURL
它可能会更容易理解,因为没有提供Java
示例或文档。
没关系,这很简单。
启动过程:
>curl --form "mode=raw" --form "input=@code.bin;filename=code.bin" --form "architecture=powerpc" --form "endian=big" --form "raw_entry_point=0x0" --form "raw_section_vma=0x0" --form "target_language=c" -u my-secret-api-key: "https://retdec.com/service/api/decompiler/decompilations"
收到(示例)响应:
{ "id": "mKgBoLa3jo", "links": { "decompilation": "https://retdec.com/service/api/decompiler/decompilations/mKgBoLa3jo", "outputs": "https://retdec.com/service/api/decompiler/decompilations/mKgBoLa3jo/outputs", "status": "https://retdec.com/service/api/decompiler/decompilations/mKgBoLa3jo/status" } }
获取反编译的(示例)代码:
>curl -u my-secret-api-key: https://retdec.com/service/api/decompiler/decompilations/r8OW7AaAOb/outputs/hll // // This file was generated by the Retargetable Decompiler // Website: https://retdec.com // Copyright (c) 2017 Retargetable Decompiler <info@retdec.com> // #include <stdint.h> // ------------------- Function Prototypes -------------------- int32_t entry_point(int32_t a1); int32_t unknown_20ca300(int32_t a1, int32_t a2); int32_t unknown_212363c(int32_t a1); int32_t unknown_27a2ad4(int32_t a1, int32_t a2); // ------------------------ Functions ------------------------- // Address range: 0x0 - 0x1ef int32_t entry_point(int32_t a1) { int32_t result = a1; // r26 if (unknown_27a2ad4(a1, 0x27a2ad4) != 0) { // 0x94 result = -1; unknown_212363c(0); unknown_20ca300(0, 0x830000); // branch -> 0x54 } // 0x54 return result; } // --------------------- Meta-Information --------------------- // Detected compiler/packer: gcc (gcc-powerpc-elf) (4.5.1 - 4.5.2) // Detected functions: 1 // Decompiler release: v2.2.1 (2016-09-07) // Decompilation date: 2017-10-06 22:50:25
等等。