- A Framework for Rewriting DEX Files,Mainly for Android shell unpack,
- Find references to related fields
- Simple decompilation of Dex file
- ...
- Build in android studio with cmake
- Build in clion with cmake
There are usage examples in main.cpp or repairdex.cpp
lookup all class
for (const auto &class_data : mHeader->ClassDatas()) {
const char *class_name = class_data->GetClassDef()->ClassType()->GetStringId()->Data();
for (auto &direct_method : *class_data.get()->DirectMethods()) {
repairNopCode(direct_method->GetCodeItem());
}
for (auto &virtual_method: *class_data.get()->VirtualMethods()) {
repairNopCode(virtual_method->GetCodeItem());
}
}
lookup all method
for (const auto &class_data : mHeader->ClassDatas()) {
for (auto &direct_method : *class_data.get()->DirectMethods()) {
repairNopCode(direct_method->GetCodeItem());
}
for (auto &virtual_method: *class_data.get()->VirtualMethods()) {
repairNopCode(virtual_method->GetCodeItem());
}
}
or
for (const auto &methodItem : mHeader->MethodItems()) {
auto index = methodItem.first;
auto method_item = methodItem.second;
}
lookup all codeitem
for (const auto &codeItem : mHeader->CodeItems()) {
}
Modified from AOSP
https://android.googlesource.com/platform/art/+/master/dexlayout/
https://android.googlesource.com/platform/art/+/refs/heads/master/libdexfile/