FreeBasic
Главная
Вход
Регистрация
Пятница, 29.03.2024, 10:27Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Библиотеки для FreeBasic » Другие библиотеки » UDIS86 (библиотека для дизассемблирования)
UDIS86
haavДата: Четверг, 02.01.2020, 13:48 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Udis86 - это по сути дизассемблерный движок для x86 и x86-64. Оф. сайт библиотеки: http://udis86.sourceforge.net/

Заголовок по шустрому забахал в fbfrog (файл extern.bi):

Код
#pragma once

#include once "crt/stdio.bi"
#include once "crt.bi"

#inclib "udis86"

extern "C"

#define UD_EXTERN_H
#define UD_TYPES_H

type ud_type as long
enum
   UD_NONE
   UD_R_AL
   UD_R_CL
   UD_R_DL
   UD_R_BL
   UD_R_AH
   UD_R_CH
   UD_R_DH
   UD_R_BH
   UD_R_SPL
   UD_R_BPL
   UD_R_SIL
   UD_R_DIL
   UD_R_R8B
   UD_R_R9B
   UD_R_R10B
   UD_R_R11B
   UD_R_R12B
   UD_R_R13B
   UD_R_R14B
   UD_R_R15B
   UD_R_AX
   UD_R_CX
   UD_R_DX
   UD_R_BX
   UD_R_SP
   UD_R_BP
   UD_R_SI
   UD_R_DI
   UD_R_R8W
   UD_R_R9W
   UD_R_R10W
   UD_R_R11W
   UD_R_R12W
   UD_R_R13W
   UD_R_R14W
   UD_R_R15W
   UD_R_EAX
   UD_R_ECX
   UD_R_EDX
   UD_R_EBX
   UD_R_ESP
   UD_R_EBP
   UD_R_ESI
   UD_R_EDI
   UD_R_R8D
   UD_R_R9D
   UD_R_R10D
   UD_R_R11D
   UD_R_R12D
   UD_R_R13D
   UD_R_R14D
   UD_R_R15D
   UD_R_RAX
   UD_R_RCX
   UD_R_RDX
   UD_R_RBX
   UD_R_RSP
   UD_R_RBP
   UD_R_RSI
   UD_R_RDI
   UD_R_R8
   UD_R_R9
   UD_R_R10
   UD_R_R11
   UD_R_R12
   UD_R_R13
   UD_R_R14
   UD_R_R15
   UD_R_ES
   UD_R_CS
   UD_R_SS
   UD_R_DS
   UD_R_FS
   UD_R_GS
   UD_R_CR0
   UD_R_CR1
   UD_R_CR2
   UD_R_CR3
   UD_R_CR4
   UD_R_CR5
   UD_R_CR6
   UD_R_CR7
   UD_R_CR8
   UD_R_CR9
   UD_R_CR10
   UD_R_CR11
   UD_R_CR12
   UD_R_CR13
   UD_R_CR14
   UD_R_CR15
   UD_R_DR0
   UD_R_DR1
   UD_R_DR2
   UD_R_DR3
   UD_R_DR4
   UD_R_DR5
   UD_R_DR6
   UD_R_DR7
   UD_R_DR8
   UD_R_DR9
   UD_R_DR10
   UD_R_DR11
   UD_R_DR12
   UD_R_DR13
   UD_R_DR14
   UD_R_DR15
   UD_R_MM0
   UD_R_MM1
   UD_R_MM2
   UD_R_MM3
   UD_R_MM4
   UD_R_MM5
   UD_R_MM6
   UD_R_MM7
   UD_R_ST0
   UD_R_ST1
   UD_R_ST2
   UD_R_ST3
   UD_R_ST4
   UD_R_ST5
   UD_R_ST6
   UD_R_ST7
   UD_R_XMM0
   UD_R_XMM1
   UD_R_XMM2
   UD_R_XMM3
   UD_R_XMM4
   UD_R_XMM5
   UD_R_XMM6
   UD_R_XMM7
   UD_R_XMM8
   UD_R_XMM9
   UD_R_XMM10
   UD_R_XMM11
   UD_R_XMM12
   UD_R_XMM13
   UD_R_XMM14
   UD_R_XMM15
   UD_R_RIP
   UD_OP_REG
   UD_OP_MEM
   UD_OP_PTR
   UD_OP_IMM
   UD_OP_JIMM
   UD_OP_CONST
