网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 局域网DIY—专业局域网网站 >> 局域网教程 >> 网络安全 >> [安全攻防] >> 文章正文
  ollydbg1.08b教学篇          【字体:
ollydbg1.08b教学篇
作者:互联网    文章来源:www.98pc.com    点击数:    更新时间:2006-4-11    
23; 例如:我们双击004D1174 就会变成$ ==> 
我们再右键单击JE 000D120D选择"保存文件"                                    { 双击机器码栏就是设这个地址为断点 
5)输入你设想的文件名就可以了                                                {例如:双击0F85 93000000我们可以看到变红了 
6)运行,呵呵!!已注册!                                                        {说明我们已经把004D1174设置为断点再双击就恢复 
                                              

~~~~~~~~~~~~~~~~~~~~~~~~~***爆破结束***~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
经过上面的过程 
如果你觉得不过瘾就到注册表HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\changid 
删除该键的键值(如果已注册没注册就不用了) 
我们继续这次我们要动态分析了~~ 
################################动态分析################################### 
动态分析的前提就是静态分析,我们回过头看一下静态分析的结果 
:004D116B 8B55E4                  mov edx, dword ptr [ebp-1C] 
:004D116E 58                      pop eax 
:004D116F E8C42CF3FF              call 00403E38        //这个是比较的call 
:004D1174 0F8593000000            jne 004D120D 

那么我们就在004D116B设置断点吧~~~ 
F2或者双击机器码栏设置断点---F9(运行)--输入用户名winroot,获取ID,ID号码4835812338,点击注册, 
程序被OLLYDBG拦截, 
乖乖~~ 
你猜我们看见了什么!!!!一串数字耶!!!3230027325再往右下看堆栈窗口一行ID号码4835812338,一行3230027325 
你看他那张脸,长得都像注册码~~~ 
退出来试一下~~~你快看我的脸  :-) 
呵呵~~~~成功~~~ 
内存注册机你就自己作吧~锻炼一下! 

