精华内容
下载资源
问答
  • 寻找OEP

    2015-08-11 10:02:30
    脱壳的首要任务是寻找程序的OEP,找到程序的OEP后,再利用OD插件Ollydump进行脱壳,或者利用工具LoadPE进行脱壳importREC进行修复。这里先来讲述如何寻找程序的OEP。 方法1:单步跟踪 采用F8向下跟踪的方法,遇见向...

    脱壳的首要任务是寻找程序的OEP,找到程序的OEP后,再利用OD插件Ollydump进行脱壳,或者利用工具LoadPE进行脱壳importREC进行修复。这里先来讲述如何寻找程序的OEP。

    方法1:单步跟踪
    采用F8向下跟踪的方法,遇见向下的跳转继续,遇见向上的跳转(其实就是循环),F4运行到鼠标处走出循环。对于UPX壳或aspack壳直到遇到popad指令,再继续F8很快就会到达程序的OEP。

    方法2:ESP定律
    F8一次,观察寄存器,改变的变量(为红色),即ESP,右键->数据窗口中跟随,在数据窗口中看到已经跟随到ESP所显示的地址处,然后在该位置上设置断点,运行程序F9,观察断点处附件是否出现popad指令,若出现单步F8便可找到程序的OEP。

    方法3:一步直达

    右键查找->命令,键入popad,整个块不勾选,一直下一个直到找到要找的那个popad


    方法4:2次内存镜像

    alt+M找到内存窗口或直接点任务栏上M,在程序领空的资源段.rsrc下硬件断点,F9运行断住后再在内存窗口处00401000(不确定是不是一直是这个)再次下断,运行便找到popad。

    方法5:模拟跟踪
    alt+M找到内存窗口,找到关键内容SFX,找到其对应的地址,在命令处键入tc eip<xxxxxx(地址)运行后自动追踪。aspack壳

    方法6:SFX

    选项->调试设置->SFX,选择块方式跟踪真正入口处。aspack壳



    总结:前三种方式自己手动寻找

    后两种利用OD的功能自动寻找出程序的OEP

    展开全文
  • 直接将exe拖至FSG进行压缩壳 OD打开 ...寻找,我们要引入一个非常优秀的输入表(IAT)修复工具,ImportREC 输入OEP 输入 这两个位置不对,我们输入地址在OD里查询看一下,记得加基...

    直接将exe拖至FSG进行压缩壳

    OD打开

     

    第一次选择,然后重新加载(Ctrl+F2)

     这次选择这样

    结果

    分析后

    dump出来,注意:重建输入表不勾选,否则软件崩溃不可用行

    寻找,我们要引入一个非常优秀的输入表(IAT)修复工具,ImportREC

    输入OEP

    输入 

    这两个位置不对,我们输入地址在OD里查询看一下,记得加基地址,比如400000,这里是6B1EC加基址就是46B1EC

    这样不对,我们网上看

    其实并不是6B1EC,而是6B12C

    size大概为1万吧

    点击,SetImport 

    显示查看不合法的

    那么现在我们要删除这些不合法的

    结果

     

    现在我们fix dump

    用OD dump出的exe保存。关闭

    桌面会新生成已个dump_.exe文件,就是他了

    如果普通找不到,设置一下深度

     

    展开全文
  • 标 题: 手脱ASProtect第二篇---OEP 抽取

    千次阅读 2007-10-19 11:54:00
    标 题: 手脱ASProtect第二篇---OEP 抽取作 者: linex时 间: 2006-04-12 09:14 链 接: http://bbs.pediy.com/showthread.php?threadid=24007 详细信息: 【脱壳文件】图标制作工具【下载地址】...ASProtect 2.

    标 题: 手脱ASProtect第二篇---OEP 抽取
    作 者: linex
    时 间: 2006-04-12 09:14
    链 接: http://bbs.pediy.com/showthread.php?threadid=24007
    详细信息:

    【脱壳文件】图标制作工具
    【下载地址】http://iconutils.com/iconxp/iconxp.zip
    【加壳方式】ASProtect 2.2 SKE -> Alexey Solodovnikov
    【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教
    【调试环境】:Win2003、OllyDBD、PEiD、LordPE、ImportREC
    【脱壳过程】:一鼓作气,再脱一个带OEP抽取的ASProtect吧。
            一、避开加密,得到完整IAT
           这个程序没有任何异常,F9一下,程序界面全出来了,应该是2.2的版本了吧。那我们换个方法,OD忽略所有异常,bp GetModuleHandleA,过两次后取消断点,Alt+F9返回。

    代码:
         
    00F9E4AC    85C0            TEST EAX,EAX                             ; kernel32.7C800000 00F9E4AE    75 07           JNZ SHORT 00F9E4B7 00F9E4B0    53              PUSH EBX 00F9E4B1    FF95 F0314400   CALL DWORD PTR SS:[EBP+4431F0] 00F9E4B7    8985 4D294400   MOV DWORD PTR SS:[EBP+44294D],EAX 00F9E4BD    C785 51294400 0>MOV DWORD PTR SS:[EBP+442951],0 00F9E4C7    8B95 D8304400   MOV EDX,DWORD PTR SS:[EBP+4430D8] 向下找到这里: …… 00F9E5C9    C2 0C00         RETN 0C 00F9E5CC    68 00000000     PUSH 0 00F9E5D1    C3              RETN       //在这里F4下来

     


    F7一下到达壳的代码部分(此法来自LOOVBOOM的ASProtect 2.x脱壳系列)
    搜索一下83,C4,28,5D,5F,5E,5B,C3 ,有两处,在第二处下断点

    代码:
         
    00F8887A    8D5424 04       LEA EDX,DWORD PTR SS:[ESP+4] 00F8887E    E8 B1750000     CALL 00F8FE34 00F88883    E8 5C700000     CALL 00F8F8E4 00F88888    8BC3            MOV EAX,EBX 00F8888A    E8 61A3FEFF     CALL 00F72BF0 00F8888F    E8 10F0FFFF     CALL 00F878A4     //这里进去 00F88894    83C4 28         ADD ESP,28 00F88897    5D              POP EBP 00F88898    5F              POP EDI 00F88899    5E              POP ESI 00F8889A    5B              POP EBX 00F8889B    C3              RETN

     


    进入以后按Ctrl+F9,再F7一下,到达OEP

    代码:
         
    00F60241    55              PUSH EBP      //这里下个硬断点,下次直接就到这里了。 00F60242    BD 262B4800     MOV EBP,482B26 00F60247    BD DE8D4800     MOV EBP,488DDE 00F6024C    8BEC            MOV EBP,ESP 00F6024E    E9 C7010000     JMP 00F6041A 00F60253    81D0 B693A431   ADC EAX,31A493B6 00F60259    FF35 0CB15500   PUSH DWORD PTR DS:[55B10C] 00F6025F    B8 16334900     MOV EAX,493316 00F60264    034424 38       ADD EAX,DWORD PTR SS:[ESP+38] 00F60268    58              POP EAX 00F60269    E9 460B0000     JMP 00F60DB4 00F6026E    C3              RETN

     


    这个程序的输入表被加密了,搜索参考文本串,两个85之间的CALL进去后,找到IAT处理的CALL(详细的请参考我的上一篇)

    代码:
         
    00F93B84    55              PUSH EBP 00F93B85    8BEC            MOV EBP,ESP 00F93B87    81C4 F8FEFFFF   ADD ESP,-108 00F93B8D    53              PUSH EBX 00F93B8E    56              PUSH ESI 00F93B8F    57              PUSH EDI 00F93B90    8B55 14         MOV EDX,DWORD PTR SS:[EBP+14] 00F93B93    8B5D 08         MOV EBX,DWORD PTR SS:[EBP+8] 00F93B96    8DBD FAFEFFFF   LEA EDI,DWORD PTR SS:[EBP-106] 00F93B9C    8BC2            MOV EAX,EDX 00F93B9E    48              DEC EAX 00F93B9F    83E8 02         SUB EAX,2 00F93BA2    0FB630          MOVZX ESI,BYTE PTR DS:[EAX] 00F93BA5    8B45 10         MOV EAX,DWORD PTR SS:[EBP+10] 00F93BA8    83E8 02         SUB EAX,2 00F93BAB    0FB600          MOVZX EAX,BYTE PTR DS:[EAX] 00F93BAE    3B43 2C         CMP EAX,DWORD PTR DS:[EBX+2C] 00F93BB1    76 06           JBE SHORT 00F93BB9 00F93BB3    8943 2C         MOV DWORD PTR DS:[EBX+2C],EAX 00F93BB6    EB 01           JMP SHORT 00F93BB9 00F93BB8    6933 C08A433B   IMUL ESI,DWORD PTR DS:[EBX],3B438AC0 00F93BBE    3BF0            CMP ESI,EAX 00F93BC0    75 5E           JNZ SHORT 00F93C20                   //这里开始PATCH 00F93BC2    EB 01           JMP SHORT 00F93BC5 00F93BC4    C7              ???                                       改为:JMP f60000(你申请到的内存地址)

     



    这个程序的ESI值有四种情况,E3,A4,30,E7,其中E7,A4两种情况不加密,E3-->E7 ,30-->A4
    继续PATCH:

    代码:
         
    00F60000  - 0F84 BF3B0300   JE 00F93BC5 00F60006    81FE E7000000   CMP ESI,0E7 00F6000C  - 0F84 0E3C0300   JE 00F93C20 00F60012    81FE E3000000   CMP ESI,0E3 00F60018    74 0A           JE SHORT 00F60024 00F6001A    BE A4000000     MOV ESI,0A4 00F6001F  - E9 FC3B0300     JMP 00F93C20 00F60024    BE E7000000     MOV ESI,0E7 00F60029  ^ EB F4           JMP SHORT 00F6001F 二进制代码: 0F 84 BF 3B 03 00 81 FE E7 00 00 00 0F 84 0E 3C 03 00 81 FE E3 00 00 00 74 0A BE A4 00 00 00 E9 FC 3B 03 00 BE E7 00 00 00 EB F4

     


    取消断点运行,拿到正确的IAT表。

    二、修复CALL XXXXXXXX。

    到OEP后开始修复吧,搜索一下89,45,F0,B8,00,07,00,00 到达这里:

    代码:
         
    00F93754    8945 F0         MOV DWORD PTR SS:[EBP-10],EAX 00F93757    B8 00070000     MOV EAX,700 00F9375C    E8 E3EDFDFF     CALL 00F72544   //这里PATCH PATCH: 00F9375C  - E9 6B8E2200     JMP 011A0043

     



    到11A0000处写上代码
     

    代码:
         
    011A0000    0000            ADD BYTE PTR DS:[EAX],AL 011A0002    0000            ADD BYTE PTR DS:[EAX],AL 011A0004    0000            ADD BYTE PTR DS:[EAX],AL 011A0006    0000            ADD BYTE PTR DS:[EAX],AL 011A0008    0000            ADD BYTE PTR DS:[EAX],AL 011A000A    BA 00104000     MOV EDX,iat.<模块入口点> 011A000F    803A E8         CMP BYTE PTR DS:[EDX],0E8 011A0012    75 14           JNZ SHORT 011A0028 011A0014    8B42 01         MOV EAX,DWORD PTR DS:[EDX+1] 011A0017    03C2            ADD EAX,EDX 011A0019    05 05000000     ADD EAX,5 011A001E    3D 00000A01     CMP EAX,10A0000 011A0023    75 03           JNZ SHORT 011A0028 011A0025    EB 0C           JMP SHORT 011A0033 011A0027    90              NOP 011A0028    42              INC EDX 011A0029    81FA 00B05500   CMP EDX,55B000 011A002F  ^ 72 DE           JB SHORT 011A000F 011A0031  - EB FE           JMP SHORT 011A0031 011A0033    8915 00011A01   MOV DWORD PTR DS:[11A0100],EDX 011A0039    60              PUSHAD 011A003A    FFE2            JMP EDX 011A003C    90              NOP 011A003D    90              NOP 011A003E    90              NOP 011A003F    90              NOP 011A0040    90              NOP 011A0041    90              NOP 011A0042    90              NOP 011A0043    90              NOP 011A0044    B8 A4415600     MOV EAX,5641A4 011A0049    90              NOP 011A004A    3910            CMP DWORD PTR DS:[EAX],EDX 011A004C    75 23           JNZ SHORT 011A0071 011A004E    8B0D 00011A01   MOV ECX,DWORD PTR DS:[11A0100] 011A0054    C701 FF250000   MOV DWORD PTR DS:[ECX],25FF 011A005A    8941 02         MOV DWORD PTR DS:[ECX+2],EAX 011A005D    61              POPAD 011A005E    90              NOP 011A005F    8B15 00011A01   MOV EDX,DWORD PTR DS:[11A0100] 011A0065    90              NOP 011A0066    90              NOP 011A0067    90              NOP 011A0068  ^ EB BE           JMP SHORT 011A0028 011A006A    90              NOP 011A006B    90              NOP 011A006C    90              NOP 011A006D    90              NOP 011A006E    90              NOP 011A006F    90              NOP 011A0070    90              NOP 011A0071    83C0 04         ADD EAX,4 011A0074    3D 404A5600     CMP EAX,564A40 011A0079  ^ 7E CF           JLE SHORT 011A004A 011A007B  ^ EB E0           JMP SHORT 011A005D 011A007D    90              NOP 00 00 00 00 00 00 00 00 00 00 BA 00 10 40 00 80 3A E8 75 14 8B 42 01 03 C2 05 05 00 00 00 3D 00 00 0A 01 75 03 EB 0C 90 42 81 FA 00 B0 55 00 72 DE EB FE 89 15 00 01 1A 01 60 FF E2 90 90 90 90 90 90 90 90 B8 A4 41 56 00 90 39 10 75 23 8B 0D 00 01 1A 01 C7 01 FF 25 00 00 89 41 02 61 90 8B 15 00 01 1A 01 90 90 90 EB BE 90 90 90 90 90 90 90 83 C0 04 3D 40 4A 56 00 7E CF EB E0 90

     


    代码还是上一个,修改了几个值就可以啦。
    在011A000A新建EIP,F9运行一下,OK。
    LODEPE开始DUMP,IMR修复一下。
    三、修复OEP抽取
    还是用SYSCOM的补区段大法吧
    1.且不要关OD,把F40000到1430000的所有区段都保存下来,一共二十多个,都保存下来,再用LODEPE装配进DUMP后的文件中。(高手莫笑啊,这样为了保险,再费事也总比一句一句猜代码省事吧)
    2.修正Route Check
     用OD载入后跟踪到这里:

    代码:
         
    00F94C06    8B40 34         MOV EAX,DWORD PTR DS:[EAX+34] 00F94C09    FFD0            CALL EAX 00F94C0B    2945 0C         SUB DWORD PTR SS:[EBP+C],EAX 修改为: 00F94C06    90              NOP 00F94C07    90              NOP 00F94C08    90              NOP 00F94C09    8B4424 58       MOV EAX,DWORD PTR SS:[ESP+58] 00F94C0D    83E8 05         SUB EAX,5 00F94C10    90              NOP

     


    3.修正预先解码用到的API
    再运行后还是有错误,发现是有二个API函数错误
    00401300  - FF25 F8415600   JMP DWORD PTR DS:[5641F8]
    004071A0  - FF25 BC435600   JMP DWORD PTR DS:[5643BC]
    经跟踪后发现都是: kernel32.GetProcAddress,修正它。
    4.自校验:
    再运行后发现已经能出窗口了,但是一点OK就出来十几个注册窗口,再改掉两个JLE为JMP。
    最后跨平台测试,OK了.

    参考文章:

    LOOVBOOM的ASProtect 2.x脱壳系列
    syscom的ASProtect delphi+OEP stolen篇
    林海雪原的aspr2.2 SKE 外壳简单分析 
    ……

    脱壳后文件在我的网络优盘中:
    http://pickup.mofile.com/5595561565230235

     
    展开全文
  • tid=120450 你可以怀疑这个方法,真的假的一试就知道,如果不知道怎么找...有的OEP被抽了代码的只能找到伪OEP,也就是被抽掉之后剩下的头部地址。 你也可以直接无视这个方法,对你少一个选择,对我没有任何损失。 ...

    from:http://www.52pojie.cn/forum.php?mod=viewthread&tid=120450

    你可以怀疑这个方法,真的假的一试就知道,如果不知道怎么找,可以把你的试验品传到网盘,有空我把针对你试验品的步骤帖给你。
    有的OEP被抽了代码的只能找到伪OEP,也就是被抽掉之后剩下的头部地址。

    你也可以直接无视这个方法,对你少一个选择,对我没有任何损失。

           首先讲一下方法的原理。
           每一个程序都是由无数个CALL加其参数组成了,在程序里,每一个CALL都是有返回地址的。当在程序领空的时候,返回到不能返回的时候。这个返回地址就是在程序的main函数里。
           所以只要找到了最终程序领空的返回地址,也就找到了main函数的地方。main函数的起始位置也就是oep了。而OD是会记录每一个返回地址的。我们用OD就可以迅速找到OEP了,而且适合所有壳(除了有注册框的壳,因为你不过掉注册框就到不了程序的领空)。
           下面以一个加ZP的壳为例(无注册框),来说明如何操作。

    1. OD载入程序,入口点为

     

    1 004711DA >  E8 01000000     call 演示程序.004711E0
    2 004711DF    5C              pop esp
    3 004711E0    872C24          xchg dword ptr ss:[esp],ebp
    4 004711E3    8DAD 9CFEFFFF   lea ebp,dword ptr ss:[ebp-164]
    5 004711E9    872C24          xchg dword ptr ss:[esp],ebp
    6 004711EC  ^ E9 8AFEFFFF     jmp 演示程序.0047107B
    7 004711F1    B0 1D           mov al,1D
    8 004711F3  ^ 7C E8           jl short 演示程序.004711DD

    2.直接shift+F9让程序跑起来,然后来到OD的堆栈窗口。直接拉到最下面。

     1 0012FF54   0012FFA8
     2 0012FF58   0044D294  演示程序.0044D294
     3 0012FF5C   00010264  UNICODE "nclude=D:\Program Files\Microsoft Visual Studio\VC98\atl\include;D:\Program Files\Microsoft Visual S"
     4 0012FF60   00000113
     5 0012FF64   00000001
     6 0012FF68   00000000
     7 0012FF6C   000743DC
     8 0012FF70   00000265
     9 0012FF74   000002F8
    10 0012FF78   7FFD7000
    11 0012FF7C   0044D4A7  演示程序.0044D4A7
    12 0012FF80   0012FF8C  指向下一个 SEH 记录的指针
    13 0012FF84   0044D4B1  SE处理程序
    14 0012FF88   0012FFA8
    15 0012FF8C   0012FFB4  指向下一个 SEH 记录的指针
    16 0012FF90   0044D4EA  SE处理程序
    17 0012FF94   0012FFA8
    18 0012FF98   7C930208  ntdll.7C930208
    19 0012FF9C   FFFFFFFF
    20 0012FFA0   7FFD7000
    21 0012FFA4   00B817C0
    22 0012FFA8   0012FFC0
    23 0012FFAC   0044EDA0  演示程序.0044EDA0
    24 0012FFB0   7FFD7000
    25 0012FFB4   0012FFE0  指向下一个 SEH 记录的指针
    26 0012FFB8   004039B0  SE处理程序
    27 0012FFBC   0012FFC0
    28 0012FFC0   0012FFF0
    29 0012FFC4   7C817067  返回到 kernel32.7C817067
    30 0012FFC8   7C930208  ntdll.7C930208
    31 0012FFCC   FFFFFFFF
    32 0012FFD0   7FFD7000
    33 0012FFD4   8054C6B8
    34 0012FFD8   0012FFC8
    35 0012FFDC   895C0020
    36 0012FFE0   FFFFFFFF  SEH 链尾部
    37 0012FFE4   7C839AC0  SE处理程序
    38 0012FFE8   7C817070  kernel32.7C817070
    39 0012FFEC   00000000
    40 0012FFF0   00000000
    41 0012FFF4   00000000
    42 0012FFF8   004711DA  offset 演示程序.<ModuleEntryPoint>
    43 0012FFFC   00000000

    从下往上,找到第一个返回到程序领空的地址。

    0012FFAC 0044EDA0 演示程序.0044EDA0

    然后汇编窗口中跟随,来到这里:

    1 0044EDA0      E8            db E8
    2 0044EDA1      7B            db 7B                                    ;  CHAR '{'
    3 0044EDA2      4F            db 4F                                    ;  CHAR 'O'
    4 0044EDA3      FB            db FB
    5 0044EDA4      FF            db FF

    3. 点右键,选择分析-->从模块中删除分析,变成这样:

     1 0044ED6B    E8 586EFBFF     call 演示程序.00405BC8
     2 0044ED70    A1 D0FF4400     mov eax,dword ptr ds:[44FFD0]
     3 0044ED75    8B00            mov eax,dword ptr ds:[eax]
     4 0044ED77    E8 F8E5FFFF     call 演示程序.0044D374
     5 0044ED7C    8B0D AC004500   mov ecx,dword ptr ds:[4500AC]            ; 演示程序.00451BD0
     6 0044ED82    A1 D0FF4400     mov eax,dword ptr ds:[44FFD0]
     7 0044ED87    8B00            mov eax,dword ptr ds:[eax]
     8 0044ED89    8B15 14E94400   mov edx,dword ptr ds:[44E914]            ; 演示程序.0044E960
     9 0044ED8F    E8 F8E5FFFF     call 演示程序.0044D38C
    10 0044ED94    A1 D0FF4400     mov eax,dword ptr ds:[44FFD0]
    11 0044ED99    8B00            mov eax,dword ptr ds:[eax]
    12 0044ED9B    E8 6CE6FFFF     call 演示程序.0044D40C
    13 0044EDA0    E8 7B4FFBFF     call 演示程序.00403D20                       ; 刚才的位置

    4.我们往上找

     1 0044ED5B    0058 EB         add byte ptr ds:[eax-15],bl
     2 0044ED5E    44              inc esp
     3 0044ED5F    0055 8B         add byte ptr ss:[ebp-75],dl
     4 0044ED62    EC              in al,dx
     5 0044ED63    83C4 F0         add esp,-10
     6 0044ED66    B8 80EB4400     mov eax,演示程序.0044EB80
     7 0044ED6B    E8 586EFBFF     call 演示程序.00405BC8
     8 0044ED70    A1 D0FF4400     mov eax,dword ptr ds:[44FFD0]
     9 0044ED75    8B00            mov eax,dword ptr ds:[eax]
    10 0044ED77    E8 F8E5FFFF     call 演示程序.0044D374
    11 0044ED7C    8B0D AC004500   mov ecx,dword ptr ds:[4500AC]            ; 演示程序.00451BD0
    12 0044ED82    A1 D0FF4400     mov eax,dword ptr ds:[44FFD0]
    13 0044ED87    8B00            mov eax,dword ptr ds:[eax]
    14 0044ED89    8B15 14E94400   mov edx,dword ptr ds:[44E914]            ; 演示程序.0044E960
    15 0044ED8F    E8 F8E5FFFF     call 演示程序.0044D38C
    16 0044ED94    A1 D0FF4400     mov eax,dword ptr ds:[44FFD0]
    17 0044ED99    8B00            mov eax,dword ptr ds:[eax]
    18 0044ED9B    E8 6CE6FFFF     call 演示程序.0044D40C
    19 0044EDA0    E8 7B4FFBFF     call 演示程序.00403D20                       ; 刚才的位置

    这里就是OEP的头部了。如果你熟悉各种语言的入口特征的话,马上就应该知道OEP的位置了。
    看这里

    1 0044ED5F    0055 8B         add byte ptr ss:[ebp-75],dl
    2 0044ED62    EC              in al,dx

    其实这个就是被混淆了的OEP。他只是在558B的前面加了个00,  我们想办法把00去掉。

    00的地址是0044ED5F,那么55的地址是0044ED60(即是加1),我们CTRL+G,输入0044ED60,回车。我们的OEP就回来了,如下:

     1 0044ED60    55              push    ebp                              ; oep
     2 0044ED61    8BEC            mov     ebp, esp
     3 0044ED63    83C4 F0         add     esp, -10
     4 0044ED66    B8 80EB4400     mov     eax, 0044EB80
     5 0044ED6B    E8 586EFBFF     call    00405BC8
     6 0044ED70    A1 D0FF4400     mov     eax, dword ptr [44FFD0]
     7 0044ED75    8B00            mov     eax, dword ptr [eax]
     8 0044ED77    E8 F8E5FFFF     call    0044D374
     9 0044ED7C    8B0D AC004500   mov     ecx, dword ptr [4500AC]          ; 演示程序.00451BD0
    10 0044ED82    A1 D0FF4400     mov     eax, dword ptr [44FFD0]
    11 0044ED87    8B00            mov     eax, dword ptr [eax]
    12 0044ED89    8B15 14E94400   mov     edx, dword ptr [44E914]          ; 演示程序.0044E960
    13 0044ED8F    E8 F8E5FFFF     call    0044D38C
    14 0044ED94    A1 D0FF4400     mov     eax, dword ptr [44FFD0]
    15 0044ED99    8B00            mov     eax, dword ptr [eax]
    16 0044ED9B    E8 6CE6FFFF     call    0044D40C
    17 0044EDA0    E8 7B4FFBFF     call    00403D20

     

    文中所用程序的下载地址:http://files.cnblogs.com/tk091/test3.zp.rar

     

    至于找到oep后如何脱壳,这个就难说了,下面是我的脱壳过程。

    对oep下硬件断点,重新载入后运行,删除分析模块。

    od插件dump分别两个。

    运行实际的程序,打开pe修复工具,填入oep,

    显示无效的函数,全部无效,选择等级三修复即可,要几个几个的修复,如果一起修复则会死掉。

    转载于:https://www.cnblogs.com/tk091/archive/2012/04/24/2467872.html

    展开全文
  • PE-ARM0.765到达OEP---脚本

    千次阅读 2011-01-02 13:59:00
    并且有anti dump和修改pe文件头防止importrec输入表修复同时独占文件,这样importrec的使用磁盘中的pe头选项就不行了 //检测是否单步调试的 003B63EF 0F31 RDTSC 003B63F1 83C4 04 ADD ESP,4 003B63F4 2BC1 ...
  • 修复IAT

    千次阅读 2018-09-14 20:12:24
    其实这个操作 我感觉是有、操作的 修复iat 需要的 有oep 有 IAT表的地址 (大小其实最好也算出来) 然后这篇就是手动查找IAT 然后这个先找到oep 然后直接修复镜像   右键 修复镜像 保存 然后查找 IAT 其实...
  • 脱壳工具脱壳后,程序不能运行,用这个工具修复 Armadillo Nanomites Fixer v1.2 +fix some problem +minor code changed +added OtherCompiler option for compatibility with other compiler +OEP of MSVC ...
  • 修复不连续的导入表

    2018-11-20 15:55:09
        之前脱UPX壳都是用脱壳工具脱的,因此偷懒现在都没有仔细看ImportREC怎么用,最近分析一个很久之前的感染式病毒,遇到了UPX,使用工具脱壳失败,只能手动修复了。     壳是简单的UPX壳,知识需要手动...
  • 脱壳后的IAT修复

    千次阅读 2017-02-01 01:57:42
    前言压缩壳(大部分)和加密壳脱壳...记录OEP处dump的工具OllyDump(修复导入表dump和不修复导入表dump) LordPE(有些壳dump不出来) PeTools OD在OEP处, 用这几种工具, 将PE映像Dump出来. 用这几种工具都Dump一下, 如果
  • 手动修复IAT

    2017-06-17 14:57:00
    现在我们已经了解了IAT的的工作原理,现在我们来一起学习手动修复IAT,一方面是深入了解运行过程一方面是为了避免遇到有些阻碍自动修复IAT的壳时不知所措。 首先我们用ESP定律找到加了UPX壳后的OEP,现在我们处于...
  • GUnpacker是一个辅助脱壳工具,它的主要功能有两个: 1.定位OEP 2.Dump已经解密的代码和数据,可用于后续的PE修复
  • tElock壳,寻找OEP不难,但是总是卡在Dump之后的修复上。 这两天又重新翻看电脑,发现几年前的学习逆向的文件夹被我找出来了,就重新学习了一下。 仍旧是死在修复上!!! ImportREC 修复的时候,无论是否打开...
  • 黑鹰 1、破解工具介绍 近call用F7,远call用F8,否则程序容易跑...找到OEP,Dump内存,工具,如LordPE(3)修复PE头。手工或工具,如Import REC 注:需要先将OD调试的进程运行到OEP处才能使用LordPE、Import REC。
  • 简单破解

    2009-02-26 20:07:00
    脱壳工具:1.查壳工具: PEID ,FI ,PE-SCAN 等2....修复工具:Import REConstructor 1.6 第一步:查壳用到工具:PEID ,FI ,PE-SCAN 第二步:跟踪调试找程序的OEP用到工具:ollydbg 第三步:找到OEP后脱壳
  • (2)认识常用工具

    2012-10-03 15:02:00
     侦壳——→OD载入程序——→寻找OEP——→脱壳(DUMP)——→修复   下面介绍下这些步骤常用的工具:  侦壳:PEID FI   调试程序寻找OEP:OD  脱壳:LordPE ,OD自带脱壳插件  修复:Import ...
  • 自己动手写病毒修复程序

    千次阅读 2010-09-02 17:57:00
    哎,在这里先鄙视360一下,昨天我真的很...呼~不说了,自己动手写个修复工具好得很,花了半天的时间去网上下载VS2008,OD等工具,然后又花了半天的时间分析加编程,终于写出来,下面说下思路...由于我的系统里面已经没
  • 工具介绍】 1、查壳 PEID--功能强大的侦壳工具,自带脱壳插件(但是...OD自带的脱壳插件--到达OEP之后右键。。。 LordPE、PeDumper--选择所调试的进程--右键--完整脱壳 4、修复 Import REConstructor 1.6 ...
  • 0x1 寻找OEP OEP八大法…这里不具体展开… 0x2 修复IAT 脱壳后如遇到程序无法正常运行(XP环境),可能是因为导入表破坏,需要手动修复。 将暂停在OEP的进程加载到ImportREC中,通过OD查看IAT(导入表)地址与大小。...
  • 脱壳工具

    千次阅读 2007-11-05 17:24:00
    脱壳工具 文件类型侦测工具 peid 0.94 现在软件越来越多的加壳了,给破解带来
  • 病毒分析常用技巧-修复内存dump文件

    千次阅读 2018-11-13 16:41:33
    ,下INT3断点,F9跑到OEP,然后到内存布局保存内存块,再修复PE~ 怎么知道OEP是哪里? 可以先把第一次写入的残缺的PE文件,导入PE工具查看,扩展头里面有个入口点偏移。 OEP下断的地方,就是申请的地址+扩展头中...
  • 程序输入表修复

    千次阅读 2015-12-07 18:38:55
    1.使用的一款修复输入表的工具:Import REConstructor,如下图所示:  2.一个加过壳的程序在经过脱壳后,输入表一般会出现问题,出现各种程序不能运行的情况,这时就需要修复输入表。打开未脱壳的程序(因为该...
  • 工具

    2012-05-02 15:49:00
    ├─Debuggers ;调试器│ ├─OllyDbg│ │ ├─plugin ;各类OllyDbg插件│ │ ├─OllyICE ;OllyDBG修改版,新增一些功能或修正一些bug,取名OllyICE只是便于区分,其实质还是OllyDBG...一款调试VB程序的工具,不支...
  • 题目: ...脱壳最好在windows XP...使用工具: OD lordPE ImportREC 第一题:IT修复 1.查壳 UPX的壳,无难度 2.寻找OEP 用OD载入 先F8单步运行一步 发现ESP寄存器被改变,可以使用ESP定律 右键数据窗口跟随,|| ...
  • 破解工具名单

    2010-11-10 07:03:00
    1 调试工具 Ollydbg V1.10 正式汉化修改版+最新最全插件2.02m SmartCheck V6.20 20.54M Compuware SoftICE V4.3.1 精简版10.57M Compuware (SoftICE) Driver Studio V3.1 完全版176.52M...
  • 第二课 破解工具的介绍及使用方法 ... 侦壳——→OD载入程序——→寻找OEP——→脱壳(DUMP)——→修复 下面介绍下这些步骤常用的工具: 侦壳:PEID FI 调试程序寻找OEP:OD 脱壳:LordPE OD自带脱壳插件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 535
精华内容 214
关键字:

oep修复工具