首页
社区
课程
招聘
[分享]我的断点心得——帮初学者进阶
发表于: 2008-12-21 16:02 51228

[分享]我的断点心得——帮初学者进阶

2008-12-21 16:02
51228
收藏
免费 8
支持
分享
最新回复 (92)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jhb
51
学习了。不过od的断点很丰富。你就总结了这么点。呵呵。
2009-2-19 02:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
52
学习了
好东西
2009-2-20 08:48
0
雪    币: 101
活跃值: (88)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
53
先顶后看~~~~
2009-2-20 10:11
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
54
我平时就基本用crackme 合集练手的,
不过lz提到的这个run跟踪的方法来确定倒是对我挺新鲜的,
这个直接确定EIP的范围的小tip不错
2009-2-23 22:35
0
雪    币: 370
活跃值: (52)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
55
内容很不错,写得很不错
2009-2-24 22:00
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
56
我很赞同版主的说法,不要死抱着字串不放,万一字串参考一无所获咋办呢?请问书呆彭版主,在没有字串的情况下,应该根据什么对话框判断用什么断点呢?我所了解的只有消息框和注册表,很多断点根本不知道。
2009-3-11 16:57
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
57
抛砖引玉而已,主要还是靠个人自己在使用过程中总结,不能全部依赖别人的经验。



用Platform SDK写程序多了,对相关的API自然就了解多了。如果不写程序,那这些API还真不好记。
2009-3-14 11:42
0
雪    币: 62
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
58
学习了,特别是GetWindowText时候的条件断点[ESP+4]==0x36011E.

文中提到用run跟踪的时候,用在exe的text模块上下内存断点似乎来得更方便高效
2009-3-26 09:39
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
59
[QUOTE=mmnihao;596887]学习了,特别是GetWindowText时候的条件断点[ESP+4]==0x36011E.

文中提到用run跟踪的时候,用在exe的text模块上下内存断点似乎来得更方便高效[/QUOTE]

下内存区段的断点是一种非常好的方法,在脱壳时常用到。

其实不同的方法有不同的用途。过我用了其中一种方法,不表示这种方法就是最好的。

这个例子里,用Run跟踪的方法,不如下访问断点更快。

但Run跟踪的它的好处,它可以记录跟踪过程程序执行的流程和每一步中程序的寄存器状态,这一功能是某些场合中,会十分有用,而在区段上下断点的方法就不适合了。

我写此文的目的,是说解决问题有许多种不同的方法,要根据具体的情况选择最合适的方法,而不应该机械地学习别人解决某一个特定问题的具体步骤(不管是“字符串搜索”的办法,还是“Running”跟踪的方法)。
2009-3-29 15:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
60
谢谢了,记下了!
2009-3-29 16:06
0
雪    币: 398
活跃值: (59)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
61
楼主,你的第一个例子(例1),注册码的计算过程好像不可逆(我逆不过来)。
其注册码验证过程的C++码是:
#include "iostream.h"
void main()
{
        unsigned char NameStr[20]="";
        unsigned char DeStr[9]="";
        int edi=0;
        unsigned char al,bl,cl;
       
        cout<<"Input Name(len<9):  ";
        cin>>NameStr;

        for(int i=0; i<8; i++) //ecx=8; //
                NameStr[i]=NameStr[i]^0x32;
       
        for(int j=0; j<8; j+=2) // ecx=4;
        {
                al=NameStr[j];
                bl=NameStr[j+1];
                al=al^bl;
                DeStr[edi]=al;
                edi++;
        }
       
        int k=0;

        DeStr[k]^=DeStr[k+1];
        DeStr[k+2]^=DeStr[k+3];
        DeStr[k]^=DeStr[k+2];

        for(k=0; k<8; k++) //ecx=8;
                NameStr[k]^=DeStr[0];

        int flag=1;
        unsigned Code[]={0x71,0x18,0x59,0x1b,0x79,0x42,0x45,0x4c};

        for(k=0; k<8; k++)
                if( NameStr[k]!=Code[k])
                {
                        flag=0;
                        break;
                }
               
                if(flag==0)
                        cout<<"Sory!";
                else
                        cout<<"Yes";
}

请问有哪位道上朋友帮帮忙,可以将例1注册机的C码贴出码?先谢谢了!
2009-4-2 23:06
0
雪    币: 398
活跃值: (59)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
62
埋头苦干半天,才发现楼主已经在帖子中贴出了解决的办法。谢谢了,看样子,我还只是一个……。^=^
2009-4-2 23:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
63
我是刚入门的
谢谢楼主写的教程,同时期待更的多教程给生手学习
2009-4-4 09:49
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
64
OD的跟踪还可以用来搞定压缩壳。。。
2009-4-4 10:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
65
顶下,不看了,回家学习去
2009-4-4 11:15
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
66
OLLY2新增加了一个功能:当程序执行到自修改过的代码暂停程序——这个功能就是专门针对压缩壳或其它自修改的代码的。
2009-4-10 23:44
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
67
呵呵,真心的感谢你,实在是对我这种菜鸟级的新手太有帮助了.
2009-4-16 13:16
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
68
感谢了我基本能看得懂,不过还有很多疑问需要解决HOHOH
2009-4-20 10:54
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
69
请问楼主:
关于例二中的Wrapper。
如何识别包装函数(Wrapper)函数?
它有什么特点?
如何能快速识别函数是被包装的?
2009-4-20 22:54
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
70
三个软件我也就能搞掉第一个,第二个开始就不大行了真郁闷啊有谁跟我情况差不多的联系下我们自己研究下
2009-4-21 15:13
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
71
所谓包装,就是自身没有完成实质的功能,只是简单地、直接地通过调用其它函数并将其结果返回,可能会对结果的格式做一些适配。

一般这样的函数都很短,功能都很直观,通常就是把参数重新压栈并调用其它的函数。比如MFC中的很多函数,如AfxMessageBox之类的,就是简单的调用系统中的MessageBox来实现功能的(当然要先准备好必要的参数了)。
2009-4-25 17:59
0
雪    币: 190
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
72
感谢了,很有用的资料
2009-5-4 09:12
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
73
好啊,我就是迷茫与下断点了,有的软件拿来一点信息都没有,不知道怎么破解,关键是断点不知道怎么下类型。终于看道这样的文章了,希望多发表这些文章
2009-5-13 19:03
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
74
现在破解软件想找字符参考几乎是没有的了,谢谢了
2009-5-17 12:37
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
75
恩,很好的资料,可以帮初学者晋级
2009-5-18 16:22
0
游客
登录 | 注册 方可回帖
返回
//