├── .gitignore
├── DAPI Injector
├── DAPI Injector.vcxproj
├── DAPI Injector.vcxproj.filters
└── Source
│ ├── Injector.cpp
│ ├── Injector.h
│ └── main.cpp
├── DAPI.sln
├── DAPI
├── DAPI.vcxproj
├── DAPI.vcxproj.filters
└── Source
│ ├── DLLMain.cpp
│ ├── Detours.cpp
│ ├── Detours.h
│ ├── DiabloStructs.h
│ ├── Game.h
│ ├── GameData.h
│ ├── Item.h
│ ├── Player.h
│ ├── Server.cpp
│ ├── Server.h
│ ├── Towner.h
│ └── Trigger.h
├── DAPIBackendCore
├── DAPIBackendCore.vcxproj
├── DAPIBackendCore.vcxproj.filters
├── DAPIProtoClient.cpp
└── DAPIProtoClient.h
├── DAPIFrontendClient
├── DAPIFrontendClient.vcxproj
├── DAPIFrontendClient.vcxproj.filters
├── ProtoClient.cpp
└── ProtoClient.h
├── DAPILIB
├── DAPILIB.vcxproj
├── DAPILIB.vcxproj.filters
└── source
│ ├── Command.cpp
│ ├── Command.h
│ ├── DAPI.h
│ ├── Enums.h
│ ├── Game.cpp
│ ├── Game.h
│ ├── GameData.h
│ ├── Item.cpp
│ ├── Item.h
│ ├── ItemData.h
│ ├── Missile.h
│ ├── MissileData.h
│ ├── Monster.h
│ ├── MonsterData.h
│ ├── Object.h
│ ├── ObjectData.h
│ ├── Player.cpp
│ ├── Player.h
│ ├── PlayerData.cpp
│ ├── PlayerData.h
│ ├── Portal.cpp
│ ├── Portal.h
│ ├── PortalData.h
│ ├── Quest.h
│ ├── QuestData.h
│ ├── Spell.cpp
│ ├── Spell.h
│ ├── Tile.cpp
│ ├── Tile.h
│ ├── TileData.h
│ ├── Towner.cpp
│ ├── Towner.h
│ ├── TownerData.h
│ ├── Trigger.h
│ └── TriggerData.h
├── ExampleAIClient
├── ExampleAIClient.vcxproj
├── ExampleAIClient.vcxproj.filters
└── main.cpp
├── Messages
├── Messages.vcxproj
├── Messages.vcxproj.filters
├── command.proto
├── data.proto
├── game.proto
├── generated
│ └── cpp
│ │ ├── command.pb.cc
│ │ ├── command.pb.h
│ │ ├── data.pb.cc
│ │ ├── data.pb.h
│ │ ├── game.pb.cc
│ │ ├── game.pb.h
│ │ ├── init.pb.cc
│ │ ├── init.pb.h
│ │ ├── message.pb.cc
│ │ └── message.pb.h
├── init.proto
├── message.proto
└── proto
│ └── protoc-3.6.0-win32
│ ├── bin
│ └── protoc.exe
│ ├── include
│ └── google
│ │ └── protobuf
│ │ ├── any.proto
│ │ ├── api.proto
│ │ ├── compiler
│ │ └── plugin.proto
│ │ ├── descriptor.proto
│ │ ├── duration.proto
│ │ ├── empty.proto
│ │ ├── field_mask.proto
│ │ ├── source_context.proto
│ │ ├── struct.proto
│ │ ├── timestamp.proto
│ │ ├── type.proto
│ │ └── wrappers.proto
│ └── readme.txt
├── New DAPI
├── New DAPI.vcxproj
└── New DAPI.vcxproj.filters
├── README
├── SFML-2.5.1
├── SFML.vcxproj
├── SFML.vcxproj.filters
├── include
│ └── SFML
│ │ ├── Config.hpp
│ │ ├── Network.hpp
│ │ └── Network
│ │ ├── IpAddress.hpp
│ │ ├── Packet.hpp
│ │ ├── Socket.hpp
│ │ ├── SocketHandle.hpp
│ │ ├── SocketSelector.hpp
│ │ ├── TcpListener.hpp
│ │ ├── TcpSocket.hpp
│ │ └── UdpSocket.hpp
├── license.md
├── readme.md
└── src
│ └── SFML
│ └── Network
│ ├── IpAddress.cpp
│ ├── Packet.cpp
│ ├── Socket.cpp
│ ├── SocketImpl.hpp
│ ├── SocketSelector.cpp
│ ├── TcpListener.cpp
│ ├── TcpSocket.cpp
│ ├── UdpSocket.cpp
│ ├── Unix
│ ├── SocketImpl.hpp
│ └── SocketImplUnix.cpp
│ └── Win32
│ ├── SFML_Winsock.hpp
│ ├── SocketImpl.hpp
│ └── SocketImplWin32.cpp
└── libprotobuf-lite
├── libprotobuf-lite.cmake
├── libprotobuf-lite.vcxproj
├── libprotobuf-lite.vcxproj.filters
└── src
├── Makefile.am
├── README.md
├── google
└── protobuf
│ ├── any.cc
│ ├── any.h
│ ├── any.pb.cc
│ ├── any.pb.h
│ ├── any.proto
│ ├── any_test.proto
│ ├── api.pb.cc
│ ├── api.pb.h
│ ├── api.proto
│ ├── arena.cc
│ ├── arena.h
│ ├── arena_impl.h
│ ├── arena_test_util.cc
│ ├── arena_test_util.h
│ ├── arenastring.cc
│ ├── arenastring.h
│ ├── compiler
│ ├── annotation_test_util.cc
│ ├── annotation_test_util.h
│ ├── code_generator.cc
│ ├── code_generator.h
│ ├── command_line_interface.cc
│ ├── command_line_interface.h
│ ├── command_line_interface_unittest.cc
│ ├── cpp
│ │ ├── cpp_bootstrap_unittest.cc
│ │ ├── cpp_enum.cc
│ │ ├── cpp_enum.h
│ │ ├── cpp_enum_field.cc
│ │ ├── cpp_enum_field.h
│ │ ├── cpp_extension.cc
│ │ ├── cpp_extension.h
│ │ ├── cpp_field.cc
│ │ ├── cpp_field.h
│ │ ├── cpp_file.cc
│ │ ├── cpp_file.h
│ │ ├── cpp_generator.cc
│ │ ├── cpp_generator.h
│ │ ├── cpp_helpers.cc
│ │ ├── cpp_helpers.h
│ │ ├── cpp_map_field.cc
│ │ ├── cpp_map_field.h
│ │ ├── cpp_message.cc
│ │ ├── cpp_message.h
│ │ ├── cpp_message_field.cc
│ │ ├── cpp_message_field.h
│ │ ├── cpp_message_layout_helper.h
│ │ ├── cpp_move_unittest.cc
│ │ ├── cpp_options.h
│ │ ├── cpp_padding_optimizer.cc
│ │ ├── cpp_padding_optimizer.h
│ │ ├── cpp_plugin_unittest.cc
│ │ ├── cpp_primitive_field.cc
│ │ ├── cpp_primitive_field.h
│ │ ├── cpp_service.cc
│ │ ├── cpp_service.h
│ │ ├── cpp_string_field.cc
│ │ ├── cpp_string_field.h
│ │ ├── cpp_test_bad_identifiers.proto
│ │ ├── cpp_test_large_enum_value.proto
│ │ ├── cpp_unittest.cc
│ │ ├── cpp_unittest.h
│ │ ├── cpp_unittest.inc
│ │ └── metadata_test.cc
│ ├── csharp
│ │ ├── csharp_bootstrap_unittest.cc
│ │ ├── csharp_doc_comment.cc
│ │ ├── csharp_doc_comment.h
│ │ ├── csharp_enum.cc
│ │ ├── csharp_enum.h
│ │ ├── csharp_enum_field.cc
│ │ ├── csharp_enum_field.h
│ │ ├── csharp_field_base.cc
│ │ ├── csharp_field_base.h
│ │ ├── csharp_generator.cc
│ │ ├── csharp_generator.h
│ │ ├── csharp_generator_unittest.cc
│ │ ├── csharp_helpers.cc
│ │ ├── csharp_helpers.h
│ │ ├── csharp_map_field.cc
│ │ ├── csharp_map_field.h
│ │ ├── csharp_message.cc
│ │ ├── csharp_message.h
│ │ ├── csharp_message_field.cc
│ │ ├── csharp_message_field.h
│ │ ├── csharp_names.h
│ │ ├── csharp_options.h
│ │ ├── csharp_primitive_field.cc
│ │ ├── csharp_primitive_field.h
│ │ ├── csharp_reflection_class.cc
│ │ ├── csharp_reflection_class.h
│ │ ├── csharp_repeated_enum_field.cc
│ │ ├── csharp_repeated_enum_field.h
│ │ ├── csharp_repeated_message_field.cc
│ │ ├── csharp_repeated_message_field.h
│ │ ├── csharp_repeated_primitive_field.cc
│ │ ├── csharp_repeated_primitive_field.h
│ │ ├── csharp_source_generator_base.cc
│ │ ├── csharp_source_generator_base.h
│ │ ├── csharp_wrapper_field.cc
│ │ └── csharp_wrapper_field.h
│ ├── importer.cc
│ ├── importer.h
│ ├── importer_unittest.cc
│ ├── java
│ │ ├── java_context.cc
│ │ ├── java_context.h
│ │ ├── java_doc_comment.cc
│ │ ├── java_doc_comment.h
│ │ ├── java_doc_comment_unittest.cc
│ │ ├── java_enum.cc
│ │ ├── java_enum.h
│ │ ├── java_enum_field.cc
│ │ ├── java_enum_field.h
│ │ ├── java_enum_field_lite.cc
│ │ ├── java_enum_field_lite.h
│ │ ├── java_enum_lite.cc
│ │ ├── java_enum_lite.h
│ │ ├── java_extension.cc
│ │ ├── java_extension.h
│ │ ├── java_extension_lite.cc
│ │ ├── java_extension_lite.h
│ │ ├── java_field.cc
│ │ ├── java_field.h
│ │ ├── java_file.cc
│ │ ├── java_file.h
│ │ ├── java_generator.cc
│ │ ├── java_generator.h
│ │ ├── java_generator_factory.cc
│ │ ├── java_generator_factory.h
│ │ ├── java_helpers.cc
│ │ ├── java_helpers.h
│ │ ├── java_lazy_message_field.cc
│ │ ├── java_lazy_message_field.h
│ │ ├── java_lazy_message_field_lite.cc
│ │ ├── java_lazy_message_field_lite.h
│ │ ├── java_map_field.cc
│ │ ├── java_map_field.h
│ │ ├── java_map_field_lite.cc
│ │ ├── java_map_field_lite.h
│ │ ├── java_message.cc
│ │ ├── java_message.h
│ │ ├── java_message_builder.cc
│ │ ├── java_message_builder.h
│ │ ├── java_message_builder_lite.cc
│ │ ├── java_message_builder_lite.h
│ │ ├── java_message_field.cc
│ │ ├── java_message_field.h
│ │ ├── java_message_field_lite.cc
│ │ ├── java_message_field_lite.h
│ │ ├── java_message_lite.cc
│ │ ├── java_message_lite.h
│ │ ├── java_name_resolver.cc
│ │ ├── java_name_resolver.h
│ │ ├── java_names.h
│ │ ├── java_options.h
│ │ ├── java_plugin_unittest.cc
│ │ ├── java_primitive_field.cc
│ │ ├── java_primitive_field.h
│ │ ├── java_primitive_field_lite.cc
│ │ ├── java_primitive_field_lite.h
│ │ ├── java_service.cc
│ │ ├── java_service.h
│ │ ├── java_shared_code_generator.cc
│ │ ├── java_shared_code_generator.h
│ │ ├── java_string_field.cc
│ │ ├── java_string_field.h
│ │ ├── java_string_field_lite.cc
│ │ └── java_string_field_lite.h
│ ├── js
│ │ ├── embed.cc
│ │ ├── js_generator.cc
│ │ ├── js_generator.h
│ │ ├── well_known_types
│ │ │ ├── any.js
│ │ │ ├── struct.js
│ │ │ └── timestamp.js
│ │ └── well_known_types_embed.h
│ ├── main.cc
│ ├── mock_code_generator.cc
│ ├── mock_code_generator.h
│ ├── objectivec
│ │ ├── objectivec_enum.cc
│ │ ├── objectivec_enum.h
│ │ ├── objectivec_enum_field.cc
│ │ ├── objectivec_enum_field.h
│ │ ├── objectivec_extension.cc
│ │ ├── objectivec_extension.h
│ │ ├── objectivec_field.cc
│ │ ├── objectivec_field.h
│ │ ├── objectivec_file.cc
│ │ ├── objectivec_file.h
│ │ ├── objectivec_generator.cc
│ │ ├── objectivec_generator.h
│ │ ├── objectivec_helpers.cc
│ │ ├── objectivec_helpers.h
│ │ ├── objectivec_helpers_unittest.cc
│ │ ├── objectivec_map_field.cc
│ │ ├── objectivec_map_field.h
│ │ ├── objectivec_message.cc
│ │ ├── objectivec_message.h
│ │ ├── objectivec_message_field.cc
│ │ ├── objectivec_message_field.h
│ │ ├── objectivec_oneof.cc
│ │ ├── objectivec_oneof.h
│ │ ├── objectivec_primitive_field.cc
│ │ └── objectivec_primitive_field.h
│ ├── package_info.h
│ ├── parser.cc
│ ├── parser.h
│ ├── parser_unittest.cc
│ ├── php
│ │ ├── php_generator.cc
│ │ └── php_generator.h
│ ├── plugin.cc
│ ├── plugin.h
│ ├── plugin.pb.cc
│ ├── plugin.pb.h
│ ├── plugin.proto
│ ├── python
│ │ ├── python_generator.cc
│ │ ├── python_generator.h
│ │ └── python_plugin_unittest.cc
│ ├── ruby
│ │ ├── ruby_generated_code.proto
│ │ ├── ruby_generated_code_pb.rb
│ │ ├── ruby_generator.cc
│ │ ├── ruby_generator.h
│ │ └── ruby_generator_unittest.cc
│ ├── subprocess.cc
│ ├── subprocess.h
│ ├── test_plugin.cc
│ ├── zip_output_unittest.sh
│ ├── zip_writer.cc
│ └── zip_writer.h
│ ├── descriptor.cc
│ ├── descriptor.h
│ ├── descriptor.pb.cc
│ ├── descriptor.pb.h
│ ├── descriptor.proto
│ ├── descriptor_database.cc
│ ├── descriptor_database.h
│ ├── duration.pb.cc
│ ├── duration.pb.h
│ ├── duration.proto
│ ├── dynamic_message.cc
│ ├── dynamic_message.h
│ ├── empty.pb.cc
│ ├── empty.pb.h
│ ├── empty.proto
│ ├── extension_set.cc
│ ├── extension_set.h
│ ├── extension_set_heavy.cc
│ ├── field_mask.pb.cc
│ ├── field_mask.pb.h
│ ├── field_mask.proto
│ ├── generated_enum_reflection.h
│ ├── generated_enum_util.h
│ ├── generated_message_reflection.cc
│ ├── generated_message_reflection.h
│ ├── generated_message_table_driven.cc
│ ├── generated_message_table_driven.h
│ ├── generated_message_table_driven_lite.cc
│ ├── generated_message_table_driven_lite.h
│ ├── generated_message_util.cc
│ ├── generated_message_util.h
│ ├── has_bits.h
│ ├── implicit_weak_message.cc
│ ├── implicit_weak_message.h
│ ├── inlined_string_field.h
│ ├── io
│ ├── coded_stream.cc
│ ├── coded_stream.h
│ ├── coded_stream_inl.h
│ ├── gzip_stream.cc
│ ├── gzip_stream_unittest.sh
│ ├── package_info.h
│ ├── printer.cc
│ ├── printer.h
│ ├── strtod.cc
│ ├── strtod.h
│ ├── tokenizer.cc
│ ├── tokenizer.h
│ ├── zero_copy_stream.cc
│ ├── zero_copy_stream.h
│ ├── zero_copy_stream_impl.cc
│ ├── zero_copy_stream_impl.h
│ ├── zero_copy_stream_impl_lite.cc
│ └── zero_copy_stream_impl_lite.h
│ ├── map.h
│ ├── map_entry.h
│ ├── map_entry_lite.h
│ ├── map_field.cc
│ ├── map_field.h
│ ├── map_field_inl.h
│ ├── map_field_lite.h
│ ├── map_lite_unittest.proto
│ ├── map_proto2_unittest.proto
│ ├── map_test_util_impl.h
│ ├── map_type_handler.h
│ ├── map_unittest.proto
│ ├── message.cc
│ ├── message.h
│ ├── message_lite.cc
│ ├── message_lite.h
│ ├── message_unittest.inc
│ ├── metadata.h
│ ├── metadata_lite.h
│ ├── package_info.h
│ ├── reflection.h
│ ├── reflection_internal.h
│ ├── reflection_ops.cc
│ ├── reflection_ops.h
│ ├── repeated_field.cc
│ ├── repeated_field.h
│ ├── service.cc
│ ├── service.h
│ ├── source_context.pb.cc
│ ├── source_context.pb.h
│ ├── source_context.proto
│ ├── struct.pb.cc
│ ├── struct.pb.h
│ ├── struct.proto
│ ├── stubs
│ ├── bytestream.cc
│ ├── bytestream.h
│ ├── callback.h
│ ├── casts.h
│ ├── common.cc
│ ├── common.h
│ ├── fastmem.h
│ ├── hash.h
│ ├── int128.cc
│ ├── int128.h
│ ├── io_win32.cc
│ ├── io_win32.h
│ ├── logging.h
│ ├── macros.h
│ ├── map_util.h
│ ├── mathlimits.cc
│ ├── mathlimits.h
│ ├── mathutil.h
│ ├── mutex.h
│ ├── once.h
│ ├── platform_macros.h
│ ├── port.h
│ ├── singleton.h
│ ├── status.cc
│ ├── status.h
│ ├── status_macros.h
│ ├── statusor.cc
│ ├── statusor.h
│ ├── stl_util.h
│ ├── stringpiece.cc
│ ├── stringpiece.h
│ ├── stringprintf.cc
│ ├── stringprintf.h
│ ├── structurally_valid.cc
│ ├── strutil.cc
│ ├── strutil.h
│ ├── substitute.cc
│ ├── substitute.h
│ ├── template_util.h
│ ├── time.cc
│ └── time.h
│ ├── test_messages_proto2.proto
│ ├── test_messages_proto3.proto
│ ├── test_util.inc
│ ├── testdata
│ ├── bad_utf8_string
│ ├── golden_message
│ ├── golden_message_maps
│ ├── golden_message_oneof_implemented
│ ├── golden_message_proto3
│ ├── golden_packed_fields_message
│ ├── map_test_data.txt
│ ├── text_format_unittest_data.txt
│ ├── text_format_unittest_data_oneof_implemented.txt
│ ├── text_format_unittest_data_pointy.txt
│ ├── text_format_unittest_data_pointy_oneof.txt
│ ├── text_format_unittest_extensions_data.txt
│ └── text_format_unittest_extensions_data_pointy.txt
│ ├── testing
│ ├── file.cc
│ └── file.h
│ ├── text_format.cc
│ ├── text_format.h
│ ├── timestamp.pb.cc
│ ├── timestamp.pb.h
│ ├── timestamp.proto
│ ├── type.pb.cc
│ ├── type.pb.h
│ ├── type.proto
│ ├── unittest.proto
│ ├── unittest_arena.proto
│ ├── unittest_custom_options.proto
│ ├── unittest_drop_unknown_fields.proto
│ ├── unittest_embed_optimize_for.proto
│ ├── unittest_empty.proto
│ ├── unittest_enormous_descriptor.proto
│ ├── unittest_import.proto
│ ├── unittest_import_lite.proto
│ ├── unittest_import_public.proto
│ ├── unittest_import_public_lite.proto
│ ├── unittest_lazy_dependencies.proto
│ ├── unittest_lazy_dependencies_custom_option.proto
│ ├── unittest_lazy_dependencies_enum.proto
│ ├── unittest_lite.proto
│ ├── unittest_lite_imports_nonlite.proto
│ ├── unittest_mset.proto
│ ├── unittest_mset_wire_format.proto
│ ├── unittest_no_arena.proto
│ ├── unittest_no_arena_import.proto
│ ├── unittest_no_arena_lite.proto
│ ├── unittest_no_field_presence.proto
│ ├── unittest_no_generic_services.proto
│ ├── unittest_optimize_for.proto
│ ├── unittest_preserve_unknown_enum.proto
│ ├── unittest_preserve_unknown_enum2.proto
│ ├── unittest_proto3.proto
│ ├── unittest_proto3_arena.proto
│ ├── unittest_proto3_arena_lite.proto
│ ├── unittest_proto3_lite.proto
│ ├── unittest_well_known_types.proto
│ ├── unknown_field_set.cc
│ ├── unknown_field_set.h
│ ├── util
│ ├── delimited_message_util.cc
│ ├── delimited_message_util.h
│ ├── field_comparator.cc
│ ├── field_comparator.h
│ ├── field_mask_util.cc
│ ├── field_mask_util.h
│ ├── internal
│ │ ├── constants.h
│ │ ├── datapiece.cc
│ │ ├── datapiece.h
│ │ ├── default_value_objectwriter.cc
│ │ ├── default_value_objectwriter.h
│ │ ├── error_listener.cc
│ │ ├── error_listener.h
│ │ ├── field_mask_utility.cc
│ │ ├── field_mask_utility.h
│ │ ├── json_escaping.cc
│ │ ├── json_escaping.h
│ │ ├── json_objectwriter.cc
│ │ ├── json_objectwriter.h
│ │ ├── json_stream_parser.cc
│ │ ├── json_stream_parser.h
│ │ ├── location_tracker.h
│ │ ├── object_location_tracker.h
│ │ ├── object_source.h
│ │ ├── object_writer.cc
│ │ ├── object_writer.h
│ │ ├── proto_writer.cc
│ │ ├── proto_writer.h
│ │ ├── protostream_objectsource.cc
│ │ ├── protostream_objectsource.h
│ │ ├── protostream_objectwriter.cc
│ │ ├── protostream_objectwriter.h
│ │ ├── structured_objectwriter.h
│ │ ├── testdata
│ │ │ ├── anys.proto
│ │ │ ├── books.proto
│ │ │ ├── default_value.proto
│ │ │ ├── default_value_test.proto
│ │ │ ├── field_mask.proto
│ │ │ ├── maps.proto
│ │ │ ├── oneofs.proto
│ │ │ ├── proto3.proto
│ │ │ ├── struct.proto
│ │ │ ├── timestamp_duration.proto
│ │ │ └── wrappers.proto
│ │ ├── type_info.cc
│ │ ├── type_info.h
│ │ ├── type_info_test_helper.cc
│ │ ├── type_info_test_helper.h
│ │ ├── utility.cc
│ │ └── utility.h
│ ├── json_format_proto3.proto
│ ├── json_util.cc
│ ├── json_util.h
│ ├── message_differencer.cc
│ ├── message_differencer.h
│ ├── message_differencer_unittest.proto
│ ├── package_info.h
│ ├── time_util.cc
│ ├── time_util.h
│ ├── type_resolver.h
│ ├── type_resolver_util.cc
│ └── type_resolver_util.h
│ ├── wire_format.cc
│ ├── wire_format.h
│ ├── wire_format_lite.cc
│ ├── wire_format_lite.h
│ ├── wire_format_lite_inl.h
│ ├── wrappers.pb.cc
│ ├── wrappers.pb.h
│ └── wrappers.proto
├── libprotobuf-lite.map
├── libprotobuf.map
└── libprotoc.map
/.gitignore:
--------------------------------------------------------------------------------
1 | *.user
2 | *.sdf
3 | *.suo
4 | *.log
5 | Debug
6 | Release
7 | *.VC.db
8 | *.VC.opendb
9 | .vs
10 |
11 | NiteKat/
12 |
13 |
--------------------------------------------------------------------------------
/DAPI Injector/DAPI Injector.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;ipp;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 | Source Files
23 |
24 |
25 |
26 |
27 | Header Files
28 |
29 |
30 |
--------------------------------------------------------------------------------
/DAPI Injector/Source/Injector.cpp:
--------------------------------------------------------------------------------
1 | #include "Injector.h"
2 |
3 | int inject()
4 | {
5 | bool windowFound = true;
6 | auto gameWindow = FindWindowA(NULL, "Diablo");
7 | if (!gameWindow)
8 | return 1;
9 |
10 | auto dll_path = "DAPI.dll";
11 | DWORD processID;
12 | DWORD hLibModule;
13 | GetWindowThreadProcessId(gameWindow, &processID);
14 | if (!processID)
15 | return 2;
16 |
17 | auto process = OpenProcess(PROCESS_ALL_ACCESS, false, processID);
18 | if (!process)
19 | return 3;
20 |
21 | auto vae_return = VirtualAllocEx(process, NULL, sizeof(dll_path), MEM_COMMIT, PAGE_READWRITE);
22 | if (!vae_return)
23 | return 4;
24 |
25 | if (!WriteProcessMemory(process, vae_return, (void*)dll_path, sizeof(dll_path), NULL))
26 | return 5;
27 |
28 | auto hKernel32 = GetModuleHandleA("Kernel32");
29 | HANDLE thread;
30 | thread = CreateRemoteThread(process, NULL, 0, (LPTHREAD_START_ROUTINE)GetProcAddress(hKernel32, "LoadLibraryA"), vae_return, 0, NULL);
31 | WaitForSingleObject(thread, INFINITE);
32 | GetExitCodeThread(thread, &hLibModule);
33 |
34 | CloseHandle(thread);
35 | VirtualFreeEx(process, vae_return, sizeof(dll_path), MEM_RELEASE);
36 | return 0;
37 | }
--------------------------------------------------------------------------------
/DAPI Injector/Source/Injector.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 |
5 | int inject();
--------------------------------------------------------------------------------
/DAPI/DAPI.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;ipp;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 | Source Files
23 |
24 |
25 | Source Files
26 |
27 |
28 |
29 |
30 | Header Files
31 |
32 |
33 | Header Files
34 |
35 |
36 | Header Files
37 |
38 |
39 | Header Files
40 |
41 |
42 | Header Files
43 |
44 |
45 | Header Files
46 |
47 |
48 | Header Files
49 |
50 |
51 | Header Files
52 |
53 |
54 | Header Files
55 |
56 |
57 |
--------------------------------------------------------------------------------
/DAPI/Source/Detours.cpp:
--------------------------------------------------------------------------------
1 | #include "Detours.h"
2 |
3 | void PlaceDetour(DWORD dwAddressToPatch, DWORD dwDetourAddress, DWORD dwPadSize, BOOL bFlag)
4 | {
5 | DWORD dwOldProtect = NULL;
6 |
7 | VirtualProtect((LPVOID)dwAddressToPatch, (dwPadSize + 5), PAGE_EXECUTE_READWRITE, &dwOldProtect);
8 |
9 | if (bFlag) {
10 | *(BYTE*)(dwAddressToPatch) = 0xE9;
11 | }
12 | else
13 | {
14 | *(BYTE*)(dwAddressToPatch) = 0XE8;
15 | }
16 | *(DWORD*)(dwAddressToPatch + 1) = ((dwDetourAddress - dwAddressToPatch) - 5);
17 | for (DWORD i = dwPadSize; i > 0; i--)
18 | {
19 | *(BYTE*)(dwAddressToPatch + 5 + i) = 0x90;
20 | }
21 |
22 | VirtualProtect((LPVOID)dwAddressToPatch, (dwPadSize + 5), dwOldProtect, &dwOldProtect);
23 | }
24 |
25 | void Patch(DWORD dst, const char* src, int size)
26 | {
27 | //return;
28 | DWORD oldprotect;
29 | VirtualProtect((LPVOID)dst, size, PAGE_EXECUTE_READWRITE, &oldprotect);
30 | memcpy((LPVOID)dst, src, size);
31 | VirtualProtect((LPVOID)dst, size, oldprotect, &oldprotect);
32 | }
--------------------------------------------------------------------------------
/DAPI/Source/Detours.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #define WIN32_LEAN_AND_MEAN
4 |
5 | #include
6 | #include
7 |
8 | void PlaceDetour(DWORD dwAddressToPatch, DWORD dwDetourAddress, DWORD dwPadSize, BOOL bFlag);
9 |
10 | void Patch(DWORD dst, const char* src, int size);
--------------------------------------------------------------------------------
/DAPI/Source/Game.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "Server.h"
4 |
5 | namespace DAPI
6 | {
7 | struct Game
8 | {
9 | Server server;
10 | };
11 | }
--------------------------------------------------------------------------------
/DAPI/Source/GameData.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include