============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined myYield() LEA RSI,[.rodata:s_myYield_executed_00102000] ;= "myYield executed\n" MOV EDI,0x1 XOR EAX,EAX JMP .plt:LAB_00101030 ?? 66h f Actual src: static void myYield(JNIEnv* env, jclass cls) { printf("myYield executed\n"); } Predicted src: void my_shell(void) { printf("my_shell\n"); } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined gimp_curves_tool_key_press() PUSH R13 MOV R13,RDX PUSH R12 MOV R12,RSI PUSH RBP MOV RBP,RDI CALL gimp_curves_tool_get_type ;undefined gimp_curves_tool_get_type() MOV RDI,RBP MOV RSI,RAX CALL .plt:::g_type_check_instance_cast ;undefined g_type_check_instance_cast() CMP qword ptr [RBP + 0x58],0x0 JZ LAB_0024f7fd MOV RDI,qword ptr [RAX + 0x2c8] TEST RDI,RDI JZ LAB_0024f7fd MOV RSI,R12 CALL .plt:::gtk_widget_event ;undefined gtk_widget_event() TEST EAX,EAX JNZ LAB_0024f830 LAB_0024f7fd: CALL gimp_tool_get_type ;undefined gimp_tool_get_type() MOV RDI,qword ptr [.bss:gimp_curves_tool_parent_class] MOV RSI,RAX CALL .plt:::g_type_check_class_cast ;undefined g_type_check_class_cast() MOV RDX,R13 MOV RSI,R12 MOV RDI,RBP MOV RAX,qword ptr [RAX + 0xd8] POP RBP POP R12 POP R13 JMP RAX ?? 0Fh ;? -> 00841f0f ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_0024f830: POP RBP MOV EAX,0x1 POP R12 POP R13 RET ?? 0Fh Actual src: static gboolean gimp_curves_tool_key_press (GimpTool *tool, GdkEventKey *kevent, GimpDisplay *display) { GimpCurvesTool *c_tool = GIMP_CURVES_TOOL (tool); if (tool->display && c_tool->graph) { if (gtk_widget_event (c_tool->graph, (GdkEvent *) kevent)) return TRUE; } return GIMP_TOOL_CLASS (parent_class)->key_press (tool, kevent, display); } Predicted src: static gboolean gimp_tool_event_press (GtkWidget *widget, GdkEvent *event, GdkEvent *event) { GimpTool *tool = GIMP_TOOL (widget); if (tool->event_event) { if (tool->event_event) { gimp_tool_event (tool->event_event, event); return TRUE; } } return FALSE; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined Java_edu_umn_gis_mapscript_mapscriptJNI_webObj_1empty_1get() MOV RSI,qword ptr [RDX + 0x40] JMP .plt:JNU_NewStringNative ;undefined JNU_NewStringNative() ?? 0Fh Actual src: SWIGEXPORT jstring JNICALL Java_edu_umn_gis_mapscript_mapscriptJNI_webObj_1empty_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { jstring jresult = 0 ; webObj *arg1 = (webObj *) 0 ; char *result = 0 ; (void)jenv; (void)jcls; (void)jarg1_; arg1 = *(webObj **)&jarg1; result = (char *) ((arg1)->empty); { jresult = JNU_NewStringNative(jenv, result); } return jresult; } Predicted src: SWIGEXPORT jint JNICALL Java_edu_umn_gis_mapscript_mapscript_mapscript_mapscript_mapscript_mapscript_mapscript_1Obj_1getObjObj(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { jlong jresult = 0 ; struct layerObj *arg1 = (struct layerObj *) 0 ; char *result = 0 ; (void)jenv; (void)jcls; (void)jarg1_; arg1 = *(struct layerObj **)&jarg1; result = (char *) ((arg1)->getObjObj((char const *)arg1); *(char **)&jresult = result; return jresult; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined aom_sad_skip_32x64_c() ADD ESI,ESI ADD ECX,ECX MOV R8,RDI MOV R9D,0x20 MOVSXD R11,ESI MOV RDI,RDX MOVSXD R10,ECX XOR ESI,ESI NOP dword ptr [RAX + RAX*0x1] LAB_001479d0: XOR EDX,EDX NOP word ptr [RAX + RAX*0x1] LAB_001479d8: MOVZX ECX,byte ptr [RDI + RDX*0x1] MOVZX EAX,byte ptr [R8 + RDX*0x1] SUB EAX,ECX MOV ECX,EAX NEG ECX CMOVNS EAX,ECX ADD RDX,0x1 ADD ESI,EAX CMP RDX,0x20 JNZ LAB_001479d8 ADD R8,R11 ADD RDI,R10 SUB R9D,0x1 JNZ LAB_001479d0 LEA EAX,[RSI + RSI*0x1] RET ?? 66h f Actual src: sadMxN(32, 64); Predicted src: uint32_t arm_h128_32_32x32_c(uint32_t *dst, uint32_t *dst) { uint32_t *dst = (uint32_t *)dst; uint32_t *dst = (uint32_t *)dst; uint32_t i; for (i = 0; i < 4; i++) { dst[i] = src[i]; dst[i] = src[i]; } return dst; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined main() SUB RSP,0x8 XOR EAX,EAX CALL unitTestTEXT ;undefined unitTestTEXT() MOV EDI,EAX CALL .plt:::exit ;void exit(int __status) NOP word ptr CS:[RAX + RAX*0x1] Actual src: int main(int argc, char **argv){ int error; error = unitTestTEXT(); // error += unitTestNetADT((TEXT *)"ab (cd) fr- (ag-)"); // { TEXT txt[10]; txt[0] = 0x25; txt[1] = 0xd8; txt[2] = 0xaa; txt[3] = 0xd8; txt[4] = 0xb1; txt[5] = 0x0; // printf("TXT is %s\n",txt); // } exit(error); } Predicted src: int main(int argc, char **argv) { exit(EXIT_FAILURE); exit(EXIT_FAILURE); exit(EXIT_FAILURE); }