首页
社区
课程
招聘
[原创]OllyDBG 入门系列(四)-内存断点
发表于: 2006-2-15 23:22 468928

[原创]OllyDBG 入门系列(四)-内存断点

2006-2-15 23:22
468928
收藏
免费 14
支持
分享
最新回复 (490)
雪    币: 244
活跃值: (189)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
426
所谓小端结束,就是存储常数或寄存器时,低字节存储在低地址,读取的时候内存高地址字节放在前面(高位)

比如
内存地址   存储数据
0          0x12      
1          34
2          56
3          78

如果有一条指令 MOV EBX,DWORD PTR DS:[00000000]
此时ebx=78563412

以下内容来自Pconline:

“endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。

我们一般将endian翻译成“字节序”,将big endian和little endian称作“大尾”和“小尾”。

对你的工作表示敬意!!
2011-9-6 14:51
0
雪    币: 10
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
427
学习了LZ辛苦了
2011-9-9 07:31
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
428
继续下午没看完的教程,感觉写的容易理解
2011-10-26 21:46
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
429
学习一下~~
2011-10-26 22:06
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
430
第四篇看完,,,明天继续。。
2011-10-27 00:03
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
431
谢楼主,入门砖呐
2011-11-7 22:07
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
432
大家说说,不顶行吗?

楼主辛苦了!!!
2011-11-15 23:26
0
雪    币: 170
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
433
虽然很久以前就开始破解,但一直没有系统的学习,看来还使得扎实的学习才可以的。
2011-11-24 13:34
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
434
看这样子,我还是从汇编开始学起吧。
2011-12-1 12:59
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
435
感谢楼主细心讲解,收获不少。
强烈支持楼主。
2012-5-8 22:08
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
436
卷标:GAME,则 ds:[0040339C]=9FCF87AA
卷标:空白,则 ds:[0040339C]=00000000

空白卷标,00401310下断点,esi=00401125 (CrackHea.00401125)
2012-5-17 10:34
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
437
学习一下~努力学习中
2012-7-18 15:46
0
雪    币: 108
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
438
表示没看懂
2012-8-1 21:44
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
439
好东西,学习。。。。。。。。。。。。
2012-8-23 07:59
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
440
這好像是c call 而不是 stdcall ??
2012-9-5 10:27
0
雪    币: 29
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
441
感谢楼主分享!
2012-9-28 10:24
0
雪    币: 81
活跃值: (453)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
442
很好很强大,仔细观摩完了
2012-10-17 13:47
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
443
mark
2012-10-26 09:55
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
444
学习了
2012-11-27 14:30
0
雪    币: 465
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
445
坚决支持,期待系列续..
2012-12-1 23:16
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
446
终于把注册机给写出来了。不过计算实在不知道怎写,就直接抄的ASM代码。
void CkeygenDlg::OnBnClickedOk()
{
        char* a1 = new char[100];
        memset(a1, 0, 100);
        int type1 = GetDriveTypeA(0);
       
   

    char* b1 = new char[100];
        memset(b1, 0, 100);
        GetVolumeInformationA(0,b1,0x0b,0,0,0,0,0);
       

        char* c1 = new char[100];
        memset(c1, 0, 100);
        _asm
        {
                PUSHAD
                MOV ESI,dword ptr[b1]
                MOVZX ECX,type1
                XOR EDI,EDI
abc:
                MOV EAX,ECX
                MOV EBX,DWORD PTR DS:[ESI]
                MUL EBX
                ADD EDI,EAX
                DEC ECX
                CMP ECX,0
                JNZ abc
                MOV EBX,c1
                MOV [EBX],EDI
                POPAD
        }
        *(DWORD *)c1 = *(DWORD *)c1^0x797A7553;
        //XOR ESI,797A7553
        sprintf(c1,"%d",*(DWORD *)c1);
       
        CString wc1(c1);
        t1.SetWindowTextW(wc1);
}
2012-12-19 23:48
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
447
很好的文章,讲得很细致 嘿嘿~
看完楼上的,自己也用C写了个注册机:

// -------------------------------------
// 需要和CrackHead.exe放在同一盘符下才行
// -------------------------------------
#include <windows.h>
#include <stdio.h>

int main()
{
        TCHAR szBuf[128];
        int  n;
        unsigned int iKey, iSum=0;

        n = GetDriveType(NULL);
        GetVolumeInformation(0, szBuf, 0x0b,
                0, 0, 0, 0, 0);

        // Key值只占用1个寄存器大小,四个节
        // 寄存器里字节存放次序与内存存放次序相反,所以倒过来
        // 每向高处移动一字节(8位),需要乘2^8
        iKey = szBuf[0] + szBuf[1]*16*16 + szBuf[2]*16*16*16*16 +
                szBuf[3]*16*16*16*16*16*16;

        for (int i=0; i<n; i++)
        {
                iSum += (n-i)*iKey;
        }

        iSum ^= 0x797a7553;

        printf("Key: %lu\n", iSum);
        system("PAUSE");

        return 0;
}
上传的附件:
2012-12-24 21:38
0
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
448
多年以后,仍然看的很精彩
2013-1-12 21:52
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
449
这几天天天在学习看雪文章
2013-1-26 19:15
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
450
学习了,一直想学这方面的知识
2013-1-30 00:40
0
游客
登录 | 注册 方可回帖
返回
//