Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- json j;
- std::vector<UINT64> v;
- mono_assembly_foreach((GFunc)AssemblyEnumerator, &v);
- for (auto& assembly : v) {
- auto image = mono_assembly_get_image((void*)assembly);
- if (!image)
- continue;
- auto name = mono_image_get_name(image);
- json assemblyDesc;
- assemblyDesc["assembly"] = (std::uintptr_t)assembly;
- assemblyDesc["image"] = (std::uintptr_t)image;
- assemblyDesc["name"] = std::string(name);
- auto tableInfo = mono_image_get_table_info(image, MonoMetaTableEnum::MONO_TABLE_TYPEDEF);
- if (!tableInfo)
- continue;
- auto infoCount = mono_table_info_get_rows(tableInfo);
- try {
- for (int i = 1; i < infoCount; i++) {
- auto monoClass = mono_class_get(image, MONO_TOKEN_TYPE_DEF | (i + 1));
- if (monoClass) {
- json classDesc;
- classDesc["name"] = std::string(mono_class_get_name(monoClass));
- classDesc["namespace"] = std::string(mono_class_get_namespace(monoClass));
- assemblyDesc["classes"].push_back(classDesc);
- }
- }
- }
- catch (...) {
- assemblyDesc["classes"] = "Exception";
- }
- j.push_back(assemblyDesc);
- }
- WriteJSON(j);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement