![]() |
|
|||||||||||||||
| | 网站首页 | 局域网教程 | 软件说明书 | 局域网论坛 | | ||
|
||
|
|||||
| ollydbg1.08b教学篇 | |||||
作者:互联网 文章来源:www.98pc.com 点击数: 更新时间:2006-4-11 ![]() |
|||||
我们再右键单击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 |
|||||
| 文章录入:wuwq 责任编辑:wuwq | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | | |||||
|