end enum

#define UD_ITAB_H

type ud_table_type as long
enum
   UD_TAB__OPC_TABLE
   UD_TAB__OPC_X87
   UD_TAB__OPC_MOD
   UD_TAB__OPC_VEX_M
   UD_TAB__OPC_VEX_P
   UD_TAB__OPC_RM
   UD_TAB__OPC_VENDOR
   UD_TAB__OPC_OSIZE
   UD_TAB__OPC_MODE
   UD_TAB__OPC_3DNOW
   UD_TAB__OPC_REG
   UD_TAB__OPC_ASIZE
   UD_TAB__OPC_SSE
end enum

type ud_mnemonic_code as long
enum
   UD_Iinvalid
   UD_I3dnow
   UD_Inone
   UD_Idb
   UD_Ipause
   UD_Iaaa
   UD_Iaad
   UD_Iaam
   UD_Iaas
   UD_Iadc
   UD_Iadd
   UD_Iaddpd
   UD_Iaddps
   UD_Iaddsd
   UD_Iaddss
   UD_Iand
   UD_Iandpd
   UD_Iandps
   UD_Iandnpd
   UD_Iandnps
   UD_Iarpl
   UD_Imovsxd
   UD_Ibound
   UD_Ibsf
   UD_Ibsr
   UD_Ibswap
   UD_Ibt
   UD_Ibtc
   UD_Ibtr
   UD_Ibts
   UD_Icall
   UD_Icbw
   UD_Icwde
   UD_Icdqe
   UD_Iclc
   UD_Icld
   UD_Iclflush
   UD_Iclgi
   UD_Icli
   UD_Iclts
   UD_Icmc
   UD_Icmovo
   UD_Icmovno
   UD_Icmovb
   UD_Icmovae
   UD_Icmovz
   UD_Icmovnz
   UD_Icmovbe
   UD_Icmova
   UD_Icmovs
   UD_Icmovns
   UD_Icmovp
   UD_Icmovnp
   UD_Icmovl
   UD_Icmovge
   UD_Icmovle
   UD_Icmovg
   UD_Icmp
   UD_Icmppd
   UD_Icmpps
   UD_Icmpsb
   UD_Icmpsw
   UD_Icmpsd
   UD_Icmpsq
   UD_Icmpss
   UD_Icmpxchg
   UD_Icmpxchg8b
   UD_Icmpxchg16b
   UD_Icomisd
   UD_Icomiss
   UD_Icpuid
   UD_Icvtdq2pd
   UD_Icvtdq2ps
   UD_Icvtpd2dq
   UD_Icvtpd2pi
   UD_Icvtpd2ps
   UD_Icvtpi2ps
   UD_Icvtpi2pd
   UD_Icvtps2dq
   UD_Icvtps2pi
   UD_Icvtps2pd
   UD_Icvtsd2si
   UD_Icvtsd2ss
   UD_Icvtsi2ss
   UD_Icvtss2si
   UD_Icvtss2sd
   UD_Icvttpd2pi
   UD_Icvttpd2dq
   UD_Icvttps2dq
   UD_Icvttps2pi
   UD_Icvttsd2si
   UD_Icvtsi2sd
   UD_Icvttss2si
   UD_Icwd
   UD_Icdq
   UD_Icqo
   UD_Idaa
   UD_Idas
   UD_Idec
   UD_Idiv
   UD_Idivpd
   UD_Idivps
   UD_Idivsd
   UD_Idivss
   UD_Iemms
   UD_Ienter
   UD_If2xm1
   UD_Ifabs
   UD_Ifadd
   UD_Ifaddp
   UD_Ifbld
   UD_Ifbstp
   UD_Ifchs
   UD_Ifclex
   UD_Ifcmovb
   UD_Ifcmove
   UD_Ifcmovbe
   UD_Ifcmovu
   UD_Ifcmovnb
   UD_Ifcmovne
   UD_Ifcmovnbe
   UD_Ifcmovnu
   UD_Ifucomi
   UD_Ifcom
   UD_Ifcom2
   UD_Ifcomp3
   UD_Ifcomi
   UD_Ifucomip
   UD_Ifcomip
   UD_Ifcomp
   UD_Ifcomp5
   UD_Ifcompp
   UD_Ifcos
   UD_Ifdecstp
   UD_Ifdiv
   UD_Ifdivp
   UD_Ifdivr
   UD_Ifdivrp
   UD_Ifemms
   UD_Iffree
   UD_Iffreep
   UD_Ificom
   UD_Ificomp
   UD_Ifild
   UD_Ifincstp
   UD_Ifninit
   UD_Ifiadd
   UD_Ifidivr
   UD_Ifidiv
   UD_Ifisub
   UD_Ifisubr
   UD_Ifist
   UD_Ifistp
   UD_Ifisttp
   UD_Ifld
   UD_Ifld1
   UD_Ifldl2t
   UD_Ifldl2e
   UD_Ifldpi
   UD_Ifldlg2
   UD_Ifldln2
   UD_Ifldz
   UD_Ifldcw
   UD_Ifldenv
   UD_Ifmul
   UD_Ifmulp
   UD_Ifimul
   UD_Ifnop
   UD_Ifpatan
   UD_Ifprem
   UD_Ifprem1
   UD_Ifptan
   UD_Ifrndint
   UD_Ifrstor
   UD_Ifnsave
   UD_Ifscale
   UD_Ifsin
   UD_Ifsincos
   UD_Ifsqrt
   UD_Ifstp
   UD_Ifstp1
   UD_Ifstp8
   UD_Ifstp9
   UD_Ifst
   UD_Ifnstcw
   UD_Ifnstenv
   UD_Ifnstsw
   UD_Ifsub
   UD_Ifsubp
   UD_Ifsubr
   UD_Ifsubrp
   UD_Iftst
   UD_Ifucom
   UD_Ifucomp
   UD_Ifucompp
   UD_Ifxam
   UD_Ifxch
   UD_Ifxch4
   UD_Ifxch7
   UD_Ifxrstor
   UD_Ifxsave
   UD_Ifxtract
   UD_Ifyl2x
   UD_Ifyl2xp1
   UD_Ihlt
   UD_Iidiv
   UD_Iin
   UD_Iimul
   UD_Iinc
   UD_Iinsb
   UD_Iinsw
   UD_Iinsd
   UD_Iint1
   UD_Iint3
   UD_Iint
   UD_Iinto
   UD_Iinvd
   UD_Iinvept
   UD_Iinvlpg
   UD_Iinvlpga
   UD_Iinvvpid
   UD_Iiretw
   UD_Iiretd
   UD_Iiretq
   UD_Ijo
   UD_Ijno
   UD_Ijb
   UD_Ijae
   UD_Ijz
   UD_Ijnz
   UD_Ijbe
   UD_Ija
   UD_Ijs
   UD_Ijns
   UD_Ijp
   UD_Ijnp
   UD_Ijl
   UD_Ijge
   UD_Ijle
   UD_Ijg
   UD_Ijcxz
   UD_Ijecxz
   UD_Ijrcxz
   UD_Ijmp
   UD_Ilahf
   UD_Ilar
   UD_Ilddqu
   UD_Ildmxcsr
   UD_Ilds
   UD_Ilea
   UD_Iles
   UD_Ilfs
   UD_Ilgs
   UD_Ilidt
   UD_Ilss
   UD_Ileave
   UD_Ilfence
   UD_Ilgdt
   UD_Illdt
   UD_Ilmsw
   UD_Ilock
   UD_Ilodsb
   UD_Ilodsw
   UD_Ilodsd
   UD_Ilodsq
   UD_Iloopne
   UD_Iloope
   UD_Iloop
   UD_Ilsl
   UD_Iltr
   UD_Imaskmovq
   UD_Imaxpd
   UD_Imaxps
   UD_Imaxsd
   UD_Imaxss
   UD_Imfence
   UD_Iminpd
   UD_Iminps
   UD_Iminsd
   UD_Iminss
   UD_Imonitor
   UD_Imontmul
   UD_Imov
   UD_Imovapd
   UD_Imovaps
   UD_Imovd
   UD_Imovhpd
   UD_Imovhps
   UD_Imovlhps
   UD_Imovlpd
   UD_Imovlps
   UD_Imovhlps
   UD_Imovmskpd
   UD_Imovmskps
   UD_Imovntdq
   UD_Imovnti
   UD_Imovntpd
   UD_Imovntps
   UD_Imovntq
   UD_Imovq
   UD_Imovsb
   UD_Imovsw
   UD_Imovsd
   UD_Imovsq
   UD_Imovss
   UD_Imovsx
   UD_Imovupd
   UD_Imovups
   UD_Imovzx
   UD_Imul
   UD_Imulpd
   UD_Imulps
   UD_Imulsd
   UD_Imulss
   UD_Imwait
   UD_Ineg
   UD_Inop
   UD_Inot
   UD_Ior
   UD_Iorpd
   UD_Iorps
   UD_Iout
   UD_Ioutsb
   UD_Ioutsw
   UD_Ioutsd
   UD_Ipacksswb
   UD_Ipackssdw
   UD_Ipackuswb
   UD_Ipaddb
   UD_Ipaddw
   UD_Ipaddd
   UD_Ipaddsb
   UD_Ipaddsw
   UD_Ipaddusb
   UD_Ipaddusw
   UD_Ipand
   UD_Ipandn
   UD_Ipavgb
   UD_Ipavgw
   UD_Ipcmpeqb
   UD_Ipcmpeqw
   UD_Ipcmpeqd
   UD_Ipcmpgtb
   UD_Ipcmpgtw
   UD_Ipcmpgtd
   UD_Ipextrb
   UD_Ipextrd
   UD_Ipextrq
   UD_Ipextrw
   UD_Ipinsrb
   UD_Ipinsrw
   UD_Ipinsrd
   UD_Ipinsrq
   UD_Ipmaddwd
   UD_Ipmaxsw
   UD_Ipmaxub
   UD_Ipminsw
   UD_Ipminub
   UD_Ipmovmskb
   UD_Ipmulhuw
   UD_Ipmulhw
   UD_Ipmullw
   UD_Ipop
   UD_Ipopa
   UD_Ipopad
   UD_Ipopfw
   UD_Ipopfd
   UD_Ipopfq
   UD_Ipor
   UD_Iprefetch
   UD_Iprefetchnta
   UD_Iprefetcht0
   UD_Iprefetcht1
   UD_Iprefetcht2
   UD_Ipsadbw
   UD_Ipshufw
   UD_Ipsllw
   UD_Ipslld
   UD_Ipsllq
   UD_Ipsraw
   UD_Ipsrad
   UD_Ipsrlw
   UD_Ipsrld
   UD_Ipsrlq
   UD_Ipsubb
   UD_Ipsubw
   UD_Ipsubd
   UD_Ipsubsb
   UD_Ipsubsw
   UD_Ipsubusb
   UD_Ipsubusw
   UD_Ipunpckhbw
   UD_Ipunpckhwd
   UD_Ipunpckhdq
   UD_Ipunpcklbw
   UD_Ipunpcklwd
   UD_Ipunpckldq
   UD_Ipi2fw
   UD_Ipi2fd
   UD_Ipf2iw
   UD_Ipf2id
   UD_Ipfnacc
   UD_Ipfpnacc
   UD_Ipfcmpge
   UD_Ipfmin
   UD_Ipfrcp
   UD_Ipfrsqrt
   UD_Ipfsub
   UD_Ipfadd
   UD_Ipfcmpgt
   UD_Ipfmax
   UD_Ipfrcpit1
   UD_Ipfrsqit1
   UD_Ipfsubr
   UD_Ipfacc
   UD_Ipfcmpeq
   UD_Ipfmul
   UD_Ipfrcpit2
   UD_Ipmulhrw
   UD_Ipswapd
   UD_Ipavgusb
   UD_Ipush
   UD_Ipusha
   UD_Ipushad
   UD_Ipushfw
   UD_Ipushfd
   UD_Ipushfq
   UD_Ipxor
   UD_Ircl
   UD_Ircr
   UD_Irol
   UD_Iror
   UD_Ircpps
   UD_Ircpss
   UD_Irdmsr
   UD_Irdpmc
   UD_Irdtsc
   UD_Irdtscp
   UD_Irepne
   UD_Irep
   UD_Iret
   UD_Iretf
   UD_Irsm
   UD_Irsqrtps
   UD_Irsqrtss
   UD_Isahf
   UD_Isalc
   UD_Isar
   UD_Ishl
   UD_Ishr
   UD_Isbb
   UD_Iscasb
   UD_Iscasw
   UD_Iscasd
   UD_Iscasq
   UD_Iseto
   UD_Isetno
   UD_Isetb
   UD_Isetae
   UD_Isetz
   UD_Isetnz
   UD_Isetbe
   UD_Iseta
   UD_Isets
   UD_Isetns
   UD_Isetp
   UD_Isetnp
   UD_Isetl
   UD_Isetge
   UD_Isetle
   UD_Isetg
   UD_Isfence
   UD_Isgdt
   UD_Ishld
   UD_Ishrd
   UD_Ishufpd
   UD_Ishufps
   UD_Isidt
   UD_Isldt
   UD_Ismsw
   UD_Isqrtps
   UD_Isqrtpd
   UD_Isqrtsd
   UD_Isqrtss
   UD_Istc
   UD_Istd
   UD_Istgi
   UD_Isti
   UD_Iskinit
   UD_Istmxcsr
   UD_Istosb
   UD_Istosw
   UD_Istosd
   UD_Istosq
   UD_Istr
   UD_Isub
   UD_Isubpd
   UD_Isubps
   UD_Isubsd
   UD_Isubss
   UD_Iswapgs
   UD_Isyscall
   UD_Isysenter
   UD_Isysexit
   UD_Isysret
   UD_Itest
   UD_Iucomisd
   UD_Iucomiss
   UD_Iud2
   UD_Iunpckhpd
   UD_Iunpckhps
   UD_Iunpcklps
   UD_Iunpcklpd
   UD_Iverr
   UD_Iverw
   UD_Ivmcall
   UD_Ivmclear
   UD_Ivmxon
   UD_Ivmptrld
   UD_Ivmptrst
   UD_Ivmlaunch
   UD_Ivmresume
   UD_Ivmxoff
   UD_Ivmread
   UD_Ivmwrite
   UD_Ivmrun
   UD_Ivmmcall
   UD_Ivmload
   UD_Ivmsave
   UD_Iwait
   UD_Iwbinvd
   UD_Iwrmsr
   UD_Ixadd
   UD_Ixchg
   UD_Ixgetbv
   UD_Ixlatb
   UD_Ixor
   UD_Ixorpd
   UD_Ixorps
   UD_Ixcryptecb
   UD_Ixcryptcbc
   UD_Ixcryptctr
   UD_Ixcryptcfb
   UD_Ixcryptofb
   UD_Ixrstor
   UD_Ixsave
   UD_Ixsetbv
   UD_Ixsha1
   UD_Ixsha256
   UD_Ixstore
   UD_Iaesdec
   UD_Iaesdeclast
   UD_Iaesenc
   UD_Iaesenclast
   UD_Iaesimc
   UD_Iaeskeygenassist
   UD_Ipclmulqdq
   UD_Igetsec
   UD_Imovdqa
   UD_Imaskmovdqu
   UD_Imovdq2q
   UD_Imovdqu
   UD_Imovq2dq
   UD_Ipaddq
   UD_Ipsubq
   UD_Ipmuludq
   UD_Ipshufhw
   UD_Ipshuflw
   UD_Ipshufd
   UD_Ipslldq
   UD_Ipsrldq
   UD_Ipunpckhqdq
   UD_Ipunpcklqdq
   UD_Iaddsubpd
   UD_Iaddsubps
   UD_Ihaddpd
   UD_Ihaddps
   UD_Ihsubpd
   UD_Ihsubps
   UD_Imovddup
   UD_Imovshdup
   UD_Imovsldup
   UD_Ipabsb
   UD_Ipabsw
   UD_Ipabsd
   UD_Ipshufb
   UD_Iphaddw
   UD_Iphaddd
   UD_Iphaddsw
   UD_Ipmaddubsw
   UD_Iphsubw
   UD_Iphsubd
   UD_Iphsubsw
   UD_Ipsignb
   UD_Ipsignd
   UD_Ipsignw
   UD_Ipmulhrsw
   UD_Ipalignr
   UD_Ipblendvb
   UD_Ipmuldq
   UD_Ipminsb
   UD_Ipminsd
   UD_Ipminuw
   UD_Ipminud
   UD_Ipmaxsb
   UD_Ipmaxsd
   UD_Ipmaxud
   UD_Ipmaxuw
   UD_Ipmulld
   UD_Iphminposuw
   UD_Iroundps
   UD_Iroundpd
   UD_Iroundss
   UD_Iroundsd
   UD_Iblendpd
   UD_Ipblendw
   UD_Iblendps
   UD_Iblendvpd
   UD_Iblendvps
   UD_Idpps
   UD_Idppd
   UD_Impsadbw
   UD_Iextractps
   UD_Iinsertps
   UD_Imovntdqa
   UD_Ipackusdw
   UD_Ipmovsxbw
   UD_Ipmovsxbd
   UD_Ipmovsxbq
   UD_Ipmovsxwd
   UD_Ipmovsxwq
   UD_Ipmovsxdq
   UD_Ipmovzxbw
   UD_Ipmovzxbd
   UD_Ipmovzxbq
   UD_Ipmovzxwd
   UD_Ipmovzxwq
   UD_Ipmovzxdq
   UD_Ipcmpeqq
   UD_Ipopcnt
   UD_Iptest
   UD_Ipcmpestri
   UD_Ipcmpestrm
   UD_Ipcmpgtq
   UD_Ipcmpistri
   UD_Ipcmpistrm
   UD_Imovbe
   UD_Icrc32
   UD_MAX_MNEMONIC_CODE
