Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
miasm — पायथन में रिवर्स इंजीनियरिंग फ्रेमवर्क | Kitploit
उपकरण/GitHubGitHub/cea-sec/miasm
स्थैतिक विश्लेषणगतिशील विश्लेषण (सैंडबॉक्सिंग)रिवर्स इंजीनियरिंगडीबगर्सफज़िंगबाइनरी विश्लेषण
GitHubcea-sec/miasm

miasm

पायथन में रिवर्स इंजीनियरिंग फ्रेमवर्क

रिपॉजिटरी देखें
3.9k489717 दिन पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
वेबसाइट
साझा करें

Build Status Build status Miasm tests Code Climate Join the chat at https://gitter.im/cea-sec/miasm

Miasm क्या है?

Miasm एक मुफ्त और ओपन सोर्स (GPLv2) रिवर्स इंजीनियरिंग फ्रेमवर्क है। Miasm का उद्देश्य बाइनरी प्रोग्रामों का विश्लेषण / संशोधन / निर्माण करना है। यहाँ विशेषताओं की एक गैर-विस्तृत सूची दी गई है:

  • PE / ELF 32 / 64 LE / BE खोलना / संशोधित करना / उत्पन्न करना
  • X86 / ARM / MIPS / SH4 / MSP430 को असेंबल / डिसअसेंबल करना
  • इंटरमीडिएट भाषा का उपयोग करके असेंबली सिमैंटिक का प्रतिनिधित्व करना
  • JIT का उपयोग करके एमुलेट करना (डायनामिक कोड विश्लेषण, अनपैकिंग, ...)
  • स्वचालित डी-ऑब्सफस्केशन के लिए अभिव्यक्ति सरलीकरण
  • ...
  • अधिक उदाहरणों और डेमो के लिए आधिकारिक ब्लॉग देखें।

    विषय सूची

    • Miasm क्या है?
    • मूल उदाहरण
      • असेंबल / डिसअसेंबल
      • इंटरमीडिएट प्रतिनिधित्व
      • एमुलेशन
      • प्रतीकात्मक निष्पादन
    • यह कैसे काम करता है?
    • दस्तावेज़ीकरण
    • Miasm प्राप्त करना
      • सॉफ़्टवेयर आवश्यकताएँ
      • कॉन्फ़िगरेशन
      • Windows और IDA
    • परीक्षण
    • वे पहले से ही Miasm का उपयोग करते हैं
    • विविध

    मूल उदाहरण

    असेंबल / डिसअसेंबल

    Miasm x86 आर्किटेक्चर आयात करें:```pycon

    from miasm.arch.x86.arch import mn_x86 from miasm.core.locationdb import LocationDB

    root@kitploit:~
    एक स्थान db प्राप्त करें:```pycon
    >>> loc_db = LocationDB()
    

    एक पंक्ति इकट्ठा करें:```pycon

    l = mn_x86.fromstring('XOR ECX, ECX', loc_db, 32) print(l) XOR ECX, ECX mn_x86.asm(l) ['1\xc9', '3\xc9', 'g1\xc9', 'g3\xc9']

    root@kitploit:~
    एक ऑपरेंड संशोधित करें:```pycon
    >>> l.args[0] = mn_x86.regs.EAX
    >>> print(l)
    XOR        EAX, ECX
    >>> a = mn_x86.asm(l)
    >>> print(a)
    ['1\xc8', '3\xc1', 'g1\xc8', 'g3\xc1']
    

    परिणाम को अलग करें:```pycon

    print(mn_x86.dis(a[0], 32)) XOR EAX, ECX

    root@kitploit:~
    `Machine` एब्स्ट्रैक्शन का उपयोग करना:```pycon
    >>> from miasm.analysis.machine import Machine
    >>> mn = Machine('x86_32').mn
    >>> print(mn.dis('\x33\x30', 32))
    XOR        ESI, DWORD PTR [EAX]
    

    MIPS के लिए:```pycon

    mn = Machine('mips32b').mn print(mn.dis(b'\x97\xa3\x00 ', "b")) LHU V1, 0x20(SP)

    root@kitploit:~
    मध्यवर्ती प्रतिनिधित्व
    ---------------------------
    
    एक निर्देश बनाएँ:```pycon
    >>> machine = Machine('arml')
    >>> instr = machine.mn.dis('\x00 \x88\xe0', 'l')
    >>> print(instr)
    ADD        R2, R8, R0
    

    एक मध्यवर्ती प्रतिनिधित्व ऑब्जेक्ट बनाएँ:```pycon

    lifter = machine.lifter_model_call(loc_db)

    root@kitploit:~
    एक खाली ircfg बनाएँ:```pycon
    >>> ircfg = lifter.new_ircfg()
    

    पूल में निर्देश जोड़ें:```pycon

    lifter.add_instr_to_ircfg(instr, ircfg)

    root@kitploit:~
    वर्तमान पूल प्रिंट करें:```pycon
    >>> for lbl, irblock in ircfg.blocks.items():
    ...     print(irblock)
    loc_0:
    R2 = R8 + R0
    
    IRDst = loc_4
    
    

    IR के साथ काम करना, उदाहरण के लिए दुष्प्रभाव प्राप्त करना:```pycon

    for lbl, irblock in ircfg.blocks.items(): ... for assignblk in irblock: ... rw = assignblk.get_rw() ... for dst, reads in rw.items(): ... print('read: ', [str(x) for x in reads]) ... print('written:', dst) ... print() ... read: ['R8', 'R0'] written: R2

    read: [] written: IRDst

    root@kitploit:~
    अधिक जानकारी Miasm IR पर [संबंधित Jupyter Notebook](https://github.com/cea-sec/miasm/blob/master/doc/expression/expression.ipynb) में है।
    
    अनुकरण
    ---------
    
    एक शेलकोड दिया गया:```pycon
    00000000 8d4904      lea    ecx, [ecx+0x4]
    00000003 8d5b01      lea    ebx, [ebx+0x1]
    00000006 80f901      cmp    cl, 0x1
    00000009 7405        jz     0x10
    0000000b 8d5bff      lea    ebx, [ebx-1]
    0000000e eb03        jmp    0x13
    00000010 8d5b01      lea    ebx, [ebx+0x1]
    00000013 89d8        mov    eax, ebx
    00000015 c3          ret
    >>> s = b'\x8dI\x04\x8d[\x01\x80\xf9\x01t\x05\x8d[\xff\xeb\x03\x8d[\x01\x89\xd8\xc3'
    

    शेलकोड को Container एब्स्ट्रैक्शन के माध्यम से आयात करें:```pycon

    from miasm.analysis.binary import Container c = Container.from_string(s, loc_db) c <miasm.analysis.binary.ContainerUnknown object at 0x7f34cefe6090>

    root@kitploit:~
    पते `0` पर शेलकोड को डिसअसेंबल करना:```pycon
    >>> from miasm.analysis.machine import Machine
    >>> machine = Machine('x86_32')
    >>> mdis = machine.dis_engine(c.bin_stream, loc_db=loc_db)
    >>> asmcfg = mdis.dis_multiblock(0)
    >>> for block in asmcfg.blocks:
    ...  print(block)
    ...
    loc_0
    LEA        ECX, DWORD PTR [ECX + 0x4]
    LEA        EBX, DWORD PTR [EBX + 0x1]
    CMP        CL, 0x1
    JZ         loc_10
    ->      c_next:loc_b    c_to:loc_10
    loc_10
    LEA        EBX, DWORD PTR [EBX + 0x1]
    ->      c_next:loc_13
    loc_b
    LEA        EBX, DWORD PTR [EBX + 0xFFFFFFFF]
    JMP        loc_13
    ->      c_to:loc_13
    loc_13
    MOV        EAX, EBX
    RET
    

    JIT इंजन को एक स्टैक के साथ आरंभ करना:```pycon

    jitter = machine.jitter(loc_db, jit_type='python') jitter.init_stack()

    root@kitploit:~
    शेलकोड को एक मनमाना मेमोरी स्थान पर जोड़ें:```pycon
    >>> run_addr = 0x40000000
    >>> from miasm.jitter.csts import PAGE_READ, PAGE_WRITE
    >>> jitter.vm.add_memory_page(run_addr, PAGE_READ | PAGE_WRITE, s)
    

    शेलकोड की वापसी को पकड़ने के लिए एक sentinelle बनाएँ:```Python def code_sentinelle(jitter): jitter.running = False jitter.pc = 0 return True

    jitter.add_breakpoint(0x1337beef, code_sentinelle) jitter.push_uint32_t(0x1337beef)

    root@kitploit:~
    सक्रिय लॉग:```pycon
    >>> jitter.set_trace_log()
    

    किसी भी पते पर चलाएँ:```pycon

    jitter.init_run(run_addr) jitter.continue_run() RAX 0000000000000000 RBX 0000000000000000 RCX 0000000000000000 RDX 0000000000000000 RSI 0000000000000000 RDI 0000000000000000 RSP 000000000123FFF8 RBP 0000000000000000 zf 0000000000000000 nf 0000000000000000 of 0000000000000000 cf 0000000000000000 RIP 0000000040000000 40000000 LEA ECX, DWORD PTR [ECX+0x4] RAX 0000000000000000 RBX 0000000000000000 RCX 0000000000000004 RDX 0000000000000000 RSI 0000000000000000 RDI 0000000000000000 RSP 000000000123FFF8 RBP 0000000000000000 zf 0000000000000000 nf 0000000000000000 of 0000000000000000 cf 0000000000000000 .... 4000000e JMP loc_0000000040000013:0x40000013 RAX 0000000000000000 RBX 0000000000000000 RCX 0000000000000004 RDX 0000000000000000 RSI 0000000000000000 RDI 0000000000000000 RSP 000000000123FFF8 RBP 0000000000000000 zf 0000000000000000 nf 0000000000000000 of 0000000000000000 cf 0000000000000000 RIP 0000000040000013 40000013 MOV EAX, EBX RAX 0000000000000000 RBX 0000000000000000 RCX 0000000000000004 RDX 0000000000000000 RSI 0000000000000000 RDI 0000000000000000 RSP 000000000123FFF8 RBP 0000000000000000 zf 0000000000000000 nf 0000000000000000 of 0000000000000000 cf 0000000000000000 RIP 0000000040000013 40000015 RET

    root@kitploit:~
    जिटर के साथ बातचीत:```pycon
    >>> jitter.vm
    ad 1230000 size 10000 RW_ hpad 0x2854b40
    ad 40000000 size 16 RW_ hpad 0x25e0ed0
    
    >>> hex(jitter.cpu.EAX)
    '0x0L'
    >>> jitter.cpu.ESI = 12
    

    प्रतीकात्मक निष्पादन

    IR पूल को प्रारंभ करना:```pycon

    lifter = machine.lifter_model_call(loc_db) ircfg = lifter.new_ircfg_from_asmcfg(asmcfg)

    root@kitploit:~
    इंजन को डिफ़ॉल्ट प्रतीकात्मक मानों के साथ आरंभ करना:```pycon
    >>> from miasm.ir.symbexec import SymbolicExecutionEngine
    >>> sb = SymbolicExecutionEngine(lifter)
    

    प्रारंभ करना:```pycon

    symbolic_pc = sb.run_at(ircfg, 0) print(symbolic_pc) ((ECX + 0x4)[0:8] + 0xFF)?(0xB,0x10)

    root@kitploit:~
    वही, चरण लॉग के साथ (केवल परिवर्तन प्रदर्शित होते हैं):```pycon
    >>> sb = SymbolicExecutionEngine(lifter, machine.mn.regs.regs_init)
    >>> symbolic_pc = sb.run_at(ircfg, 0, step=True)
    Instr LEA        ECX, DWORD PTR [ECX + 0x4]
    Assignblk:
    ECX = ECX + 0x4
    ________________________________________________________________________________
    ECX                = ECX + 0x4
    ________________________________________________________________________________
    Instr LEA        EBX, DWORD PTR [EBX + 0x1]
    Assignblk:
    EBX = EBX + 0x1
    ________________________________________________________________________________
    EBX                = EBX + 0x1
    ECX                = ECX + 0x4
    ________________________________________________________________________________
    Instr CMP        CL, 0x1
    Assignblk:
    zf = (ECX[0:8] + -0x1)?(0x0,0x1)
    nf = (ECX[0:8] + -0x1)[7:8]
    pf = parity((ECX[0:8] + -0x1) & 0xFF)
    of = ((ECX[0:8] ^ (ECX[0:8] + -0x1)) & (ECX[0:8] ^ 0x1))[7:8]
    cf = (((ECX[0:8] ^ 0x1) ^ (ECX[0:8] + -0x1)) ^ ((ECX[0:8] ^ (ECX[0:8] + -0x1)) & (ECX[0:8] ^ 0x1)))[7:8]
    af = ((ECX[0:8] ^ 0x1) ^ (ECX[0:8] + -0x1))[4:5]
    ________________________________________________________________________________
    af                 = (((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8] ^ 0x1)[4:5]
    pf                 = parity((ECX + 0x4)[0:8] + 0xFF)
    zf                 = ((ECX + 0x4)[0:8] + 0xFF)?(0x0,0x1)
    ECX                = ECX + 0x4
    of                 = ((((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8]) & ((ECX + 0x4)[0:8] ^ 0x1))[7:8]
    nf                 = ((ECX + 0x4)[0:8] + 0xFF)[7:8]
    cf                 = (((((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8]) & ((ECX + 0x4)[0:8] ^ 0x1)) ^ ((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8] ^ 0x1)[7:8]
    EBX                = EBX + 0x1
    ________________________________________________________________________________
    Instr JZ         loc_key_1
    Assignblk:
    IRDst = zf?(loc_key_1,loc_key_2)
    EIP = zf?(loc_key_1,loc_key_2)
    ________________________________________________________________________________
    af                 = (((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8] ^ 0x1)[4:5]
    EIP                = ((ECX + 0x4)[0:8] + 0xFF)?(0xB,0x10)
    pf                 = parity((ECX + 0x4)[0:8] + 0xFF)
    IRDst              = ((ECX + 0x4)[0:8] + 0xFF)?(0xB,0x10)
    zf                 = ((ECX + 0x4)[0:8] + 0xFF)?(0x0,0x1)
    ECX                = ECX + 0x4
    of                 = ((((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8]) & ((ECX + 0x4)[0:8] ^ 0x1))[7:8]
    nf                 = ((ECX + 0x4)[0:8] + 0xFF)[7:8]
    cf                 = (((((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8]) & ((ECX + 0x4)[0:8] ^ 0x1)) ^ ((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8] ^ 0x1)[7:8]
    EBX                = EBX + 0x1
    ________________________________________________________________________________
    >>>
    

    एक ठोस ECX के साथ पुनः निष्पादन का प्रयास करें। यहाँ, symbolic / concolic निष्पादन शेलकोड के अंत तक पहुँचता है:```pycon

    from miasm.expression.expression import ExprInt sb.symbols[machine.mn.regs.ECX] = ExprInt(-3, 32) symbolic_pc = sb.run_at(ircfg, 0, step=True) Instr LEA ECX, DWORD PTR [ECX + 0x4] Assignblk: ECX = ECX + 0x4


    af = (((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8] ^ 0x1)[4:5] EIP = ((ECX + 0x4)[0:8] + 0xFF)?(0xB,0x10) pf = parity((ECX + 0x4)[0:8] + 0xFF) IRDst = ((ECX + 0x4)[0:8] + 0xFF)?(0xB,0x10) zf = ((ECX + 0x4)[0:8] + 0xFF)?(0x0,0x1) ECX = 0x1 of = ((((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8]) & ((ECX + 0x4)[0:8] ^ 0x1))[7:8] nf = ((ECX + 0x4)[0:8] + 0xFF)[7:8] cf = (((((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8]) & ((ECX + 0x4)[0:8] ^ 0x1)) ^ ((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8] ^ 0x1)[7:8] EBX = EBX + 0x1


    Instr LEA EBX, DWORD PTR [EBX + 0x1] Assignblk: EBX = EBX + 0x1


    af = (((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8] ^ 0x1)[4:5] EIP = ((ECX + 0x4)[0:8] + 0xFF)?(0xB,0x10) pf = parity((ECX + 0x4)[0:8] + 0xFF) IRDst = ((ECX + 0x4)[0:8] + 0xFF)?(0xB,0x10) zf = ((ECX + 0x4)[0:8] + 0xFF)?(0x0,0x1) ECX = 0x1 of = ((((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8]) & ((ECX + 0x4)[0:8] ^ 0x1))[7:8] nf = ((ECX + 0x4)[0:8] + 0xFF)[7:8] cf = (((((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8]) & ((ECX + 0x4)[0:8] ^ 0x1)) ^ ((ECX + 0x4)[0:8] + 0xFF) ^ (ECX + 0x4)[0:8] ^ 0x1)[7:8] EBX = EBX + 0x2


    Instr CMP CL, 0x1 Assignblk: zf = (ECX[0:8] + -0x1)?(0x0,0x1) nf = (ECX[0:8] + -0x1)[7:8] pf = parity((ECX[0:8] + -0x1) & 0xFF) of = ((ECX[0:8] ^ (ECX[0:8] + -0x1)) & (ECX[0:8] ^ 0x1))[7:8] cf = (((ECX[0:8] ^ 0x1) ^ (ECX[0:8] + -0x1)) ^ ((ECX[0:8] ^ (ECX[0:8] + -0x1)) & (ECX[0:8] ^ 0x1)))[7:8] af = ((ECX[0:8] ^ 0x1) ^ (ECX[0:8] + -0x1))[4:5]


    af = 0x0 EIP = ((ECX + 0x4)[0:8] + 0xFF)?(0xB,0x10) pf = 0x1 IRDst = ((ECX + 0x4)[0:8] + 0xFF)?(0xB,0x10) zf = 0x1 ECX = 0x1 of = 0x0 nf = 0x0 cf = 0x0 EBX = EBX + 0x2


    Instr JZ loc_key_1 Assignblk: IRDst = zf?(loc_key_1,loc_key_2) EIP = zf?(loc_key_1,loc_key_2)


    af = 0x0 EIP = 0x10 pf = 0x1 IRDst = 0x10 zf = 0x1 ECX = 0x1 of = 0x0 nf = 0x0 cf = 0x0 EBX = EBX + 0x2


    Instr LEA EBX, DWORD PTR [EBX + 0x1] Assignblk: EBX = EBX + 0x1


    af = 0x0 EIP = 0x10 pf = 0x1 IRDst = 0x10 zf = 0x1 ECX = 0x1 of = 0x0 nf = 0x0 cf = 0x0 EBX = EBX + 0x3


    Instr LEA EBX, DWORD PTR [EBX + 0x1] Assignblk: IRDst = loc_key_3


    af = 0x0 EIP = 0x10 pf = 0x1 IRDst = 0x13 zf = 0x1 ECX = 0x1 of = 0x0 nf = 0x0 cf = 0x0 EBX = EBX + 0x3


    Instr MOV EAX, EBX Assignblk: EAX = EBX


    af = 0x0 EIP = 0x10 pf = 0x1 IRDst = 0x13 zf = 0x1 ECX = 0x1 of = 0x0 nf = 0x0 cf = 0x0 EBX = EBX + 0x3 EAX = EBX + 0x3


    Instr RET Assignblk: IRDst = @32[ESP[0:32]] ESP = {ESP[0:32] + 0x4 0 32} EIP = @32[ESP[0:32]]


    af = 0x0 EIP = @32[ESP] pf = 0x1 IRDst = @32[ESP] zf = 0x1 ECX = 0x1 of = 0x0 nf = 0x0 cf = 0x0 EBX = EBX + 0x3 ESP = ESP + 0x4 EAX = EBX + 0x3


    root@kitploit:~
    यह कैसे काम करता है?
    =================
    
    Miasm अपने स्वयं के डिस्सेम्बलर, मध्यवर्ती भाषा और निर्देश शब्दार्थ को एम्बेड करता है। यह Python में लिखा गया है।
    
    कोड को अनुकरण करने के लिए, यह मध्यवर्ती प्रतिनिधित्व को JIT करने के लिए LLVM, GCC, Clang या Python का उपयोग करता है। यह शेलकोड और बाइनरी के सभी या भागों का अनुकरण कर सकता है। निष्पादन के साथ बातचीत करने के लिए Python कॉलबैक निष्पादित किए जा सकते हैं, उदाहरण के लिए लाइब्रेरी फ़ंक्शंस के प्रभावों का अनुकरण करने के लिए।
    
    दस्तावेज़ीकरण
    =============
    
    कुछ दस्तावेज़ीकरण संसाधन [doc](https://github.com/cea-sec/miasm/blob/master/doc) फ़ोल्डर में उपलब्ध हैं।
    
    एक स्वतः-निर्मित दस्तावेज़ीकरण उपलब्ध है:
    * [Doxygen](http://miasm.re/miasm_doxygen)
    * [pdoc](http://miasm.re/miasm_pdoc)
    
    Miasm प्राप्त करना
    ===============
    
    * रिपॉजिटरी क्लोन करें: [Miasm on GitHub](https://github.com/cea-sec/miasm/)
    * [Docker Hub](https://registry.hub.docker.com/u/miasm/) पर एक Docker इमेज प्राप्त करें
    
    सॉफ़्टवेयर आवश्यकताएँ
    ---------------------
    
    Miasm उपयोग करता है:
    
    * python-pyparsing
    * python-dev
    * वैकल्पिक रूप से python-pycparser (version >= 2.17)
    
    कोड JIT को सक्षम करने के लिए, निम्नलिखित मॉड्यूल में से एक अनिवार्य है:
    * GCC
    * Clang
    * LLVM with Numba llvmlite, नीचे देखें
    
    'optional' Miasm का भी उपयोग कर सकता है:
    * Z3, [प्रमेय सिद्धकर्ता](https://github.com/Z3Prover/z3)
    
    कॉन्फ़िगरेशन
    -------------
    
    जिटर का उपयोग करने के लिए, GCC या LLVM अनुशंसित है
    * GCC (कोई भी संस्करण)
    * Clang (कोई भी संस्करण)
    * LLVM
      * Debian (testing/unstable): परीक्षण नहीं किया गया
      * Debian stable/Ubuntu/Kali/whatever: `pip install llvmlite` या [llvmlite](https://github.com/numba/llvmlite) से इंस्टॉल करें
      * Windows: परीक्षण नहीं किया गया
    * Miasm बनाएँ और इंस्टॉल करें:```pycon
    $ cd miasm_directory
    $ python setup.py build
    $ sudo python setup.py install
    

    यदि किसी jitter मॉड्यूल के संकलन के दौरान कुछ गलत हो जाता है, तो Miasm त्रुटि को छोड़ देगा और संबंधित मॉड्यूल को अक्षम कर देगा (संकलन आउटपुट देखें)।

    Windows & IDA

    Miasm के अधिकांश IDA प्लगइन्स Miasm कार्यक्षमता के एक उपसमूच्च का उपयोग करते हैं। उन्हें काम करने का एक त्वरित तरीका है जोड़ना:

    • pyparsing.py को C:\...\IDA\python\ या pip install pyparsing
    • miasm/miasm निर्देशिका को C:\...\IDA\python\

    JITter से संबंधित को छोड़कर सभी सुविधाएँ उपलब्ध होंगी। अधिक पूर्ण स्थापना के लिए, कृपया ऊपर दिए गए पैराग्राफ देखें।

    Testing

    Miasm के साथ प्रतिगमन परीक्षणों का एक सेट आता है। उन सभी को चलाने के लिए:```pycon cd miasm_directory/test

    Run tests using our own test runner

    python test_all.py

    Run tests using standard frameworks (slower, require 'parameterized')

    python -m unittest test_all.py # sequential, requires 'unittest' python -m pytest test_all.py # sequential, requires 'pytest' python -m pytest -n auto test_all.py # parallel, requires 'pytest' and 'pytest-xdist'

    root@kitploit:~
    कुछ विकल्प निर्दिष्ट किए जा सकते हैं:
    
    * मोनो थ्रेडिंग: `-m`
    * कोड कवरेज इंस्ट्रुमेंटेशन: `-c`
    * केवल तेज़ परीक्षण: `-t long` (लंबे परीक्षणों को बाहर करता है)
    
    वे पहले से ही Miasm का उपयोग करते हैं
    ======================
    
    उपकरण
    -----
    
    * [Sibyl](https://github.com/cea-sec/Sibyl): एक फंक्शन डिविनेशन टूल
    * [R2M2](https://github.com/guedou/r2m2): radare2 प्लगइन के रूप में miasm का उपयोग करें
    * [CGrex](https://github.com/mechaphish/cgrex): CGC बाइनरी के लिए लक्षित पैचर
    * [ethRE](https://github.com/jbcayrou/ethRE): Ethereum EVM के लिए रिवर्सिंग टूल (संबंधित Miasm2 आर्किटेक्चर के साथ)
    
    ब्लॉग पोस्ट / पेपर / सम्मेलन
    ---------------------------------
    
    * [Deobfuscation: recovering an OLLVM-protected program](http://blog.quarkslab.com/deobfuscation-recovering-an-ollvm-protected-program.html)
    * [Taming a Wild Nanomite-protected MIPS Binary With Symbolic Execution: No Such Crackme](https://doar-e.github.io/blog/2014/10/11/taiming-a-wild-nanomite-protected-mips-binary-with-symbolic-execution-no-such-crackme/)
    * [Génération rapide de DGA avec Miasm](https://www.lexsi.com/securityhub/generation-rapide-de-dga-avec-miasm/): DGA की त्वरित गणना (फ्रेंच लेख)
    * [Enabling Client-Side Crash-Resistance to Overcome Diversification and Information Hiding](https://www.internetsociety.org/sites/default/files/blogs-media/enabling-client-side-crash-resistance-overcome-diversification-information-hiding.pdf): अदिश कॉल संभावित तर्कों का पता लगाएं
    * [Miasm: Framework de reverse engineering](https://www.sstic.org/2012/presentation/miasm_framework_de_reverse_engineering/) (फ्रेंच)
    * [Tutorial miasm](https://www.sstic.org/2014/presentation/Tutorial_miasm/) (फ्रेंच वीडियो)
    * [Graphes de dépendances : Petit Poucet style](https://www.sstic.org/2016/presentation/graphes_de_dpendances__petit_poucet_style/): DepGraph (फ्रेंच)
    
    पुस्तकें
    -----
    
    * [Practical Reverse Engineering: X86, X64, Arm, Windows Kernel, Reversing Tools, and Obfuscation](http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1118787315,subjectCd-CSJ0.html): Miasm का परिचय (अध्याय 5 "अस्पष्टता")
    * [BlackHat Python - Appendix](https://github.com/oreilly-japan/black-hat-python-jp-support/tree/master/appendix-A): जापान सुरक्षा पुस्तक के नमूने
    
    टूल डाउनलोड करें