首页
社区
课程
招聘
[旧帖] [求助]自效验的问题 0.00雪花
发表于: 2008-5-5 03:55 14314

[旧帖] [求助]自效验的问题 0.00雪花

2008-5-5 03:55
14314
收藏
免费 0
支持
分享
最新回复 (69)
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
51
我晕......sessiondiy可以去中五百万了....

我的OD左边地址都快全部变成红色了~~
2008-5-12 15:01
0
雪    币: 317
活跃值: (93)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
52
那位大牛写个教程吧,让我们这些小第也成功下,我也按照你的做法得了
2008-5-12 15:22
0
雪    币: 317
活跃值: (93)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
53
感谢大牛的教育,希望能写下完整破解篇,让小第们也得也见识
2008-5-12 15:29
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
54
啊...不会写..因为没什么过程 , 而且我也不是用 OllyDbg
若硬要说有的话..那就

TerminateProcess 时, [ESP+18h] 的上面几行就看到在判断档案大小了
2008-5-12 19:46
0
雪    币: 317
活跃值: (93)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
55
谢谢楼上大牛的教育我受教啦!!
2008-5-12 20:56
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
56
这种方法在OD里好像行不通,这个程序直接通过JMP EAX到TerminateProcess的系统领空,所以CTRL+N那里断不到,BP TerminateProcess后没看到你所说的信息,看来光靠ollydbg不行。
2008-5-12 21:42
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
57
为什么 OllyDbg 用 bp MessageBoxA 可以正确的断下来,
而 TerminateProcess 却断不下来啊?
2008-5-12 22:12
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
58
CTRL+N那里断不了,用插件BP TerminateProcess可以断,但没看到你所说的信息。在你没公布答案之前,我看不出那段代码是比较文件大小。。。。
2008-5-12 22:30
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
59
刚刚用 OD 试了一下.

bp 480b3e   <- 检查 Loader
bp 4b50c1   <- 检查 FileSize

上面第1点.   你要先略过他的比对 Explorer ' CMD
没略过的话好像结束跟 TerminateProcess 无关.

然后才会来到第2点(比对FileSize处), 此时他的结束 可正确的断在 TerminateProcess 的开头.
2008-5-12 22:50
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
60
第一点已经略过,可以断TerminateProcess ,这个程序我也跟了很久没头绪,水平太菜,总之多谢sessiondiy出手。
2008-5-12 23:10
0
雪    币: 317
活跃值: (93)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
61
这个程序好象断点下啦,要就是能停下来,但是却找不到内容,要就是断不下来直接就给关闭,我现在去试试大牛写的这些办法!!!
2008-5-12 23:53
0
雪    币: 295
活跃值: (346)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
62
004B50C1    817D CC 301F080>cmp     dword ptr [ebp-34], 81F30
004B50C8    0F8C 05000000   jl      004B50D3
2008-5-13 02:42
0
雪    币: 317
活跃值: (93)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
63
楼上的大牛,关键是如何来到你上面写的这里!!1下那个段
2008-5-13 03:04
0
雪    币: 295
活跃值: (346)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
64
第一个检查, 过 loader , 是下断 bp ExitProcess, 略过。

第二个检查, 是下断 bp TerminateProcess, F9, 断下

然后到 Menu ==> View ==> Call stack , 如下:

Call stack of main thread
Address    Stack           Procedure / arguments                 Called from                   Frame
0012FBE8   004AAAD3        .004B6A8F                          .004AAACE                  0012FC00

很明显, call stack 不全;

CPU 窗口,Ctrl+G 到 004AASACE, 看到 有些反汇编代码是 db ..., 如下

004AAACE  |.  E8 BCBF0000   call    004B6A8F
004AAAD3  |.  3965 F8       cmp     dword ptr [ebp-8], esp
004AAAD6  |.  74 0D         je      short 004AAAE5
004AAAD8  |.  68 06000000   push    6
004AAADD  |.  E8 A7BF0000   call    004B6A89
004AAAE2  |.  83C4 04       add     esp, 4
004AAAE5  |>  E9 00000000   jmp     004AAAEA
004AAAEA  |>  8BE5          mov     esp, ebp
004AAAEC  |.  5D            pop     ebp
004AAAED  \.  C2 0400       retn    4
004AAAF0      55            db      55                               ;  CHAR 'U'
004AAAF1      8B            db      8B
004AAAF2      EC            db      EC
004AAAF3      81            db      81
004AAAF4      EC            db      EC
004AAAF5      1C            db      1C
004AAAF6      00            db      00