end enum

extern ud_mnemonics_str() as const zstring ptr

type ud_lval_ptr
   seg as ushort
   off as ulong
end type

union ud_lval
   sbyte as byte
   ubyte as ubyte
   sword as short
   uword as ushort
   sdword as long
   udword as ulong
   sqword as longint
   uqword as ulongint
   ptr as ud_lval_ptr
end union

type ud_operand
   as ud_type type
   size as ubyte
   base as ud_type
   index as ud_type
   scale as ubyte
   offset as ubyte
   lval as ud_lval
   _legacy as ulongint
   _oprcode as ubyte
end type

type ud
   inp_hook as function(byval as ud ptr) as long
   inp_file as FILE ptr
   inp_buf as const ubyte ptr
   inp_buf_size as uinteger
   inp_buf_index as uinteger
   inp_curr as ubyte
   inp_ctr as uinteger
   inp_sess(0 to 63) as ubyte
   inp_end as long
   translator as sub(byval as ud ptr)
   insn_offset as ulongint
   insn_hexcode as zstring * 64
   asm_buf as zstring ptr
   asm_buf_size as uinteger
   asm_buf_fill as uinteger
   asm_buf_int as zstring * 128
   sym_resolver as function(byval as ud ptr, byval addr as ulongint, byval offset as longint ptr) as const zstring ptr
   dis_mode as ubyte
   pc as ulongint
   vendor as ubyte
   mnemonic as ud_mnemonic_code
   operand(0 to 2) as ud_operand
   error as ubyte
   pfx_rex as ubyte
   pfx_seg as ubyte
   pfx_opr as ubyte
   pfx_adr as ubyte
   pfx_lock as ubyte
   pfx_str as ubyte
   pfx_rep as ubyte
   pfx_repe as ubyte
   pfx_repne as ubyte
   opr_mode as ubyte
   adr_mode as ubyte
   br_far as ubyte
   br_near as ubyte
   have_modrm as ubyte
   modrm as ubyte
   primary_opcode as ubyte
   user_opaque_data as any ptr
   itab_entry as any ptr 'ud_itab_entry
   le as any ptr 'ud_lookup_table_list_entry
