最初由 林海雪原 发布
关于dump ,z我没有做,走到伪oep之后,所有要访问的段都要吧?
哪一处patch?
就是system的那段patch!
0054B000--BE 01000000 MOV ESI,1 ;ESI=1取出API,ESI=2重定位API
0054B005--B8 00005C00 MOV EAX,MultiTra.005C0000 ;IAT 檫始位址
0054B00A--A3 F4AF5400 MOV DWORD PTR DS:[54AFF4],EAX
0054B00F--BA 00104000 MOV EDX,MultiTra ;CODE 檫始位址
0054B014--803A E8 CMP BYTE PTR DS:[EDX],0E8 ;是否 CALL ??
0054B017--75 19 JNZ SHORT MultiTra.0054B032
0054B019--8B5A 01 MOV EBX,DWORD PTR DS:[EDX+1]
0054B01C--03DA ADD EBX,EDX
0054B01E--83C3 05 ADD EBX,5 ;?算正催的 CALL ADDR
0054B021--81FB 0000EA00 CMP EBX,0EA0000 ;是否 ASPR 解瘁位址??
0054B027--75 2C JNZ SHORT MultiTra.0054B055
0054B029--60 PUSHAD ;保存寄存器
0054B02A--8925 F0AF5400 MOV DWORD PTR DS:[54AFF0],ESP ;保存 ESP 值
0054B030--FFE2 JMP EDX ;咄入ASPR 解瘁
0054B032--66:813A FF25 CMP WORD PTR DS:[EDX],25FF ;是否 JMP [XX]?
0054B037--75 1C JNZ SHORT MultiTra.0054B055
0054B039--8B5A 02 MOV EBX,DWORD PTR DS:[EDX+2]
0054B03C--81FB 08D25400 CMP EBX,MultiTra.0054D208 ;是否在原?IAT位址惯?
0054B042--72 11 JB SHORT MultiTra.0054B055 ;小於 54D208?
0054B044--81FB 08E25400 CMP EBX,MultiTra.0054E208
0054B04A--77 09 JA SHORT MultiTra.0054B055 ;大於 54E208?
0054B04C--8B1B MOV EBX,DWORD PTR DS:[EBX]
0054B04E--83FE 01 CMP ESI,1 ;ESI=1??
0054B051--74 26 JE SHORT MultiTra.0054B079
0054B053--EB 4B JMP SHORT MultiTra.0054B0A0
0054B055--42 INC EDX ;??器 +1
0054B056--81FA 00505400 CMP EDX,MultiTra.00545000
0054B05C--72 B6 JB SHORT MultiTra.0054B014 ;CODE 段劫束?
0054B05E--EB FE JMP SHORT MultiTra.0054B05E ;Patch 劫束 中??
0054B060--90 NOP ;<=取得 API 返回?
0054B061--8BDA MOV EBX,EDX
0054B063--891D F8AF5400 MOV DWORD PTR DS:[54AFF8],EBX ;保存 API
0054B069--8B25 F0AF5400 MOV ESP,DWORD PTR DS:[54AFF0] ;取回 ESP
0054B06F--61 POPAD ;?原寄存器
0054B070--8B1D F8AF5400 MOV EBX,DWORD PTR DS:[54AFF8] ;取出 API
0054B076--EB D6 JMP SHORT MultiTra.0054B04E
0054B078--90 NOP
0054B079--8B0D F4AF5400 MOV ECX,DWORD PTR DS:[54AFF4]
0054B07F--B8 00005C00 MOV EAX,MultiTra.005C0000 ;IAT 檫始位址
0054B084--3918 CMP DWORD PTR DS:[EAX],EBX
0054B086--74 CD JE SHORT MultiTra.0054B055 ;是否重妖??
0054B088--05 04000000 ADD EAX,4
0054B08D--3BC1 CMP EAX,ECX
0054B08F--72 F3 JB SHORT MultiTra.0054B084
0054B091--8919 MOV DWORD PTR DS:[ECX],EBX ;保存 API
0054B093--8305 F4AF5400 04ADD DWORD PTR DS:[54AFF4],4 ;指到下? API ADDR
0054B09A--EB B9 JMP SHORT MultiTra.0054B055
0054B09C--90 NOP
0054B09D--90 NOP
0054B09E--90 NOP
0054B09F--90 NOP
0054B0A0--B8 00005C00 MOV EAX,MultiTra.005C0000 ;IAT 檫始位址
0054B0A5--3918 CMP DWORD PTR DS:[EAX],EBX
0054B0A7--74 0E JE SHORT MultiTra.0054B0B7 ;是否找到??
0054B0A9--05 04000000 ADD EAX,4
0054B0AE--3D 6C085C00 CMP EAX,MultiTra.005C086C ;IAT 劫束位址?
0054B0B3--72 F0 JB SHORT MultiTra.0054B0A5
0054B0B5--EB FE JMP SHORT MultiTra.0054B0B5
0054B0B7--66:C702 FF25 MOV WORD PTR DS:[EDX],25FF ;修正? JMP
0054B0BC--2D 00005C00 SUB EAX,MultiTra.005C0000
0054B0C1--05 00105C00 ADD EAX,5C1000 ;修正 OFFSET
0054B0C6--8942 02 MOV DWORD PTR DS:[EDX+2],EAX ;重定位 ADDR
0054B0C9--EB 8A JMP SHORT MultiTra.0054B055
0054B0CB--90 NOP
0054B0CC--90 NOP
0054B0CD--90 NOP
0054B0CE--90 NOP
0054B0CF--90 NOP ;排序 API
0054B0D0--B9 2C085C00 MOV ECX,MultiTra.005C082C ;IAT 劫束位址
0054B0D5--BE 00005C00 MOV ESI,MultiTra.005C0000 ;IAT 檫始位址
0054B0DA--8BFE MOV EDI,ESI
0054B0DC--8B06 MOV EAX,DWORD PTR DS:[ESI]
0054B0DE--8B1F MOV EBX,DWORD PTR DS:[EDI]
0054B0E0--3BC3 CMP EAX,EBX
0054B0E2--76 05 JBE SHORT MultiTra.0054B0E9
0054B0E4--93 XCHG EAX,EBX ;如果大於?互?
0054B0E5--8906 MOV DWORD PTR DS:[ESI],EAX
0054B0E7--891F MOV DWORD PTR DS:[EDI],EBX
0054B0E9--83C7 04 ADD EDI,4
0054B0EC--3BF9 CMP EDI,ECX
0054B0EE--76 EC JBE SHORT MultiTra.0054B0DC ;LOOP X1
0054B0F0--83C6 04 ADD ESI,4
0054B0F3--3BF1 CMP ESI,ECX
0054B0F5--76 E3 JBE SHORT MultiTra.0054B0DA ;LOOP X2
0054B0F7--EB FE JMP SHORT MultiTra.0054B0F7 ;排序劫束
我是按照这个打的patch并没有象你教程中那样改变过!当然里面的地址都替换了!在取esi=1时出现异常,单步跟踪发现是在进入asp解析后出现异常!!!!!不知道何解!jmp处 我是选择MOV EAX,700这个地方的!
BTW:期间没有下断点!