-
-
[旧帖] [求助]菜鸟问个OEP修复的问题,看看这样补对不对? 0.00雪花
-
发表于: 2008-12-28 16:21 1964
-
手里有个小软件,Themida v1.8.2.0+的壳,学着手脱。
看着大牛们的文章,我结果来到如下代码:
00401FDD |. 6A 02 PUSH 2 注:明显上面的部分被偷了
00401FDF |. FF15 80764100 CALL DWORD PTR DS:[<&MSVCRTD.__set_app_t>; MSVCRTD.__set_app_type
00401FE5 |. 83C4 04 ADD ESP,4
00401FE8 |. C705 C0684100>MOV DWORD PTR DS:[4168C0],-1
00401FF2 |. A1 C0684100 MOV EAX,DWORD PTR DS:[4168C0]
00401FF7 |. A3 D0684100 MOV DWORD PTR DS:[4168D0],EAX
00401FFC |. FF15 7C764100 CALL DWORD PTR DS:[<&MSVCRTD.__p__fmode>>; MSVCRTD.__p__fmode
于是我找了个无壳程序:
00401FB1 |. 55 PUSH EBP
00401FB1 |. 8BEC MOV EBP,ESP
00401FB3 |. 6A FF PUSH -1
00401FB5 |. 68 60544100 PUSH sun_key.00415460
00401FBA |. 68 18224000 PUSH <JMP.&MSVCRTD._except_handler3> ; SE 处理程序安装
00401FBF |. 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
00401FC5 |. 50 PUSH EAX
00401FC6 |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP
00401FCD |. 83C4 94 ADD ESP,-6C 注:发现有的是68,怎么判断是6C?68?
00401FD0 |. 53 PUSH EBX
00401FD1 |. 56 PUSH ESI
00401FD2 |. 57 PUSH EDI
00401FD3 |. 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP
00401FD6 |. C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0
00401FDD |. 6A 02 PUSH 2 注:在这上面部分是被偷的,二进制复制到程序
00401FDF |. FF15 80764100 CALL DWORD PTR DS:[<&MSVCRTD.__set_app_t>; MSVCRTD.__set_app_type
00401FE5 |. 83C4 04 ADD ESP,4
00401FE8 |. C705 C0684100>MOV DWORD PTR DS:[4168C0],-1
这2个PUSH改的对吗?
这是无壳程序的
00401FB5 |. 68 60544100 PUSH sun_key.00415460
00401FBA |. 68 18224000 PUSH <JMP.&MSVCRTD._except_handler3> ; SE 处理程序安装
我把脱壳堆栈窗口下拉,找到:
0012FF80 0012FFE0 Pointer to next SEH record
0012FF84 00401E84 SE handler ; 注:这个是SE处理程序安装
0012FF88 004040F0 SearchRep.004040F0 ; 注:这个是上面那个PUSH
0012FF8C FFFFFFFF
如果对的话,还需要改什么不?
看着大牛们的文章,我结果来到如下代码:
00401FDD |. 6A 02 PUSH 2 注:明显上面的部分被偷了
00401FDF |. FF15 80764100 CALL DWORD PTR DS:[<&MSVCRTD.__set_app_t>; MSVCRTD.__set_app_type
00401FE5 |. 83C4 04 ADD ESP,4
00401FE8 |. C705 C0684100>MOV DWORD PTR DS:[4168C0],-1
00401FF2 |. A1 C0684100 MOV EAX,DWORD PTR DS:[4168C0]
00401FF7 |. A3 D0684100 MOV DWORD PTR DS:[4168D0],EAX
00401FFC |. FF15 7C764100 CALL DWORD PTR DS:[<&MSVCRTD.__p__fmode>>; MSVCRTD.__p__fmode
于是我找了个无壳程序:
00401FB1 |. 55 PUSH EBP
00401FB1 |. 8BEC MOV EBP,ESP
00401FB3 |. 6A FF PUSH -1
00401FB5 |. 68 60544100 PUSH sun_key.00415460
00401FBA |. 68 18224000 PUSH <JMP.&MSVCRTD._except_handler3> ; SE 处理程序安装
00401FBF |. 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
00401FC5 |. 50 PUSH EAX
00401FC6 |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP
00401FCD |. 83C4 94 ADD ESP,-6C 注:发现有的是68,怎么判断是6C?68?
00401FD0 |. 53 PUSH EBX
00401FD1 |. 56 PUSH ESI
00401FD2 |. 57 PUSH EDI
00401FD3 |. 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP
00401FD6 |. C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0
00401FDD |. 6A 02 PUSH 2 注:在这上面部分是被偷的,二进制复制到程序
00401FDF |. FF15 80764100 CALL DWORD PTR DS:[<&MSVCRTD.__set_app_t>; MSVCRTD.__set_app_type
00401FE5 |. 83C4 04 ADD ESP,4
00401FE8 |. C705 C0684100>MOV DWORD PTR DS:[4168C0],-1
这2个PUSH改的对吗?
这是无壳程序的
00401FB5 |. 68 60544100 PUSH sun_key.00415460
00401FBA |. 68 18224000 PUSH <JMP.&MSVCRTD._except_handler3> ; SE 处理程序安装
我把脱壳堆栈窗口下拉,找到:
0012FF80 0012FFE0 Pointer to next SEH record
0012FF84 00401E84 SE handler ; 注:这个是SE处理程序安装
0012FF88 004040F0 SearchRep.004040F0 ; 注:这个是上面那个PUSH
0012FF8C FFFFFFFF
如果对的话,还需要改什么不?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
赞赏
雪币:
留言: