飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

敬请各位师兄师姐赐教!!

[复制链接]
  • TA的每日心情
    慵懒
    2024-3-21 21:06
  • 签到天数: 1489 天

    [LV.10]以坛为家III

    发表于 2005-4-15 20:07:45 | 显示全部楼层
    00434048  |.  83C4 1C       ADD ESP,1C
    0043404B  |.  8945 E8       MOV DWORD PTR SS:[EBP-18],EAX            ;  // 指令长度
    0043404E  |.  837D 10 00    CMP DWORD PTR SS:[EBP+10],0              ;  // 判断是不是危险指令, 见 _Disasm 原程序.
    00434052  |.  74 76         JE SHORT CMD.004340CA                    ;  // 将这条语句改成 JMP 4340CA, (74->EB), 就可以了
    00434054  |.  F685 8DFAFFFF>TEST BYTE PTR SS:[EBP-573],30
    0043405B  |.  74 6D         JE SHORT CMD.004340CA
    0043405D  |.  80BD 54F8FFFF>CMP BYTE PTR SS:[EBP-7AC],0
    00434064  |.  75 04         JNZ SHORT CMD.0043406A
    00434066  |.  33C0          XOR EAX,EAX
    00434068  |.  EB 15         JMP SHORT CMD.0043407F
    0043406A  |>  80BD 54F9FFFF>CMP BYTE PTR SS:[EBP-6AC],0
    00434071  |.  75 07         JNZ SHORT CMD.0043407A
    00434073  |.  B8 01000000   MOV EAX,1
    00434078  |.  EB 05         JMP SHORT CMD.0043407F
    0043407A  |>  B8 02000000   MOV EAX,2
    0043407F  |>  C1E0 08       SHL EAX,8
    00434082  |.  8D95 54F7FFFF LEA EDX,DWORD PTR SS:[EBP-8AC]
    00434088  |.  03C2          ADD EAX,EDX
    0043408A  |.  53            PUSH EBX                                 ; /Arg4
    0043408B  |.  50            PUSH EAX                                 ; |Arg3
    0043408C  |.  8D8D DCFDFFFF LEA ECX,DWORD PTR SS:[EBP-224]           ; |
    00434092  |.  68 B4484B00   PUSH CMD.004B48B4                        ; |Arg2 = 004B48B4 ASCII "%s Do you REALLY want to execute this code at address %08X?"
    00434097  |.  51            PUSH ECX                                 ; |Arg1
    00434098  |.  E8 2B130700   CALL CMD.004A53C8                        ; \CMD.004A53C8, sprintf()生成字符串
    0043409D  |.  83C4 10       ADD ESP,10
    004340A0  |.  8D85 DCFDFFFF LEA EAX,DWORD PTR SS:[EBP-224]
    004340A6  |.  8B15 F4174D00 MOV EDX,DWORD PTR DS:[4D17F4]
    004340AC  |.  68 34010000   PUSH 134                                 ; /Style = MB_YESNO|MB_ICONEXCLAMATION|MB_DEFBUTTON2|MB_APPLMODAL
    004340B1  |.  68 F0484B00   PUSH CMD.004B48F0                        ; |Title = "Dangerous command"
    004340B6  |.  50            PUSH EAX                                 ; |Text
    004340B7  |.  52            PUSH EDX                                 ; |hOwner => 000A00CC ('zsmozsm - Main.exe - [CPU - m...',class='zsmozsm')
    004340B8  |.  E8 F59B0700   CALL <JMP.&USER32.MessageBoxA>           ; \MessageBoxA


    004340BD  |.  83F8 06       CMP EAX,6                                ; // 用户点 Yes, 继续执行
    004340C0      74 08         JE SHORT CMD.004340CA
    004340C2  |.  83C8 FF       OR EAX,FFFFFFFF
    004340C5  |.  E9 F8060000   JMP CMD.004347C2
    004340CA  |>  8BBD 54FAFFFF MOV EDI,DWORD PTR SS:[EBP-5AC]           ; // 这里执行
    004340D0  |.  81E7 F0000000 AND EDI,0F0
    004340D6  |.  837D 10 02    CMP DWORD PTR SS:[EBP+10],2


    修改 434052 处 74 为 EB, Copy to Execute, 保存文件 CMD2.EXE , 退出ollydbg.EXE.

    用 CMD2.EXe 打开 Main.EXE , 忽略所有异常, F9,  

    在 412167 处异常, ExceptionCode = C000001E

    Debug Option -- Exception -- Add last Exception -- Ignore custom Exception,  

    Shift + F9, 这个异常要经过好多次, 等一会儿, 仙剑就运行了.

    http://www.chinadfcg.com/viewthread.php?tid=2033



    http://www.chinadfcg.com/viewthread.php?tid=277

    修正我的抗Antidbgod 1.10b2含全部插件下载

    在上面的基础继续增加这个加强版,去除了讨厌的入口警告和危险指令提示,可以调试Acprotect1.x和某些刻意Antiod的软件。

    这次应该没有问题了,大家帮忙测试一下.

    直接覆盖上一版,设置一下插件和od工作路径。



    用修改版OD脱DLL壳的问题:

    请教脱DLL壳时如何在载入DLL后退出,即卸载laddll
    因为我看到书上说到的DLL脱壳全部是用TRW,而我却不知道如何用OD来具体操作
    脱DLL,研究了几天无果。

    和脱EXE绝对不一样。
    DLL调用时两次用到入口点的。载入DLL和卸掉DLL时各一次
    根据看雪破解2要求,一般在第2次解压调用时脱壳。
    可是教材完全是用TRW,我就是不会用OD操作。
    如果和EXE操作步骤一样就好办了


    载入DLL
    停在
    10001000  /$  8B4424 04     MOV EAX,DWORD PTR SS:[ESP+4]
    10001004  |.  A3 589A0010   MOV DWORD PTR DS:[10009A58],EAX
    10001009  |.  B8 01000000   MOV EAX,1
    1000100E  \.  C2 0C00       RETN 0C
    10001011      90            NOP
    10001012      90            NOP
    10001013      90            NOP

    点菜单
    查看
    执行模块
    右键相击对应模块
    点跟随入口
    可以得到入口程序
    1000E001 >  60              PUSHAD
    1000E002    E8 03000000     CALL CAPTUREH.1000E00A
    1000E007  - E9 EB045D45     JMP 555DE4F7
    1000E00C    55              PUSH EBP
    1000E00D    C3              RETN
    1000E00E    E8 01000000     CALL CAPTUREH.1000E014
    1000E013    EB 5D           JMP SHORT CAPTUREH.1000E072
    1000E015    BB EDFFFFFF     MOV EBX,-13
    1000E01A    03DD            ADD EBX,EBP
    1000E01C    81EB 00E00000   SUB EBX,0E000
    1000E022    83BD 22040000 0>CMP DWORD PTR SS:[EBP+422],0
    1000E029    899D 22040000   MOV DWORD PTR SS:[EBP+422],EBX
    1000E02F    0F85 65030000   JNZ CAPTUREH.1000E39A
    1000E035    8D85 2E040000   LEA EAX,DWORD PTR SS:[EBP+42E]


    但估计这是第一次解压DLL程序,DLL和EXE不同,无法跟踪。

    教材中提到,卸载DLL时第2次调用解压。达到入口点
    可能可以跟踪,但我不知道用OD如何卸掉DLL

    兄弟是什么系统。莫非又是98在作怪
    用的也是win98系统呀。对了,你用的OD是什么版本的,我的是10.0C汉化版
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2024-3-21 21:06
  • 签到天数: 1489 天

    [LV.10]以坛为家III

    发表于 2005-4-15 20:08:22 | 显示全部楼层
    用原版OD后一切问题解决:
    很简单,脱Dll的壳和EXE的方法一样,比如一个dll用UPX加的壳,你在载入的时候他会提示载入laddll,选是,然后选不分析,接下来就和脱EXE一样了,只要注意一下地址就行了,如EXE的虚拟地址是00400000,而Dll的地址是01000000的。但在修正入口的时候还是和EXE一样。如Dll入口地址是01001000的话,在修正入口点的时候应该是00001000才对。
    你放上的附件是ASPACK2.12加的壳,脱壳后用FI查是C++编的,你先用OD载入这个dll,OD会提示用载入laddll,选是,然后选不继续分析,中断在壳的入口点。你先按F9运行程序,这时OD又会中断,在左下角提示dll初始化完成,你再按一下F9运行。这时Laddll就会启运一个程序窗口,你再关闭这个窗口,这个程序窗口就会卸载这个Dll了,这时OD又会中断在dll的入口,这时你就可以像脱EXE程序一样了。最后,谢谢你的程序(Dll),使我复习了一下脱Dll的方法并脱壳成功,只是不知能不能运行,现附上我脱的Dll:

    我明白了,你用的是修改后的OD,现在你用没有修改过的OD试一试就不会有这个问题了。忘了说,我一般是用没有修改过的OD的。只是有时用一下。刚才我用修改过的OD载入也出现和你一样的问题,这个可能是二哥修改过的OD的Bug吧?

    以上是战神和雪很冷的脱DLL壳讨论稿




    转OllyDbg实用技巧六则

    标题: OllyDbg实用技巧六则

    作者:  dOSKEY lEE

    关键词: OllyDbg、OD、技巧

    1、让跳转路径显示出来

       打开Options\Debugging Option。弹出Debugging Option对话框,选择CPU页,选定“Show direction to jumps”、“Show jump path”和“Show grayed path if jump is not taken”。如此以来在  Disassembler窗口就会显示跳转的路径了。

    2、让OD显示MFC42.DLL中的函数

       如果程序是用MFC进行的动态编译,那么在OD中将只能显示MFC42.DLL中的函数为:

    00410E40  |.  E8 43000000  CALL    <JMP.&MFC42.#1576> 1576是函数在MFC42.DLL中的序号。打开Debug\Select import libraries,单击弹出的对话框中“Add”,在弹出的打开文件对话框中选择“MFC42.LIB”并打开,重新载入MFC程序,你就可以看见函数名称变为:

    00410E40  |.  E8 43000000  CALL    <JMP.&MFC42.#1576_?AfxWinMain@@Y>

    IDA中分析出了来的东西一样了!呵呵,以后不用等待IDA的“细嚼慢咽”也可以轻松搞定MFC程序了。其他的DLL类似,如果有序号,可以在VC的LIB目录中找到相关的.LIB文件,加到OD中便可。如果你没有“MFC42.DLL”,你可以的到看学论坛的下载区找,我已经上传到那里了。

    3、让OD轻松躲过“ANTI-DEBUG”
       
       很多“ANTI-DEBUG”的程序都是在程序开始时来检查是否安装调试器的。用这种特性我们可以轻松的用OD的“Attach”绕过检查部分。如“X语言”,如果你哟内TRW2K/S-ICE/OD 直接加载它的话,程序回警告你安装了调试器并结束。但是我们在“X语言”开启后再运行OD,并用“Attach”系上它就就可以了,轻松通过检查。而且在OD系上它后仍然可以用CTRL+A进行分析。如此一来,快哉!:)

    4、轻松对付调用“MessageBoxA”以及类似的模态对话框的程序
       
       很多人都认为OD不好拦截“MessageBoxA”这类API函数。其实我们有个很简单的办法将API拦截下来,并且快速找到比较地点/主算法地点。首先用OD加载目标程序,如果不能加载,用上面的方法“Attach”目标程序。然后,F9运行目标程序,并且有意让目标程序显示“ MessageBox”,然后切换到OD中,F12暂停,如

    0041201F  |>  53            PUSH    EBX                    ; /Style
    00412020  |.  57            PUSH    EDI                    ; |Title
    00412021  |.  FF75 08       PUSH    [ARG.1]                ; |Text
    00412024  |.  FF75 F4       PUSH    [LOCAL.3]              ; |hOwner
    00412027  |.  FF15 A8534100 CALL    DWORD PTR DS:[4153A8]  ; \MessageBoxA
    0041202D  |.  85F6          TEST    ESI, ESI              ; 停在此处
    0041202F  |.  8BF8          MOV    EDI, EAX
    00412031  |.  74 05         JE      SHORT 1551-CRA.00412038

    F8单步一下,切换到“MessageBox”中,确认,被OD中断。我们可以看见上面的代码41201F处有一个“〉”,说明可以从某段代码跳转到此处,我们选择41201F这一行,在“Information”栏看见一句“JUMP FROM 412003”,右键单击,选择“GO TO JUMP FROM 412003”。回到412003,一般都是条件跳转,上面的内容就是比较的地方啦。:)

    5、使用OD的TRACK功能
       
       OD拥有强大的TRACK功能,在分析算法时十分有用。首先我们要设定OD的TRACK缓冲区大小,选择Option\Debugging Option,在弹出的对话框中选择TRACK页,“Size of run track buffer(byte/record)”,缓冲区大小,当然约大约好。其他的设置在我以前的OLLYDBG.INI中都已经设置好了。然后,开启目标程序,在DEBUG中选择“Open or clear run track”。然后我们就可以用CTRL+F11或CTRL+F12开启“Track into”和“Track over”了。当我们暂停程序的时候,可以用小键盘上的“+”,“-”,“*”来控制TRACK功能了。

    “Track into”和运行类似,但是记录所有指令以及寄存器变化。并且会自动进入所有的CALL中。
    “Track over”和“Track into”类似,但是不进入CALL
    “+”用来显示TRACK缓冲区中的下一条指令
    “-”用来显示TRACK缓冲区中的上一条指令
    “*”用来发返回当前指令

    6、不是技巧的技巧
       当你遇到花指令的时候一定会很头痛。但是如果你用OD进行分析的时候就会轻松得多。OD会自动标识出无效指令,即花指令。如果OD没有正确识别,你还可以用CTRL+↑/↓来单个 字节的移动。可以很有效的识别出花指令的所在。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-4-23 14:17:52 | 显示全部楼层
    这么齐全,呵呵.
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-4-23 16:39:36 | 显示全部楼层

    非常好

    谢谢前几楼的介绍,让我这个小菜鸟有一点光亮
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-5-1 10:04:41 | 显示全部楼层
    非常感谢前辈!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-1-6 12:21
  • 签到天数: 90 天

    [LV.6]常住居民II

    发表于 2005-5-9 20:03:44 | 显示全部楼层
    我想新手看了以后应该有所收获的!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-10-12 17:42:45 | 显示全部楼层
    用过几次,但只会简单的。继续努力。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-10-14 09:36:11 | 显示全部楼层
    Originally posted by journeyan at 2005-5-1 08:12 PM:
    厉害,全啊~~~~


      是呀!非常有用!感谢!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-11-2 06:09:52 | 显示全部楼层
    菜鸟取经
    大虾请指教
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-3-4 19:26
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    发表于 2005-11-8 15:56:01 | 显示全部楼层
    厉害!!多谢!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表