################################################################## 
破的还不过瘾~~~~~~~~!!! 
怎么办? 
crack的宗旨就是制作出keygen 
下面我们就来试一下, 
首先还的分析~~通过上面的动态分析我们知道序列号的生成肯定在004D116B上面的某一段程序, 
~如何确定只有跟踪,看注册码最新一次是在哪个地方出现! 
所以我们再向上看的时候发现了一个循环!非常可疑,下断点跟踪! 
(ollydbg会把循环标出来!) 
004D10EA  |. C745 F0 000000>MOV DWORD PTR SS:[EBP-10],0 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~F2或者双击机器码栏设置断点- 
--F9(运行)--输入用户名winroot,获取ID,ID号码4835812338,点击注册,程序被OLLYDBG拦截. 
我们按F8(单步跳过)一下一下地执行,注意观察寄存器和堆栈的变化!! 
004D10F1  |. C745 F4 000000>MOV DWORD PTR SS:[EBP-C],0 
004D10F8  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4] 
004D10FB  |. E8 282CF3FF    CALL UNPACKED.00403D28 
004D1100  |. 8BF0          MOV ESI,EAX 
004D1102  |. 85F6          TEST ESI,ESI 
004D1104  |. 7E 2D          JLE SHORT UNPACKED.004D1133 
004D1106  |. BB 01000000    MOV EBX,1                  //计数器 
004D110B  |> 8B45 FC        /MOV EAX,DWORD PTR SS:[EBP-4]//取id字符串 
004D110E  |. 807C18 FF 00  |CMP BYTE PTR DS:[EAX+EBX-1],0 
004D1113  |. 74 1A          |JE SHORT UNPACKED.004D112F  //是零就跳! 
004D1115  |. 8B45 FC        |MOV EAX,DWORD PTR SS:[EBP-4]//EAX=STR 
004D1118  |. 8A4418 FF      |MOV AL,BYTE PTR DS:[EAX+EBX-1]//AL=STR[EBX-1] 
004D111C  |. 25 FF000000    |AND EAX,0FF 
004D1121  |. 33D2          |XOR EDX,EDX 
004D1123  |. 0345 F0        |ADD EAX,DWORD PTR SS:[EBP-10]//和第一次的值相加 
004D1126  |. 1355 F4        |ADC EDX,DWORD PTR SS:[EBP-C] 
004D1129  |. 8945 F0        |MOV DWORD PTR SS:[EBP-10],EAX//存进去 
004D112C  |. 8955 F4        |MOV DWORD PTR SS:[EBP-C],EDX 
004D112F  |> 43            |INC EBX//计数器加1 
004D1130  |. 4E            |DEC ESI 
004D1131  |.^75 D8          \JNZ SHORT UNPACKED.004D110B//循环取累加和 
004D1133  |> 6A 00          PUSH 0                    
004D1135  |. 68 F1E05D00    PUSH 5DE0F1                  //入栈 
004D113A  |. 8B45 F0        MOV EAX,DWORD PTR SS:[EBP-10]//取序列号的累加和 
004D113D  |. 8B55 F4        MOV EDX,DWORD PTR SS:[EBP-C] 
004D1140  |. E8 874FF3FF    CALL UNPACKED.004060CC        //累加和*0x5DE0F1 
004D1145  |. 8945 F0        MOV DWORD PTR SS:[EBP-10],EAX 
004D1148  |. 8955 F4        MOV DWORD PTR SS:[EBP-C],EDX 
004D114B  |. 8D55 E8        LEA EDX,DWORD PTR SS:[EBP-18] 
004D114E  |. 8B87 F8020000  MOV EAX,DWORD PTR DS:[EDI+2F8] 
004D1154  |. E8 B7D3FBFF    CALL UNPACKED.0048E510        //变成10进制--真序列号 
004D1159  |. 8B45 E8        MOV EAX,DWORD PTR SS:[EBP-18] //取假序列号的字符串 
004D115C  |. 50            PUSH EAX 
004D115D  |. FF75 F4        PUSH DWORD PTR SS:[EBP-C]                 /Arg2;返回值 
004D1160  |. FF75 F0        PUSH DWORD PTR SS:[EBP-10]               |Arg1;序列号 
004D1163  |. 8D45 E4        LEA EAX,DWORD PTR SS:[EBP-1C]             | 
004D1166  |. E8 0574F3FF    CALL UNPACKED.00408570                   \UNPACKED.00408570 
004D116B  |. 8B55 E4        MOV EDX,DWORD PTR SS:[EBP-1C] 
004D116E  |. 58            POP EAX 
004D116F  |. E8 C42CF3FF    CALL UNPACKED.00403E38//比较 
004D1174  |. 0F85 93000000  JNZ UNPACKED.004D120D//跳出错误 

注意:所有的注释都是你跟踪以后根据寄存器和堆栈的变化得出的!也不是在一次跟踪中得出的,是跟踪了多次后得出的结论! 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 


结论:我们可以看出序列号是这样产生的,ID的每一位的ASCII值的累加和再和0x5DE0F1相乘得出的值转化为10进制形成序列号~~ 
所以 
name:winroot 
id:4835812338 
ser=[(0x34+0x38+0x33+0x35+0x38+0x31+0x32+0x33+0x33+0x38)*0x5DE0F

上一页  [1] [2] [3] 下一页

文章录入:wuwq    责任编辑:wuwq 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    DLL后门清除完全篇
    D2OL 让网络保卫大家的健康
    思科Catalyst8500配置实例
    Catalyst数据包监控类型SPAN
    Catalyst8500配置实例之HSRP
    Catalyst 4006交换机的配置实
    在Cisco Catalyst 交换机常见
    Catalyst 3550三层路由和HSR
    在Catalyst交换机配置TACACS
    Catalyst6509 4006交换机配置
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    局域网DIY】.版权所有 客服QQ:5820031 站长:晨光
    Copyright © 2000-2020 www.LANDIY.net All Rights Reserved
     


    粤ICP备05009256号