右键点CPU窗后, Analysis ==> Remove analysis from module

再看 Call stack 如下:

Call stack of main thread
Address    Stack           Procedure / arguments                 Called from                   Frame
0012FBE8   004AAAD3        .004B6A8F                          .004AAACE                  0012FC00
0012FC04   004B5142        ? .004AAA7F                        .004B513D
0012FC68   004B51A4        .004B449B                          .004B519F                  0012FC64
0012FC80   77D1CCD1        Includes .004B51A4                 USER32.77D1CCCE               0012FC9C
0012FCA0   77D1CDAD        USER32.77D1CC7D                       USER32.77D1CDA8               0012FC9C
0012FCC0   004B4301        .004B6A8F                          .004B42FC                  0012FCBC
0012FCE4   10028ED9        Includes .004B4301                 krnln.10028ED6                0012FCE0
0012FD18   100523D8        krnln.10028E69                        krnln.100523D3                0012FD14
0012FD48   10056AB9        krnln.10051FE0                        krnln.10056AB4
0012FD58   10056A7A        Includes krnln.10056AB9               krnln.10056A78
0012FD68   10053A91        krnln.10056A60                        krnln.10053A8C
0012FD6C   000007D8          Arg1 = 000007D8
0012FD70   0012FE24          Arg2 = 0012FE24
0012FD74   00000000          Arg3 = 00000000
0012FE50   10053EB0        krnln.10053160                        krnln.10053EAB
0012FE6C   10029658        krnln.10053E80                        krnln.10029653
0012FE78   004B6A47        .004B6A65                          .004B6A42

然后用 两个OD重跟,一个跟原程序, 一个跟脱壳的, 最好是在两台机器上跟, 效果最好。

过了第一个检查点后,  在所有的 上面的 Call stack 中的 Called from 地址上下断, 即

004AAACE
004B513D
004B519F
004B42FC

然后两个OD一起运行, 看看经过哪个call 后不一样, 脱壳的会过每一个断点, 到TerminateProcess,  未脱壳 的不会;

F8 经过下面的一句, 两个OD的结果不一样,

004B519F    E8 F7F2FFFF     call    004B449B

脱壳的在004B449B中会走到

004B513D    E8 3D59FFFF     call    004AAA7F

未脱壳的不会;

所以问题出在004B449B中, 用两个OD F8单步跟, 很快可发现过了004B50C8后不一样, 一个跳, 一个不跳
2008-5-13 08:14
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
65
blackeyes写的很详细,完美的步骤,原来堆栈调用可以这样用,受教。
2008-5-13 09:55
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
66
感谢blackeyes的指教!
以后一定发奋图强
2008-5-13 12:12
0
雪    币: 317
活跃值: (93)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
67
3Q那位大牛,我学会啦!!!!!
2008-5-13 14:47
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
68
Sorry. 问一个跟主题无关的问题.
当初在跟踪楼主的程式时发现 API名称 会正确的显示在右边, 如下:
像 GetModuleFileNameA 就有正确显示出来.(宽度问题, 右边的注解已去掉)

004011EC  /$  55            push    ebp
004011ED  |.  8BEC          mov     ebp, esp
004011EF  |.  68 80000000   push    80
004011F4  |.  FF75 08       push    dword ptr [ebp+8]
004011F7  |.  6A 00         push    0
004011F9  |.  E8 28000000   call    <jmp.&KERNEL32.GetModuleFileNameA>
004011FE  |.  8B4D 08       mov     ecx, dword ptr [ebp+8]
00401201  |.  8D4C08 FA     lea     ecx, dword ptr [eax+ecx-6]

可是我进入GetModuleFileNameA时, 却没有在开头或右边显示 API名称, 如下:

77E6BEC4 >  55              push    ebp
77E6BEC5    8BEC            mov     ebp, esp
77E6BEC7    83EC 10         sub     esp, 10
77E6BECA    56              push    esi
77E6BECB    57              push    edi
77E6BECC    64:A1 18000000  mov     eax, dword ptr fs:[18]

这种情况引发了, 像我下 bp MessageBoxA 可以正确. 但我去看断点列表时根本不知
那一个断点才是 MessageBoxA.

像SoftICE只要事先有将Kernel32.dll载入进来的话就会显示出来.
OllyDbg 要怎么做才能做到呢?

thx.
2008-5-14 10:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
69
这个确实很难搞啊,要等大虾了!
2008-5-14 13:36
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
70
好像原版的OD没命令下断功能,要靠插件,应该没这功能。
2008-5-14 15:33
0
游客
登录 | 注册 方可回帖
返回
//