disassembly

    -1熱度

    5回答

    有人請給我提供幫助,分解下面的shell代碼(在註釋部分),並向我解釋最後一行代碼的作用? # include <stdlib .h> # include <stdio .h> # include <string .h> const char code [] = "\x31\xc0" /* Line 1: xorl %eax, %eax */ "\x50" /* L

    1熱度

    1回答

    我有點奇怪的問題。如果我使用objdump的-d拆卸的ARM二進制它可以解決功能(系統庫)的分支指令例如爲: 8404: e581e000 str lr, [r1] 8408: e59f0028 ldr r0, [pc, #40] ; 8438 <address_of_message1> 840c: ebffffc1 bl 8318 <[email protected]> 8410: e59

    3熱度

    4回答

    我已經編寫了一些代碼來了解調用堆棧。我用一些內聯程序集來完成這個任務,以便將參數傳遞給堆棧。我用gcc 4.1.2編譯了它(在CentOS5.4上),它運行良好,然後使用gcc 4.8.4(在Ubuntu14.04.3上)編譯並運行程序,但它總是崩潰。 我發現在引用變量的方式上存在差異。局部變量使用gcc 4.1.2(CentOS5.4)中的EBP寄存器尋址,而局部變量使用gcc 4.8.4(Ub

    1熱度

    1回答

    我已經能夠使用RubyVM::InstructionSequence#disassemble從「編譯的」ruby文件中提取YARV字節碼指令列表。 現在我想通過指令調試代碼指令。 有沒有讓我這樣做的調試器? 問候

    0熱度

    2回答

    我一直在研究如何通過拆解C代碼在x86架構中處理浮點操作。使用的操作系統是一個64位的Linux,而代碼是爲32位機器編譯的。 這裏是C源代碼: #include <stdio.h> #include <float.h> int main(int argc, char *argv[]) { float a, b; float c, d; printf("%u

    1熱度

    1回答

    我被困在下面的代碼的解釋中。爲簡單起見,我已經取代從數據段直接數字閱讀一些數字: L1: fld qword ptr [Data1] fcomp 1.0 fnstsw ax test ah, 01h jz L2 fld qword ptr [Data2] jmp L3 L2: cmp word ptr

    1熱度

    1回答

    我想在Linux內核模式下打開一個elf文件。並找出它是否包含「in」和「out」指令。 如何做到這一點?任何想法? 謝謝。

    1熱度

    1回答

    我編譯使用cc -g -O0 -m32下一個代碼的地址: void f() { int l; short s; char c; l = 0xdeadbeef; s = l; c = l; printf("l = 0x%x (%d bits)\n", l, sizeof(l) * 8); printf("s = 0x

    0熱度

    1回答

    testb $1, %al je .L3 leal 1(%eax,%eax,2), %eax jmp .L4 我給出上述彙編代碼並要求將其轉換爲c代碼。 我知道它幾乎全部在做什麼,我只是不知道如何爲%al寄存器做C代碼。 這裏是彙編代碼的其餘部分,如果有幫助 prob2: pushl %ebp movl %esp, %ebp movl 8(%ebp), %eax cmpl $1

    2熱度

    1回答

    我使用IDA反彙編文件,其中一個部分包含此。這是幹什麼的?在C中看起來像什麼? 我相信它會將edx推入堆棧,並使用_atoi將其轉換爲整數,但之後會在eax中留下什麼,以及爲什麼將它與5進行比較? mov ecx, [ebp+argv] mov edx, [ecx+4] push edx ; char * call _atoi add esp, 4 mov [ebp+var