009EC012 MOV EAX, DWORD PTR SS:[EBP-1198] //如果eax=0,到这 009EC018 MOV ECX, DWORD PTR DS:[EAX*4+A17758] 009EC01F MOV EDX, DWORD PTR SS:[EBP-146C] 009EC025 XOR EAX, EAX 009EC027 MOV AL, BYTE PTR DS:[ECX+EDX] //得到下一条指令的距离 009EC02A MOV ECX, DWORD PTR SS:[EBP-13AC] 009EC030 ADD ECX, EAX 009EC032 MOV DWORD PTR SS:[EBP-13AC], ECX //重新设置context
好,知道这些后,我们要对上段代码进行大修改。 下面是修改好的代码:
×××××× 009EBC88 PUSH ESP //下面代码修改401000开始的空间读写属性,使得可写。 009EBC89 PUSH 4 009EBC8B PUSH BMP.00578000 009EBC90 PUSH BMP.00401000 009EBC95 CALL DWORD PTR DS:[<&KERNEL32.VirtualPro>; kernel32.VirtualProtect 009EBC9B NOP 009EBC9F NOP 009EBCA0 MOV EAX, DWORD PTR DS:[500000] //[500000]中是原始int3表计数器 009EBCA5 MOV EAX, DWORD PTR DS:[EAX*4+401000] //401000开始放置int3原始表 009EBCAD TEST EAX, EAX 009EBCAF JE BMP.009EC045 //int3原始表到最后?是则结束。 009EBCB5 LEA EDX, DWORD PTR SS:[EBP-13AC] 009EBCBB INC EAX 009EBCBC MOV DWORD PTR DS:[EDX], EAX 009EBCBE INC DWORD PTR DS:[500000] 009EBCC4 NOP ××××××
009EBCCB NOP 009EBCCC MOV DWORD PTR SS:[EBP-1468], 0 009EBCD6 PUSH -1 009EBCD8 PUSH 4 009EBCDA LEA EDX, DWORD PTR SS:[EBP-13AC] ; 009EBCE0 PUSH EDX 009EBCE1 CALL BMP.009D4F90 ; 009EBCE6 ADD ESP, 0C 009EBCE9 MOV DWORD PTR SS:[EBP-1194], EAX ; 009EBCEF MOV EAX, DWORD PTR SS:[EBP-1194] 009EBCF5 XOR EDX, EDX 009EBCF7 MOV ECX, 10 009EBCFC DIV ECX ; 009EBCFE MOV DWORD PTR SS:[EBP-1198], EDX ; 009EBD04 MOV EDX, DWORD PTR SS:[EBP-13AC] ; 009EBD0A PUSH EDX 009EBD0B MOV EAX, DWORD PTR SS:[EBP-1198] ; 009EBD11 CALL DWORD PTR DS:[EAX*4+A15838] ; 009EBD18 ADD ESP, 4 009EBD1B MOV DWORD PTR SS:[EBP-1468], EAX ; 009EBD21 MOV DWORD PTR SS:[EBP-146C], 0 009EBD2B MOV ECX, DWORD PTR SS:[EBP-1198] 009EBD31 MOV EDX, DWORD PTR DS:[ECX*4+A176D4] 009EBD38 MOV DWORD PTR SS:[EBP-118C], EDX 009EBD3E MOV EAX, DWORD PTR SS:[EBP-146C] 009EBD44 CMP EAX, DWORD PTR SS:[EBP-118C] 009EBD4A JGE SHORT BMP.009EBDA8 009EBD4C MOV EAX, DWORD PTR SS:[EBP-118C] 009EBD52 SUB EAX, DWORD PTR SS:[EBP-146C] 009EBD58 CDQ 009EBD59 SUB EAX, EDX 009EBD5B SAR EAX, 1 009EBD5D MOV ECX, DWORD PTR SS:[EBP-146C] 009EBD63 ADD ECX, EAX 009EBD65 MOV DWORD PTR SS:[EBP-1470], ECX 009EBD6B MOV EDX, DWORD PTR SS:[EBP-1198] ; 009EBD71 MOV EAX, DWORD PTR DS:[EDX*4+A1768C] ; 009EBD78 MOV ECX, DWORD PTR SS:[EBP-1470] 009EBD7E MOV EDX, DWORD PTR SS:[EBP-1468] 009EBD84 CMP EDX, DWORD PTR DS:[EAX+ECX*4] 009EBD87 JBE SHORT BMP.009EBD9A 009EBD89 MOV EAX, DWORD PTR SS:[EBP-1470] 009EBD8F ADD EAX, 1 009EBD92 MOV DWORD PTR SS:[EBP-146C], EAX 009EBD98 JMP SHORT BMP.009EBDA6 009EBD9A MOV ECX, DWORD PTR SS:[EBP-1470] 009EBDA0 MOV DWORD PTR SS:[EBP-118C], ECX 009EBDA6 JMP SHORT BMP.009EBD3E 009EBDA8 NOP ; 009EBDA9 NOP 009EBDAA MOV EDX, DWORD PTR SS:[EBP-1198] 009EBDB0 MOV EAX, DWORD PTR DS:[EDX*4+A1768C] 009EBDB7 MOV ECX, DWORD PTR SS:[EBP-146C] 009EBDBD MOV EDX, DWORD PTR DS:[EAX+ECX*4] 009EBDC0 CMP EDX, DWORD PTR SS:[EBP-1468] 009EBDC6 JNZ BMP.009EBCA0 //这段代码我把它的位置朝前挪了,修改了跳转量 009EBDCC NOP 009EBDCD NOP
×××××× 009EBDCE MOV EAX, DWORD PTR DS:[500004] //符合条件的int3计数器 009EBDD3 LEA EDX, DWORD PTR SS:[EBP-13AC] 009EBDD9 MOV EDX, DWORD PTR DS:[EDX] 009EBDDB MOV DWORD PTR DS:[EAX*4+405F00], EDX //符合条件的int3地址从405F00开始放 009EBDE3 NOP
//下面这段代码是为了得到跳转类型而增加的,目的是得到009EBF75处我自编函数需要的东西 009EBDEA NOP 009EBDEB MOV EAX, BMP.0050000C //50000C中是计数器 009EBDF0 XOR ECX, ECX 009EBDF2 MOV DWORD PTR DS:[EAX], ECX //计数器置0 009EBDF4 MOV DWORD PTR DS:[EAX+4], ECX //context的ecx=0 009EBDF7 MOV DWORD PTR DS:[EAX+C], ECX //context的flag=0 009EBDFA INC ECX 009EBDFB MOV DWORD PTR DS:[EAX+8], ECX //context的ecx=1 009EBDFE MOV DWORD PTR DS:[EAX+10], ECX //flag的cf=1 009EBE01 MOV DWORD PTR DS:[EAX+14], 4 //pf=1 009EBE08 MOV DWORD PTR DS:[EAX+18], 40 //zf=1 009EBE0F MOV DWORD PTR DS:[EAX+1C], 80 //sf=1 009EBE16 MOV DWORD PTR DS:[EAX+20], 800 //of=1 009EBE1D LEA EAX, DWORD PTR SS:[EBP-1464] 009EBE23 MOV ECX, DWORD PTR DS:[50000C] 009EBE29 MOV EDX, DWORD PTR DS:[ECX*4+500010] 009EBE31 CMP ECX, 1 009EBE34 JG SHORT BMP.009EBE3E 009EBE36 MOV DWORD PTR DS:[EAX+AC], EDX 009EBE3C JMP SHORT BMP.009EBE44 009EBE3E MOV DWORD PTR DS:[EAX+C0], EDX 009EBE44 NOP ××××××
009EBE46 NOP 009EBE47 MOV EAX, DWORD PTR SS:[EBP-1198] 009EBE4D MOV ECX, DWORD PTR DS:[EAX*4+A17714] 009EBE54 MOV EDX, DWORD PTR SS:[EBP-146C] 009EBE5A XOR EAX, EAX 009EBE5C MOV AL, BYTE PTR DS:[ECX+EDX] ; 009EBE5F MOV DWORD PTR SS:[EBP-1488], EAX 009EBE65 MOV EAX, DWORD PTR SS:[EBP-1488] 009EBE6B CDQ 009EBE6C AND EDX, 0F 009EBE6F ADD EAX, EDX 009EBE71 SAR EAX, 4 009EBE74 MOV DWORD PTR SS:[EBP-1480], EAX 009EBE7A MOV ECX, DWORD PTR SS:[EBP-1488] 009EBE80 AND ECX, 8000000F 009EBE86 JNS SHORT BMP.009EBE8D 009EBE88 DEC ECX 009EBE89 OR ECX, FFFFFFF0 009EBE8C INC ECX 009EBE8D MOV DWORD PTR SS:[EBP-1484], ECX 009EBE93 MOV EDX, DWORD PTR SS:[EBP-1480] 009EBE99 CMP EDX, DWORD PTR SS:[EBP-1484] 009EBE9F JNZ SHORT BMP.009EBEBC 009EBEA1 MOV EAX, DWORD PTR SS:[EBP-1484] 009EBEA7 ADD EAX, 1 009EBEAA AND EAX, 8000000F 009EBEAF JNS SHORT BMP.009EBEB6 009EBEB1 DEC EAX 009EBEB2 OR EAX, FFFFFFF0 009EBEB5 INC EAX 009EBEB6 MOV DWORD PTR SS:[EBP-1484], EAX 009EBEBC MOV ECX, DWORD PTR SS:[EBP-1488] 009EBEC2 MOV EDX, DWORD PTR SS:[EBP-1480] 009EBEC8 MOV EAX, DWORD PTR DS:[ECX*4+A16ED0] 009EBECF XOR EAX, DWORD PTR DS:[EDX*4+A1125C] 009EBED6 MOV ECX, DWORD PTR SS:[EBP-1484] 009EBEDC XOR EAX, DWORD PTR DS:[ECX*4+A1125C] 009EBEE3 MOV DWORD PTR SS:[EBP-1478], EAX 009EBEE9 MOV EDX, DWORD PTR SS:[EBP-13A4] ; 009EBEEF AND EDX, 0FD7 009EBEF5 PUSH EDX 009EBEF6 MOV EAX, DWORD PTR SS:[EBP-1488] ; 009EBEFC MOVSX ECX, BYTE PTR DS:[EAX+A15730] 009EBF03 CALL DWORD PTR DS:[ECX*4+A15838] 009EBF0A ADD ESP, 4 009EBF0D MOV DWORD PTR SS:[EBP-1474], EAX 009EBF13 MOV EDX, DWORD PTR SS:[EBP-13B8] 009EBF19 PUSH EDX 009EBF1A MOV EAX, DWORD PTR SS:[EBP-1474] 009EBF20 PUSH EAX 009EBF21 CALL DWORD PTR SS:[EBP-1478] 009EBF27 ADD ESP, 8 009EBF2A PUSH EAX 009EBF2B MOV ECX, DWORD PTR SS:[EBP-1488] 009EBF31 MOVSX EDX, BYTE PTR DS:[ECX+A15730] 009EBF38 CALL DWORD PTR DS:[EDX*4+A15878] 009EBF3F ADD ESP, 4 009EBF42 MOV DWORD PTR SS:[EBP-147C], EAX 009EBF48 MOV EAX, DWORD PTR SS:[EBP-147C] 009EBF4E AND EAX, 1 009EBF51 NOP 009EBF52 NOP
上一页 1 2 3 4 下一页 |