Advertisement
maxkunes

Untitled

May 23rd, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. json j;
  2. std::vector<UINT64> v;
  3.  
  4. mono_assembly_foreach((GFunc)AssemblyEnumerator, &v);
  5.  
  6. for (auto& assembly : v) {
  7. auto image = mono_assembly_get_image((void*)assembly);
  8.  
  9. if (!image)
  10. continue;
  11.  
  12. auto name = mono_image_get_name(image);
  13.  
  14.  
  15. json assemblyDesc;
  16. assemblyDesc["assembly"] = (std::uintptr_t)assembly;
  17. assemblyDesc["image"] = (std::uintptr_t)image;
  18. assemblyDesc["name"] = std::string(name);
  19.  
  20.  
  21. auto tableInfo = mono_image_get_table_info(image, MonoMetaTableEnum::MONO_TABLE_TYPEDEF);
  22.  
  23. if (!tableInfo)
  24. continue;
  25.  
  26. auto infoCount = mono_table_info_get_rows(tableInfo);
  27.  
  28. try {
  29.  
  30. for (int i = 1; i < infoCount; i++) {
  31. auto monoClass = mono_class_get(image, MONO_TOKEN_TYPE_DEF | (i + 1));
  32.  
  33. if (monoClass) {
  34. json classDesc;
  35.  
  36. classDesc["name"] = std::string(mono_class_get_name(monoClass));
  37. classDesc["namespace"] = std::string(mono_class_get_namespace(monoClass));
  38.  
  39. assemblyDesc["classes"].push_back(classDesc);
  40. }
  41. }
  42. }
  43. catch (...) {
  44. assemblyDesc["classes"] = "Exception";
  45. }
  46.  
  47. j.push_back(assemblyDesc);
  48. }
  49.  
  50. WriteJSON(j);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement