Mergen
Deobfuscation via optimization with usage of LLVM IR and parsing assembly.
File Explorer
Download Latest Version (.zip)- docker-image.yml
- rewrite-strict-gate.yml
- windows-build.yml
- FUNDING.yml
- pull_request_template.md
- SPECULATIVE_INLINE_ISSUE.md
- cmkr.cmake
- cmkr.cmake;
- FindIced-Wrapper.cmake
- FindLLVM-Wrapper.cmake
- bitchain_report.md
- branch_report.md
- bytecode_vm_loop_report.md
- calc_cout_report.md
- calc_fib_report.md
- calc_grade_report.md
- calc_jumptable_large_report.md
- calc_jumptable_report.md
- calc_mixed_report.md
- calc_sum_array_report.md
- calc_sum_to_n_report.md
- calc_switch_report.md
- cmov_chain_report.md
- diamond_report.md
- dummy_vm_loop_report.md
- INDEX.md
- indirect_report.md
- instr_add_report.md
- instr_rol_report.md
- instr_sub_report.md
- instr_xor_report.md
- jumptable_basic_report.md
- jumptable_computation_report.md
- jumptable_dense_report.md
- jumptable_rel32_report.md
- jumptable_shared_targets_report.md
- jumptable_shifted_report.md
- loop_simple_report.md
- multi_arg_report.md
- nested_branch_report.md
- stack_report.md
- stack_vm_loop_report.md
- switch_3way_report.md
- switch_sparse_report.md
- vm_2d_loop_report.md
- vm_4state64_loop_report.md
- vm_4state_loop_report.md
- vm_abs64_loop_report.md
- vm_abs_array_loop_report.md
- vm_adler32_64_loop_report.md
- vm_altbytesum64_loop_report.md
- vm_andsum_byte_idx64_loop_report.md
- vm_argmax_loop_report.md
- vm_base7sum64_loop_report.md
- vm_bitfetch_window64_loop_report.md
- vm_bitreverse64_loop_report.md
- vm_bitreverse_loop_report.md
- vm_bittransitions_loop_report.md
- vm_branchy_loop_report.md
- vm_bswap64_loop_report.md
- vm_byte_andfold64_loop_report.md
- vm_byte_buffer_loop_report.md
- vm_byte_loop_report.md
- vm_bytecyc64_loop_report.md
- vm_bytediv5_sum64_loop_report.md
- vm_bytematch64_loop_report.md
- vm_bytemax64_loop_report.md
- vm_bytemod3_sum64_loop_report.md
- vm_byteparity64_loop_report.md
- vm_byteprod64_loop_report.md
- vm_byterange64_loop_report.md
- vm_byterev_window64_loop_report.md
- vm_byteshl3_xor64_loop_report.md
- vm_byteshl_data64_loop_report.md
- vm_bytesmul_idx64_loop_report.md
- vm_bytesq_idx_sum64_loop_report.md
- vm_bytesq_sum64_loop_report.md
- vm_ca_loop_report.md
- vm_caesar_loop_report.md
- vm_carrychain_loop_report.md
- vm_choosemax64_loop_report.md
- vm_classify_loop_report.md
- vm_clz64_loop_report.md
- vm_collatz64_loop_report.md
- vm_collatz_loop_report.md
- vm_condsum64_loop_report.md
- vm_countdown_loop_report.md
- vm_crc64_loop_report.md
- vm_cttz64_loop_report.md
- vm_ctz_loop_report.md
- vm_data_ashr64_loop_report.md
- vm_data_lshr64_loop_report.md
- vm_decdigits64_loop_report.md
- vm_decsum64_loop_report.md
- vm_deinterleave64_loop_report.md
- vm_digitprod64_loop_report.md
- vm_digitsum_loop_report.md
- vm_dispatch_table_loop_report.md
- vm_divcount64_loop_report.md
- vm_djb264_loop_report.md
- vm_djb2_loop_report.md
- vm_dual_array_loop_report.md
- vm_dual_counter_loop_report.md
- vm_dual_i64_loop_report.md
- vm_dupcount_loop_report.md
- vm_dword_range64_loop_report.md
- vm_dword_xormul64_loop_report.md
- vm_dyn_ashr64_loop_report.md
- vm_dynashr_accum_byte64_loop_report.md
- vm_dynlshr_accum_byte64_loop_report.md
- vm_dynshl_accum_byte64_loop_report.md
- vm_dynshl_pack64_loop_report.md
- vm_factorial64_loop_report.md
- vm_factorial_loop_report.md
- vm_fibonacci64_loop_report.md
- vm_fibonacci_loop_report.md
- vm_find2max_loop_report.md
- vm_fmix64_loop_report.md
- vm_fmix_chain64_loop_report.md
- vm_fnv1a64_loop_report.md
- vm_four_input_loop_report.md
- vm_gcd64_loop_report.md
- vm_gcd_loop_report.md
- vm_geometric_loop_report.md
- vm_geosum64_loop_report.md
- vm_hamming_loop_report.md
- vm_hexcount_loop_report.md
- vm_hexdigits64_loop_report.md
- vm_horner64_loop_report.md
- vm_horner_signed_loop_report.md
- vm_i64_return_loop_report.md
- vm_imported_abs_loop_report.md
- vm_imported_bsf_loop_report.md
- vm_imported_bsr_loop_report.md
- vm_imported_bswap_loop_report.md
- vm_imported_clz_loop_report.md
- vm_imported_cttz_loop_report.md
- vm_imported_popcnt_loop_report.md
- vm_imported_rotl_loop_report.md
- vm_int64_loop_report.md
- vm_ipow64_loop_report.md
- vm_isqrt64_loop_report.md
- vm_isqrt_loop_report.md
- vm_kernighan_loop_report.md
- vm_lcg_ansi_chain64_loop_report.md
- vm_lcg_loop_report.md
- vm_lfsr64_loop_report.md
- vm_lfsr_loop_report.md
- vm_maxrun64_loop_report.md
- vm_minabs_loop_report.md
- vm_minarray_loop_report.md
- vm_mixed_args_loop_report.md
- vm_mixed_intrinsics_loop_report.md
- vm_mixed_width_array_loop_report.md
- vm_modcounter_loop_report.md
- vm_morton64_loop_report.md
- vm_mul3byte_chain64_loop_report.md
- vm_murmurstep64_loop_report.md
- vm_negstep64_loop_report.md
- vm_nested64_loop_report.md
- vm_nested_abs_loop_report.md
- vm_nested_loop_report.md
- vm_nibrev64_loop_report.md
- vm_nibrev_window64_loop_report.md
- vm_notand_chain64_loop_report.md
- vm_oddcount64_loop_report.md
- vm_op8way64_loop_report.md
- vm_opcode64_loop_report.md
- vm_orsum_byte_idx64_loop_report.md
- vm_orxor_pair64_loop_report.md
- vm_outlined_wrapper_loop_report.md
- vm_pair_xormul_byte64_loop_report.md
- vm_pairmix64_loop_report.md
- vm_palindrome_loop_report.md
- vm_pcg64_loop_report.md
- vm_pcg_loop_report.md
- vm_pdepslow64_loop_report.md
- vm_peasant64_loop_report.md
- vm_pextslow64_loop_report.md
- vm_piecewise_loop_report.md
- vm_polynomial_loop_report.md
- vm_popcount64_loop_report.md
- vm_popcount_loop_report.md
- vm_popsq64_loop_report.md
- vm_power_loop_report.md
- vm_powermod_loop_report.md
- vm_powmod64_loop_report.md
- vm_prefix_sum_loop_report.md
- vm_prefix_xor_loop_report.md
- vm_prefixxor64_loop_report.md
- vm_quad_byte_xor64_loop_report.md
- vm_register_loop_report.md
- vm_revdecimal64_loop_report.md
- vm_reverse_array_loop_report.md
- vm_rotate_loop_report.md
- vm_rotchoice64_loop_report.md
- vm_rotl64_loop_report.md
- vm_runlength_loop_report.md
- vm_runlmax_loop_report.md
- vm_satadd64_loop_report.md
- vm_saturating_loop_report.md
- vm_sbyte_array_loop_report.md
- vm_sdiv64_loop_report.md
- vm_search_loop_report.md
- vm_shift64_loop_report.md
- vm_shiftin_top64_loop_report.md
- vm_shiftmul_loop_report.md
- vm_short_array_loop_report.md
- vm_short_loop_report.md
- vm_signed_byterange64_loop_report.md
- vm_signed_dword_range64_loop_report.md
- vm_signed_dword_sum64_loop_report.md
- vm_signed_word_range64_loop_report.md
- vm_signed_word_sum64_loop_report.md
- vm_signedaccum64_loop_report.md
- vm_signedbytesum64_loop_report.md
- vm_signedxor_byte_idx64_loop_report.md
- vm_skiploop_loop_report.md
- vm_smax64_loop_report.md
- vm_splitmix64_loop_report.md
- vm_squareadd64_loop_report.md
- vm_stride_loop_report.md
- vm_subbyte_idx64_loop_report.md
- vm_subxor_chain64_loop_report.md
- vm_three_input_loop_report.md
- vm_threereg64_loop_report.md
- vm_threestate_xormul64_loop_report.md
- vm_trailingones64_loop_report.md
- vm_trailzeros_factorial64_loop_report.md
- vm_treepath64_loop_report.md
- vm_tribonacci64_loop_report.md
- vm_two_input_loop_report.md
- vm_u64_array_loop_report.md
- vm_uintadd_byte_idx64_loop_report.md
- vm_umin64_loop_report.md
- vm_ushort_array_loop_report.md
- vm_vartrip_array_loop_report.md
- vm_window_loop_report.md
- vm_word_horner13_64_loop_report.md
- vm_word_orfold64_loop_report.md
- vm_word_range64_loop_report.md
- vm_word_xormul64_loop_report.md
- vm_wrapper_chain_loop_report.md
- vm_xor_accumulator_loop_report.md
- vm_xor_shifted_self_byte64_loop_report.md
- vm_xorbytes64_loop_report.md
- vm_xordecrypt_loop_report.md
- vm_xormul_byte_idx64_loop_report.md
- vm_xormuladd_chain64_loop_report.md
- vm_xormulself_byte64_loop_report.md
- vm_xorrot64_loop_report.md
- vm_xorshift64_loop_report.md
- vm_xorshrink64_loop_report.md
- vm_xs64star_loop_report.md
- vm_xxhmix64_loop_report.md
- vm_zigzag_loop_report.md
- vm_zigzag_step64_loop_report.md
- BUILDING.md
- LOOP_HANDLING.md
- REVIEWER_RULES.md
- REWRITE_BASELINE.md
- SCOPE.md
- themida_output.ll
- themida_output_lazy_fix.ll
- lib.rs
- .gitignore
- build.rs
- Cargo.lock
- Cargo.toml
- branches_0.png
- branches_1.png
- graph.png
- mergen_dec.png
- mergen_disass.png
- org_decomp.png
- org_disass.png
- run_mergen.PNG
- running_on_themida.png
- themida_disas_b.png
- themida_disas_v.png
- themida_vm_v.png
- themidavm.png
- themidavm_settings.png
- themidavm_vms.png
- vmp_settings1.png
- vmp_settings2.png
- CustomPasses.hpp
- PathSolver.cpp
- PathSolver.h
- PathSolver.ipp
- AbiCallContract.hpp
- CommandLineHelpers.hpp
- FunctionSignatures.hpp
- Includes.h
- InlinePolicy.hpp
- LiftDiagnostics.hpp
- LiftDriver.hpp
- Lifter.cpp
- LifterApplication.hpp
- LifterClass.hpp
- LifterClass_Concolic.hpp
- LifterClass_Symbolic.hpp
- LifterPipeline.hpp
- LifterPipelineStages.hpp
- LifterStages.hpp
- MergenPB.hpp
- OperandUtils.h
- RegisterManager.hpp
- RuntimeImageContext.hpp
- Semantics.h
- Utils.cpp
- Utils.h
- CommonDisassembler.hpp
- CommonMnemonics.h
- CommonRegisters.h
- IcedDisassembler.hpp
- IcedDisassemblerMnemonics.h
- IcedDisassemblerRegisters.h
- ZydisDisassembler.hpp
- ZydisDisassemblerMnemonics.h
- ZydisDisassemblerRegisters.h
- FileReader.hpp
- GEPTracker.h
- GEPTracker.ipp
- MemoryPolicy.hpp
- MemoryPolicySetup.hpp
- OperandUtils.ipp
- PPMacros.hpp
- Semantics.ipp
- Semantics_Arithmetic.ipp
- Semantics_Bitwise.ipp
- Semantics_ControlFlow.ipp
- Semantics_Helpers.ipp
- Semantics_Misc.ipp
- x86_64_opcodes.x
- golden_ir_hashes.json
- oracle_vectors.json
- oracle_vectors_full_handlers.json
- Tester.hpp
- TestInstructions.cpp
- TestInstructions.h
- .clang-format
- bench_both.ps1
- build_iced.cmd
- build_zydis.cmd
- compare_signature_perf.ps1
- configure_iced.cmd
- configure_zydis.cmd
- profile_manifest_samples.ps1
- profile_samples.ps1
- profile_simple_vmp.ps1
- trace_external_calls.py
- format_comment.py
- invariant_guard.py
- review_buckets.py
- risk_map.py
- run_review.py
- shard_pr.py
- verify_plan.py
- build_full_handler_seed.cmd
- build_full_handler_seed.py
- build_samples.cmd
- check_semantic.py
- check_themida_equivalence.py
- collect_instruction_tests.cmd
- collect_instruction_tests.py
- enrich_seed.py
- generate_equivalence_reports.py
- generate_flag_stress_vectors.cmd
- generate_flag_stress_vectors.py
- generate_oracle_vectors.cmd
- generate_oracle_vectors.py
- generate_semantic_reports.py
- instruction_microtests.json
- manifest_validation.ps1
- oracle_seed_full_handlers.json
- oracle_seed_full_handlers_enriched.json
- oracle_seed_vectors.json
- report_coverage.py
- run.cmd
- run.ps1
- run_all_handlers.cmd
- run_flagstress.cmd
- run_microtests.cmd
- sleigh_oracle.py
- themida_samples.json
- verify.ps1
- bitchain.asm
- branch.asm
- bytecode_vm_loop.c
- calc_cout.cpp
- calc_fib.c
- calc_grade.c
- calc_jumptable.c
- calc_jumptable_large.c
- calc_mixed.c
- calc_sum_array.c
- calc_sum_to_n.c
- calc_switch.c
- cmov_chain.asm
- diamond.asm
- dummy_vm_loop.c
- indirect.asm
- instr_add.asm
- instr_rol.asm
- instr_sub.asm
- instr_xor.asm
- jumptable_basic.asm
- jumptable_computation.asm
- jumptable_dense.asm
- jumptable_rel32.asm
- jumptable_shared_targets.asm
- jumptable_shifted.asm
- loop_simple.asm
- multi_arg.asm
- nested_branch.asm
- stack.asm
- stack_vm_loop.c
- switch_3way.asm
- switch_sparse.asm
- vm_2d_loop.c
- vm_4state64_loop.c
- vm_4state_loop.c
- vm_abs64_loop.c
- vm_abs_array_loop.c
- vm_adler32_64_loop.c
- vm_altbytesum64_loop.c
- vm_andsum_byte_idx64_loop.c
- vm_argmax_loop.c
- vm_base7sum64_loop.c
- vm_bitfetch_window64_loop.c
- vm_bitreverse64_loop.c
- vm_bitreverse_loop.c
- vm_bittransitions_loop.c
- vm_branchy_loop.c
- vm_bswap64_loop.c
- vm_bubblesort_loop.c
- vm_byte_andfold64_loop.c
- vm_byte_buffer_loop.c
- vm_byte_loop.c
- vm_bytecyc64_loop.c
- vm_bytediv5_sum64_loop.c
- vm_bytematch64_loop.c
- vm_bytemax64_loop.c
- vm_bytemod3_sum64_loop.c
- vm_byteparity64_loop.c
- vm_byteprod64_loop.c
- vm_byterange64_loop.c
- vm_byterev_window64_loop.c
- vm_byteshl3_xor64_loop.c
- vm_byteshl_data64_loop.c
- vm_bytesmul_idx64_loop.c
- vm_bytesq_idx_sum64_loop.c
- vm_bytesq_sum64_loop.c
- vm_ca_loop.c
- vm_caesar_loop.c
- vm_callret_loop.c
- vm_carrychain_loop.c
- vm_choosemax64_loop.c
- vm_classify_loop.c
- vm_clz64_loop.c
- vm_collatz64_loop.c
- vm_collatz_loop.c
- vm_condsum64_loop.c
- vm_countdown_loop.c
- vm_crc64_loop.c
- vm_cttz64_loop.c
- vm_ctz_loop.c
- vm_data_ashr64_loop.c
- vm_data_lshr64_loop.c
- vm_decdigits64_loop.c
- vm_decsum64_loop.c
- vm_deinterleave64_loop.c
- vm_digitprod64_loop.c
- vm_digitsum_loop.c
- vm_dispatch_table_loop.c
- vm_divcount64_loop.c
- vm_djb264_loop.c
- vm_djb2_loop.c
- vm_dual_array_loop.c
- vm_dual_counter_loop.c
- vm_dual_i64_loop.c
- vm_dupcount_loop.c
- vm_dword_range64_loop.c
- vm_dword_xormul64_loop.c
- vm_dyn_ashr64_loop.c
- vm_dynashr_accum_byte64_loop.c
- vm_dynlshr_accum_byte64_loop.c
- vm_dynshl_accum_byte64_loop.c
- vm_dynshl_pack64_loop.c
- vm_factorial64_loop.c
- vm_factorial_loop.c
- vm_fibonacci64_loop.c
- vm_fibonacci_loop.c
- vm_find2max_loop.c
- vm_fmix64_loop.c
- vm_fmix_chain64_loop.c
- vm_fnv1a64_loop.c
- vm_four_input_loop.c
- vm_gcd64_loop.c
- vm_gcd_loop.c
- vm_geometric_loop.c
- vm_geosum64_loop.c
- vm_hamming_loop.c
- vm_hexcount_loop.c
- vm_hexdigits64_loop.c
- vm_horner64_loop.c
- vm_horner_signed_loop.c
- vm_i64_return_loop.c
- vm_imported_abs_loop.c
- vm_imported_bsf_loop.c
- vm_imported_bsr_loop.c
- vm_imported_bswap_loop.c
- vm_imported_clz_loop.c
- vm_imported_cttz_loop.c
- vm_imported_popcnt_loop.c
- vm_imported_rotl_loop.c
- vm_int64_loop.c
- vm_ipow64_loop.c
- vm_isqrt64_loop.c
- vm_isqrt_loop.c
- vm_kernighan_loop.c
- vm_lcg_ansi_chain64_loop.c
- vm_lcg_loop.c
- vm_lfsr64_loop.c
- vm_lfsr_loop.c
- vm_maxrun64_loop.c
- vm_minabs_loop.c
- vm_minarray_loop.c
- vm_mixed_args_loop.c
- vm_mixed_intrinsics_loop.c
- vm_mixed_width_array_loop.c
- vm_modcounter_loop.c
- vm_morton64_loop.c
- vm_mul3byte_chain64_loop.c
- vm_murmurstep64_loop.c
- vm_negstep64_loop.c
- vm_nested64_loop.c
- vm_nested_abs_loop.c
- vm_nested_loop.c
- vm_nibrev64_loop.c
- vm_nibrev_window64_loop.c
- vm_notand_chain64_loop.c
- vm_oddcount64_loop.c
- vm_op8way64_loop.c
- vm_opcode64_loop.c
- vm_orsum_byte_idx64_loop.c
- vm_orxor_pair64_loop.c
- vm_outlined_wrapper_loop.c
- vm_pair_xormul_byte64_loop.c
- vm_pairmix64_loop.c
- vm_palindrome_loop.c
- vm_pcg64_loop.c
- vm_pcg_loop.c
- vm_pdepslow64_loop.c
- vm_peasant64_loop.c
- vm_pextslow64_loop.c
- vm_piecewise_loop.c
- vm_polynomial_loop.c
- vm_popcount64_loop.c
- vm_popcount_loop.c
- vm_popsq64_loop.c
- vm_power_loop.c
- vm_powermod_loop.c
- vm_powmod64_loop.c
- vm_prefix_sum_loop.c
- vm_prefix_xor_loop.c
- vm_prefixxor64_loop.c
- vm_quad_byte_xor64_loop.c
- vm_register_loop.c
- vm_revdecimal64_loop.c
- vm_reverse_array_loop.c
- vm_rotate_loop.c
- vm_rotchoice64_loop.c
- vm_rotl64_loop.c
- vm_runlength_loop.c
- vm_runlmax_loop.c
- vm_satadd64_loop.c
- vm_saturating_loop.c
- vm_sbyte_array_loop.c
- vm_sdiv64_loop.c
- vm_search_loop.c
- vm_shift64_loop.c
- vm_shiftin_top64_loop.c
- vm_shiftmul_loop.c
- vm_short_array_loop.c
- vm_short_loop.c
- vm_signed_byterange64_loop.c
- vm_signed_dword_range64_loop.c
- vm_signed_dword_sum64_loop.c
- vm_signed_word_range64_loop.c
- vm_signed_word_sum64_loop.c
- vm_signedaccum64_loop.c
- vm_signedbytesum64_loop.c
- vm_signedxor_byte_idx64_loop.c
- vm_skiploop_loop.c
- vm_smax64_loop.c
- vm_splitmix64_loop.c
- vm_squareadd64_loop.c
- vm_stride_loop.c
- vm_subbyte_idx64_loop.c
- vm_subroutine_loop.c
- vm_subxor_chain64_loop.c
- vm_tea_round_loop.c
- vm_three_input_loop.c
- vm_threereg64_loop.c
- vm_threestate_xormul64_loop.c
- vm_trailingones64_loop.c
- vm_trailzeros_factorial64_loop.c
- vm_treepath64_loop.c
- vm_tribonacci64_loop.c
- vm_two_input_loop.c
- vm_u64_array_loop.c
- vm_uintadd_byte_idx64_loop.c
- vm_umin64_loop.c
- vm_ushort_array_loop.c
- vm_vartrip_array_loop.c
- vm_window_loop.c
- vm_word_horner13_64_loop.c
- vm_word_orfold64_loop.c
- vm_word_range64_loop.c
- vm_word_xormul64_loop.c
- vm_wrapper_chain_loop.c
- vm_xor_accumulator_loop.c
- vm_xor_shifted_self_byte64_loop.c
- vm_xorbytes64_loop.c
- vm_xordecrypt_loop.c
- vm_xormul_byte_idx64_loop.c
- vm_xormuladd_chain64_loop.c
- vm_xormulself_byte64_loop.c
- vm_xorrot64_loop.c
- vm_xorshift64_loop.c
- vm_xorshrink64_loop.c
- vm_xs64star_loop.c
- vm_xxhmix64_loop.c
- vm_zigzag_loop.c
- vm_zigzag_step64_loop.c
- bench_add.asm
- bench_add_concretized.asm
- bench_add_mem.asm
- bench_add_mem_concretized.asm
- CommutativeOrAssociative.asm
- teb_test.asm
- test_branch_mem.asm
- test_branch_sf.asm
- test_branch_zf.asm
- test_branches.asm
- test_div.asm
- test_idiv.asm
- test_indirect_mem.asm
- test_indirect_mem2.asm
- test_invalid_mem.asm
- test_memory.asm
- test_reallocate.asm
- Zydis.c
- Zydis.h
- .clang-format
- .editorconfig
- .gitattributes
- .gitignore
- .gitmodules
- AGENTS.md
- ARCHITECTURE.md
- autoresearch.md
- autoresearch.sh
- cmake.toml
- CMakeLists.txt
- Dockerfile
- LICENSE
- linux-pe
- LLVM_API_NOTES.md
- README.md
- REVIEW_CHECKLIST.md
- test.py
- VMP_TESTING_NOTES.md
# Installation Guide
1. Get the code
git clone https://github.com/NaC-L/Mergen
Downloads the entire project code from GitHub to your computer.
cd Mergen
Moves into the project folder you just downloaded.
2. Docker
Easy RecommendedPrerequisites
- Git Needed to download the project code from GitHub.
- Docker Desktop Needed to build and run containers. Install it and keep it running in the background.
docker build -t mergen .
Builds a runnable image based on the Dockerfile.
docker run -p 8080:80 mergen
Runs the built image as an actual container.
Run docker compose ps to check the containers are Up. If the README mentions a port, open http://localhost:PORT in your browser.
3. CMake
MediumPrerequisites
mkdir build && cd build
Creates a folder to hold the build output and moves into it.
cmake ..
Analyzes the source code and generates build configuration files (must be run inside the build folder).
make
Compiles the code based on the generated build configuration to produce an executable.
Check that an executable was created inside the build folder, then run it directly (e.g. ./build/app_name).
4. Rust
MediumPrerequisites
- Git Needed to download the project code from GitHub.
- Rust (rustup) Installing via rustup also installs cargo.
cd icpped_rust
This project's files live in a subfolder, so move into it first.
cargo build --release
Compiles the Rust project.
cargo run
Builds and then immediately runs the program.
If cargo build finishes without errors, it worked. The executable is created under target/.
// repository documentation
Was this content helpful?
(0 ratings)
