Estoy buscando una biblioteca que desmonte el código x86 en algún tipo de modelo de objetos que luego pueda usar para escribir rutinas que analicen el código. No me interesa una biblioteca que convierta el código x86 en un desensamblador de texto. He encontrado más que algunos de ellos, pero no son tan útiles ya que quiero trabajar un poco sobre el código que desarmo. . Ah, y me gustaría que fuera. Código de red (preferible VB o C#).¿Hay alguna buena biblioteca de desensamblador VB/C# x86?
Respuesta
Reflector no funciona x86 hasta donde yo sé.
Su mejor opción es utilizar la interfaz COM o Scripting para OllyDbg o IDA Pro.
Recomendaría IDA Pro si puede pagarlo. IDA tiene una API muy rica, desarrollo activo y mucha documentación. Puedes ejecutarlo en modo autónomo, creo que usando el interruptor '-AS'. Consulte http://www.hex-rays.com/idapro/idadoc/417.htm para obtener más información sobre los argumentos de la línea de comando.
También me encontré con libdasm, pero nunca lo usé, así que no estoy seguro de lo bueno que es. libdasm se parece a C/C++, por lo que debería ser simple escribir un contenedor de API en C#.
He usado IDA Pro como desensamblador directo, pero no pensé en usarlo porque parecía que solo tenía automatización interna. ¿Es posible automatizarlo desde el exterior? Supongo que no estoy 100% en contra de trabajar por completo en IDA Pro, pero preferiría usar un lenguaje .Net si puedo. – panopticoncentral
Sí, puede ejecutarlo en modo autónomo y especificar el script IDC que desea ejecutar. También puede desarrollar utilizando la API C y las interfaces COM desde la API de complemento. Ese es probablemente el mejor puente de desmontaje y análisis que obtendrá. – kervin
Una vieja pregunta, pero si viene otra persona y está buscando una implementación 100% C# .NET en lugar de usar interoperabilidad, SharpDisasm proporciona un desensamblador x86/x86-64 para la sintaxis Intel y AT & T. Decodifica cada instrucción a un objeto que proporciona acceso a información de bajo nivel acerca de la instrucción (por ejemplo, tamaño de instrucción, número de operando y tipos, etc.).
SharpDisasm es un puerto C# completo del libudis86 C-library disassembler.
El desensamblador está expuesto a través de la clase SharpDisam.Disassembler
.
resultado del ejemplo proporcionado aplicación de consola:
C:\>echo a1 c9 fd ff ff a1 37 02 00 00 b8 37 02 00 00 b4 09 8a
25 09 00 00 00 8b 04 6d 85 ff ff ff 89 45 f0| disasmcli 32
00000000 a1 c9 fd ff ff mov eax, [0xfffffdc9]
00000005 a1 37 02 00 00 mov eax, [0x237]
0000000a b8 37 02 00 00 mov eax, 0x237
0000000f b4 09 mov ah, 0x9
00000011 8a 25 09 00 00 00 mov ah, [0x9]
00000017 8b 04 6d 85 ff ff ff mov eax, [ebp*2-0x7b]
0000001e 89 45 f0 mov [ebp-0x10], eax
C:\>echo 488b05f7ffffff67668b40f06766035e1048030425ffff
000067660344bef04c0384980000008048a10000000000800000 | disasmcli 64
0000000000000000 48 8b 05 f7 ff ff ff mov rax, [rip-0x9]
0000000000000007 67 66 8b 40 f0 mov ax, [eax-0x10]
000000000000000c 67 66 03 5e 10 add bx, [esi+0x10]
0000000000000011 48 03 04 25 ff ff 00 00 add rax, [0xffff]
0000000000000019 67 66 03 44 be f0 add ax, [esi+edi*4-0x10]
000000000000001f 4c 03 84 98 00 00 00 80 add r8, [rax+rbx*4-0x80000000]
0000000000000027 48 a1 00 00 00 00 00 80 00 00 mov rax, [0x800000000000]
Necromancing, como ha pasado bastante tiempo.
Sí, en realidad hay varios.
Capstone.NET es prácticamente completo de funciones (libcapsone-port ARM, ARM64 (también conocido como ARMv8/AArch64), M68K, Mips, PowerPC, Sparc, SystemZ, XCore, X86 (incluido X86_64).Es compatible con la mayoría de las extensiones de CPU modernas):
https://github.com/9ee1/Capstone.NET
http://www.capstone-engine.org/features.html
(licencia MIT)
Entonces, como ya se ha mencionado, hay SharpDisasm (libudis-puerto):
https://sharpdisasm.codeplex.com/
(Licencia BSD simplificado (BSD))
Luego está Reko (x86-Decompiler)
https://github.com/uxmal/reko
(GNU general de Pu Licencia BLIC)
Hay ElfSharp para leer archivos ELF:
https://github.com/konrad-kruczynski/elfsharp
(MIT Licencia & LLVM)
O leer el formato PE de esta manera:
http://code.cheesydesign.com/?p=572
O usando PETools:
https://github.com/jsok/PETools
(Licencia MIT)
Hay también una herramienta para inspeccionar los archivos lib:
https://github.com/BlazingHeart/SymbolExplorer
También hay una biblioteca x86 ensamblador:
https://code.google.com/p/managed-x86/
Y la función ELF hash
https://damieng.com/blog/2007/11/24/calculating-elf-32-in-c-and-net
Además, dispondrá de una página especial en wikibooks:
https://en.wikibooks.org/wiki/X86_Disassembly/Disassemblers_and_Decompilers
También está el muñeco de nieve-decompilador, que utiliza Capstone:
https://github.com/yegord/snowman
- 1. ¿Hay alguna buena biblioteca de gráficos de Javascript?
- 2. ¿Hay alguna buena biblioteca o control de JavaScript Markdown?
- 3. ¿Hay alguna buena biblioteca de análisis para .Net?
- 4. ¿Hay alguna buena biblioteca XPath para Delphi 2007 o superior?
- 5. Cualquier biblioteca de ensamblador de desensamblador Java x86 flexible orientada a objetos?
- 6. ¿Alguna buena biblioteca de dibujo PostScript?
- 7. ¿Cómo escribir un desensamblador?
- 8. ¿Hay una buena biblioteca de redes Java?
- 9. Linux Mach-O Desensamblador
- 10. ¿hay alguna buena fuente de antipatrones?
- 11. ¿Hay una buena biblioteca yaml para Android?
- 12. ¿Hay alguna biblioteca C++ XSLT?
- 13. ¿Hay alguna buena herramienta para examinar Makefiles?
- 14. ¿Hay alguna buena alternativa para Visio/PowerPoint?
- 15. ¿Hay alguna buena implementación genérica JPA DAO?
- 16. ¿Hay alguna buena alternativa a WebSVN?
- 17. ¿Alguna buena biblioteca para hacer pestañas de tearaway en Java?
- 18. ¿Hay alguna descripción de los íconos de desensamblador IL disponibles en algún lugar?
- 19. ¿Alguna buena biblioteca de navegación de fotos para Objective C?
- 20. ¿Hay alguna biblioteca de cliente php CalDav?
- 21. C/C++ - ¿Alguna buena biblioteca de servidor web?
- 22. ¿Alguna buena biblioteca para leer y escribir archivos csv?
- 23. ¿Hay una buena biblioteca de gráficos para Android?
- 24. ¿Hay alguna buena razón para usar Websockets fuera del navegador?
- 25. PHP buena biblioteca de registro?
- 26. ¿Hay una buena biblioteca de procesamiento de lenguaje natural?
- 27. ¿Hay una buena biblioteca de pluralización de cadenas para actionscript?
- 28. ¿Hay alguna biblioteca ActiveResource como para Java?
- 29. ¿Hay alguna biblioteca DECAPTCHA en .NET?
- 30. ¿Hay una buena biblioteca de diagramas para Python?
x86 nativo? o IL? –
Nativo x86. IL es fácil ... :-) – panopticoncentral
[Reflector] (http://www.red-gate.com/products/reflector/) es tu amigo. – Vadim