end type

type ud_type_t as ud_type
type ud_mnemonic_code_t as ud_mnemonic_code
type ud_t as ud
type ud_operand_t as ud_operand

const UD_EOI = -1
const UD_INP_CACHE_SZ = 32
const UD_VENDOR_AMD = 0
const UD_VENDOR_INTEL = 1
const UD_VENDOR_ANY = 2

declare sub ud_init(byval as ud ptr)
declare sub ud_set_mode(byval as ud ptr, byval as ubyte)
declare sub ud_set_pc(byval as ud ptr, byval as ulongint)
declare sub ud_set_input_hook(byval as ud ptr, byval as function(byval as ud ptr) as long)
declare sub ud_set_input_buffer(byval as ud ptr, byval as const ubyte ptr, byval as uinteger)
declare sub ud_set_input_file(byval as ud ptr, byval as FILE ptr)
declare sub ud_set_vendor(byval as ud ptr, byval as ulong)
declare sub ud_set_syntax(byval as ud ptr, byval as sub(byval as ud ptr))
declare sub ud_input_skip(byval as ud ptr, byval as uinteger)
declare function ud_input_end(byval as const ud ptr) as long
declare function ud_decode(byval as ud ptr) as ulong
declare function ud_disassemble(byval as ud ptr) as ulong
declare sub ud_translate_intel(byval as ud ptr)
declare sub UD_SYN_INTEL alias "ud_translate_intel"(byval as ud ptr)
declare sub ud_translate_att(byval as ud ptr)
declare sub UD_SYN_ATT alias "ud_translate_att"(byval as ud ptr)
declare function ud_insn_asm(byval u as const ud ptr) as const zstring ptr
declare function ud_insn_ptr(byval u as const ud ptr) as const ubyte ptr
declare function ud_insn_off(byval as const ud ptr) as ulongint
declare function ud_insn_hex(byval as ud ptr) as const zstring ptr
declare function ud_insn_len(byval u as const ud ptr) as ulong
declare function ud_insn_opr(byval u as const ud ptr, byval n as ulong) as const ud_operand ptr
declare function ud_opr_is_sreg(byval opr as const ud_operand ptr) as long
declare function ud_opr_is_gpr(byval opr as const ud_operand ptr) as long
declare function ud_insn_mnemonic(byval u as const ud ptr) as ud_mnemonic_code
declare function ud_lookup_mnemonic(byval c as ud_mnemonic_code) as const zstring ptr
declare sub ud_set_user_opaque_data(byval as ud ptr, byval as any ptr)
declare function ud_get_user_opaque_data(byval as const ud ptr) as any ptr
declare function ud_insn_sext_imm(byval as const ud ptr, byval as const ud_operand ptr) as ulongint
declare sub ud_set_asm_buffer(byval u as ud ptr, byval buf as zstring ptr, byval size as uinteger)
declare sub ud_set_sym_resolver(byval u as ud ptr, byval resolver as function(byval as ud ptr, byval addr as ulongint, byval offset as longint ptr) as const zstring ptr)

