How to insert new instruction at specified address in radare2












0














I want to add additional branch instruction at some addresses. I'm using radare2. The problem that insert commands overwrites the original instruction instead of adding new ones!



I tried to :
increase the file size at first by (r+ 4)
add null bytes (wen 4)
and then write (weX) but it didn't work



[0x00400580]> r+4



[0x00400580]> wen 4



[0x00400580]> weX 0x400580 03000094



this the original code and I want to insert (additional)new instruction at 0x400580



0x0040057c 04000014 b 0x40058c



0x00400580 e01f40b9 ldr w0, [sp + arg_1ch]



0x00400584 00040011 add w0, w0, 1



0x00400588 e01f00b9 str w0, [sp + arg_1ch]



I expected it to be



0x0040057c 04000014 b 0x40058c



0x00400580 03000094 bl 0x40058c



0x00400584 e01f40b9 ldr w0, [sp + arg_1ch]



0x00400588 00040011 add w0, w0, 1



0x0040058c e01f00b9 str w0, [sp + arg_1ch]



But actual output was:



0x0040057c 04000014 b 0x40058c



0x00400580 03000094 bl 0x40058c



0x00400584 00040011 add w0, w0, 1



0x00400588 e01f00b9 str w0, [sp + arg_1ch]










share|improve this question



























    0














    I want to add additional branch instruction at some addresses. I'm using radare2. The problem that insert commands overwrites the original instruction instead of adding new ones!



    I tried to :
    increase the file size at first by (r+ 4)
    add null bytes (wen 4)
    and then write (weX) but it didn't work



    [0x00400580]> r+4



    [0x00400580]> wen 4



    [0x00400580]> weX 0x400580 03000094



    this the original code and I want to insert (additional)new instruction at 0x400580



    0x0040057c 04000014 b 0x40058c



    0x00400580 e01f40b9 ldr w0, [sp + arg_1ch]



    0x00400584 00040011 add w0, w0, 1



    0x00400588 e01f00b9 str w0, [sp + arg_1ch]



    I expected it to be



    0x0040057c 04000014 b 0x40058c



    0x00400580 03000094 bl 0x40058c



    0x00400584 e01f40b9 ldr w0, [sp + arg_1ch]



    0x00400588 00040011 add w0, w0, 1



    0x0040058c e01f00b9 str w0, [sp + arg_1ch]



    But actual output was:



    0x0040057c 04000014 b 0x40058c



    0x00400580 03000094 bl 0x40058c



    0x00400584 00040011 add w0, w0, 1



    0x00400588 e01f00b9 str w0, [sp + arg_1ch]










    share|improve this question

























      0












      0








      0







      I want to add additional branch instruction at some addresses. I'm using radare2. The problem that insert commands overwrites the original instruction instead of adding new ones!



      I tried to :
      increase the file size at first by (r+ 4)
      add null bytes (wen 4)
      and then write (weX) but it didn't work



      [0x00400580]> r+4



      [0x00400580]> wen 4



      [0x00400580]> weX 0x400580 03000094



      this the original code and I want to insert (additional)new instruction at 0x400580



      0x0040057c 04000014 b 0x40058c



      0x00400580 e01f40b9 ldr w0, [sp + arg_1ch]



      0x00400584 00040011 add w0, w0, 1



      0x00400588 e01f00b9 str w0, [sp + arg_1ch]



      I expected it to be



      0x0040057c 04000014 b 0x40058c



      0x00400580 03000094 bl 0x40058c



      0x00400584 e01f40b9 ldr w0, [sp + arg_1ch]



      0x00400588 00040011 add w0, w0, 1



      0x0040058c e01f00b9 str w0, [sp + arg_1ch]



      But actual output was:



      0x0040057c 04000014 b 0x40058c



      0x00400580 03000094 bl 0x40058c



      0x00400584 00040011 add w0, w0, 1



      0x00400588 e01f00b9 str w0, [sp + arg_1ch]










      share|improve this question













      I want to add additional branch instruction at some addresses. I'm using radare2. The problem that insert commands overwrites the original instruction instead of adding new ones!



      I tried to :
      increase the file size at first by (r+ 4)
      add null bytes (wen 4)
      and then write (weX) but it didn't work



      [0x00400580]> r+4



      [0x00400580]> wen 4



      [0x00400580]> weX 0x400580 03000094



      this the original code and I want to insert (additional)new instruction at 0x400580



      0x0040057c 04000014 b 0x40058c



      0x00400580 e01f40b9 ldr w0, [sp + arg_1ch]



      0x00400584 00040011 add w0, w0, 1



      0x00400588 e01f00b9 str w0, [sp + arg_1ch]



      I expected it to be



      0x0040057c 04000014 b 0x40058c



      0x00400580 03000094 bl 0x40058c



      0x00400584 e01f40b9 ldr w0, [sp + arg_1ch]



      0x00400588 00040011 add w0, w0, 1



      0x0040058c e01f00b9 str w0, [sp + arg_1ch]



      But actual output was:



      0x0040057c 04000014 b 0x40058c



      0x00400580 03000094 bl 0x40058c



      0x00400584 00040011 add w0, w0, 1



      0x00400588 e01f00b9 str w0, [sp + arg_1ch]







      armv8 radare2






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Dec 27 at 13:21









      Sara

      266




      266





























          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53945801%2fhow-to-insert-new-instruction-at-specified-address-in-radare2%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown






























          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53945801%2fhow-to-insert-new-instruction-at-specified-address-in-radare2%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Monofisismo

          Angular Downloading a file using contenturl with Basic Authentication

          Olmecas