101 lines
3.5 KiB
Java
101 lines
3.5 KiB
Java
/* ###
|
|
* IP: GHIDRA
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
//Developer script
|
|
//@category Symbol
|
|
import ghidra.app.script.GhidraScript;
|
|
import ghidra.app.util.demangler.DemangledObject;
|
|
import ghidra.app.util.demangler.microsoft.MicrosoftDemangler;
|
|
|
|
public class MicrosoftDemanglerScript extends GhidraScript {
|
|
|
|
private MicrosoftDemangler demangler;
|
|
|
|
@Override
|
|
protected void run() throws Exception {
|
|
|
|
demangler = new MicrosoftDemangler();
|
|
|
|
// demangle("??$_LStrcoll@_W@std@@YAHPB_W000PBU_Collvec@@@Z");
|
|
|
|
demangle("??$?0G@?$allocator@U_Container_proxy@std@@@std@@QAE@ABV?$allocator@G@1@@Z");
|
|
|
|
/*
|
|
|
|
demangle("??0__non_rtti_object@@QAE@PBD@Z");
|
|
demangle("??0bad_cast@@AAE@PBQBD@Z");
|
|
demangle("??0bad_cast@@QAE@ABQBD@Z");
|
|
demangle("??0bad_cast@@QAE@ABV0@@Z");
|
|
demangle("??0bad_cast@@QAE@PBD@Z");
|
|
demangle("??0bad_typeid@@QAE@ABV0@@Z");
|
|
demangle("??0bad_typeid@@QAE@PBD@Z");
|
|
demangle("??0exception@@QAE@ABQBD@Z");
|
|
demangle("??0exception@@QAE@ABQBDH@Z");
|
|
demangle("??0exception@@QAE@ABV0@@Z");
|
|
demangle("??0exception@@QAE@XZ");
|
|
demangle("??1__non_rtti_object@@UAE@XZ");
|
|
demangle("??1bad_cast@@UAE@XZ");
|
|
demangle("??1bad_typeid@@UAE@XZ");
|
|
demangle("??1exception@@UAE@XZ");
|
|
demangle("??1type_info@@UAE@XZ");
|
|
demangle("??2@YAPAXI@Z");
|
|
demangle("??2@YAPAXIHPBDH@Z");
|
|
demangle("??3@YAXPAX@Z");
|
|
demangle("??4__non_rtti_object@@QAEAAV0@ABV0@@Z");
|
|
demangle("??4bad_cast@@QAEAAV0@ABV0@@Z");
|
|
demangle("??4bad_typeid@@QAEAAV0@ABV0@@Z");
|
|
demangle("??4exception@@QAEAAV0@ABV0@@Z");
|
|
demangle("??8type_info@@QBEHABV0@@Z");
|
|
demangle("??9type_info@@QBEHABV0@@Z");
|
|
demangle("??_7__non_rtti_object@@6B@");
|
|
demangle("??_7bad_cast@@6B@");
|
|
demangle("??_7bad_typeid@@6B@");
|
|
demangle("??_7exception@@6B@");
|
|
demangle("??_E__non_rtti_object@@UAEPAXI@Z");
|
|
demangle("??_Ebad_cast@@UAEPAXI@Z");
|
|
demangle("??_Ebad_typeid@@UAEPAXI@Z");
|
|
demangle("??_Eexception@@UAEPAXI@Z");
|
|
demangle("??_Fbad_cast@@QAEXXZ");
|
|
demangle("??_Fbad_typeid@@QAEXXZ");
|
|
demangle("??_G__non_rtti_object@@UAEPAXI@Z");
|
|
demangle("??_Gbad_cast@@UAEPAXI@Z");
|
|
demangle("??_Gbad_typeid@@UAEPAXI@Z");
|
|
demangle("??_Gexception@@UAEPAXI@Z");
|
|
demangle("??_U@YAPAXI@Z");
|
|
demangle("??_U@YAPAXIHPBDH@Z");
|
|
demangle("??_V@YAXPAX@Z");
|
|
demangle("?_query_new_handler@@YAP6AHI@ZXZ");
|
|
demangle("?_query_new_mode@@YAHXZ");
|
|
demangle("?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z");
|
|
demangle("?_set_new_mode@@YAHH@Z");
|
|
demangle("?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z");
|
|
demangle("?before@type_info@@QBEHABV1@@Z");
|
|
demangle("?name@type_info@@QBEPBDXZ");
|
|
demangle("?raw_name@type_info@@QBEPBDXZ");
|
|
demangle("?set_new_handler@@YAP6AXXZP6AXXZ@Z");
|
|
demangle("?set_terminate@@YAP6AXXZP6AXXZ@Z");
|
|
demangle("?set_unexpected@@YAP6AXXZP6AXXZ@Z");
|
|
demangle("?terminate@@YAXXZ");
|
|
demangle("?unexpected@@YAXXZ");
|
|
demangle("?what@exception@@UBEPBDXZ");
|
|
*/
|
|
}
|
|
|
|
private void demangle(String mangled) throws Exception {
|
|
DemangledObject demangled = demangler.demangle(mangled);
|
|
printf("magled %s\ndemangled %s", mangled, demangled);
|
|
}
|
|
}
|