end extern


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
haavДата: Четверг, 02.01.2020, 13:49 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Пришлось разбивать на два сообщения, юкоз лимитирует длину сообщения.

---------------------------------------------

А это простенький пример:

Код
#include ONCE "extern.bi"

dim as Byte bData(...) = {&h55 , &h48 , &h89 , &he5 , &h48 , &h81 , &hec , &h10 , &h12 ,_
&h00 , &h00 , &h89 , &hbd , &h0c , &hee , &hff , &hff , &h48 ,_
&h89 , &hb5 , &h00 , &hee , &hff , &hff , &hc7 , &h85 , &hcc ,_
&hf6 , &hff , &hff , &h00 , &h00 , &h00 , &h00 }

dim as Long iSize = Ubound(bData) +1

dim as ud_t ud_obj

ud_init ( @ud_obj )
'ud_set_input_file ( @ud_obj , stdin )
ud_set_input_buffer(@ud_obj , @bData(0) , iSize)
ud_set_mode ( @ud_obj , 64 )
ud_set_syntax ( @ud_obj , @UD_SYN_INTEL )

while ( ud_disassemble ( @ud_obj ))
   ? *ud_insn_asm ( @ud_obj )
wend

sleep


А это результат:

Цитата
push rbp
mov rbp, rsp
sub rsp, 0x1210
mov [rbp-0x11f4], edi
mov [rbp-0x1200], rsi
mov dword [rbp-0x934], 0x0


Бинарники библиотеки выкладывать не буду, там библиотека собирается элементарно.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
Форум » Библиотеки для FreeBasic » Другие библиотеки » UDIS86 (библиотека для дизассемблирования)
  • Страница 1 из 1
  • 1
Поиск: