首页
社区
课程
招聘
[旧帖] [分享]从OllyDBG 入门系列-学习 开始的新手之旅 0.00雪花
发表于: 2010-2-22 14:12 2451

[旧帖] [分享]从OllyDBG 入门系列-学习 开始的新手之旅 0.00雪花

2010-2-22 14:12
2451
今天把标题中的内容看了一遍,终于看懂了阿,例题也搞定了,呵呵。
大家有做OD练习的没有,一起聊聊。
等明天我准备把这个练习用的软件用OD给暴力破解掉,呵呵。

爆破过程:
还是用到原文中给出的方法,查找到Congrats! You cracked this crackme这一行。
说下我的思路及爆破过程:
软件破解成功的标志是显示“Congrats! You cracked this crackme”。这行是在00440F5。
那么就来查找怎么样才能显示这个文本,或者说程序是怎么运行到这一行的。
因为作者说了汇编在没有跳转的情况下就是一步步往下执行的。
所以现在开始顺着这个文本往上找,00440F56,跳转,点下看看,跳过了文本显示行00440F5,那么显然就不能让这步跳转执行,将JNZ改下:右键----〉汇编---->去掉中间的N----〉汇编于此;
改完了,继续从这个跳转再往上找,00440F39,又一个跳转,点下,发现它也跳过文本显示行,同样,右键----〉汇编---->去掉中间的N----〉汇编于此.
继续往上,到了原文说的断点位置了,那么很显然,能改了都改了,试下,点下:Register now。
OK,Congrats! You cracked this crackme

呵呵,在别人的基础上有点点心得,和大家分享下。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (27)
雪    币: 155
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
期待中

……
2010-2-22 14:36
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
今天把第三篇看完了,但是对中间调用函数对比输入字串和程序自己计算字串的计算还没有看明白,准备今天明天两天继续努力,看懂。
希望对OllyDBG 入门有兴趣的朋友一起来努力学习啊
2010-2-24 08:55
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我也在学习ollydbg,有什么问题共同探讨哈。
2010-2-24 12:04
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
刚开始学,只能按照人家验证好的程式做,现在只求能读懂作者的意思,然后能做出来,问题太多了阿
今天刚看了第四篇,内存断点的设置,就看不太懂了:我发现我反汇编窗口和内存数据窗口中显示的内容和作者的内容就不太一样,按照作者的说法,应该是机器不一样造成的,但是我还没有想明白。
明天继续
有什么想法欢迎一起来讨论

根据最近对计算机的研究,了解到了内存存储和访问的理论,那么不同的计算机位说不一样比如16位机/32位机/64位机,那么访问内存的方式----寻址方式会有不一样,另外CPU不一样,其寻址控制器的算法如果不一样,那么访问的内存地址也会不一样。
2010-2-24 16:21
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
嗯,我也在前几天看了那几篇入门,学到了很多东西,可惜我不是想破解游注册,而是学汉化
2010-2-24 18:44
0
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最近也看了看
2010-2-25 00:05
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习一下下 哦
2010-2-25 00:51
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学这些东西关键是用比如说OD,PEId这些软件,然后能够准确、快速的了解软件编写者的思路,在这个基础上,相对软件做什么都很容易了。
论坛坛主也说了,论坛的目的不是破解,而是学习,提升自己对软件的认识,提高自己编软件的水平。
2010-2-25 08:32
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
最近因为无法下载附件,所以入门系列5的练习一直没有做。
现刚刚完成了几遍,和大家分享下心得。
学破解的过程分两个部分,一个部分是编程者的思路/目的/方法,另一个部分就是改变编程者的目的/方法。
对于第二个部分,只要第一部分理清了,你就很容易做到。
对于第一部分,编程者的目的也很清楚,就是希望程序能实现一定的功能,同时不允许别人更改程序。但是思路和方法侧很难被我们探测到,否侧的话他/她的工作价值就大打折扣了。
思路,我的理解主要是算法,我用什么样的算法让你晕头晕脑,让你看不明白输入到输出的过程。
方法,就是实现我思路的方法,用计算机这个机器懂得语言实现的算法。
沿着以上的思路,我们可以首先学下OD,借助这个工具,计算机懂得语言初步翻译下,让我们对程序怎么运行的有个浅浅的认识。
但是OD中的汇编窗口中的代码还是看不太明白,没关系,再去读下汇编语言。
汇编语言确实难懂,我大一开始单片机就没有搞明白,现在还是不明白,就先计算机的最原始的东西开始吧------冯-诺依曼 式结构,呵呵,存储--取存储--执行---存储---取存储--执行----------,就这么简单,再研究下这个过程谁执行的,cpu--内存---cpu---内存----cpu----,挺好。
大的方向就是这样了,能否在细化点呢,看看cpu怎么执行的吧?再看看东西在内存中是怎么放得吧,然后又是怎么到里面找到东西的呢?
哈,原来牵涉到了内存/寄存器,正好和OD中的另两个窗口对应上了,不错,不错。
那现在开始做入门系列5的联系题吧,确实比前面的快多了。
2010-3-3 10:46
0
雪    币: 308
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
支持、、、、
2010-3-3 10:53
0
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
现在还有没有破解的例题啊,发给我我或是说一下,下载地址,找了老半天没找到哦
2010-3-3 13:37
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
[QUOTE=沉浮天宝;769603]现在还有没有破解的例题啊,发给我我或是说一下,下载地址,找了老半天没找到哦[/QUOTE]

点左上角的看雪学院,进入后,点靠右侧的专业论坛,进入后向下翻一下,就看到OD入门系列了,链接:http://www.pediy.com/bbs.htm
附件在帖子里面,好像你现在没有权限下,我现在有,但是不知道怎么放附件上去
2010-3-3 17:11
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
很有成就感吧!!继续努力吧!!
2010-3-3 23:34
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
昨天下午开始看OllyDBG 入门系列7,看起来有点吃力,就想把《Windows 程序设计》这本书先看下,了解下Windows 程序设计的基本理念,但是不巧是英文版的,文字是看的懂,但是下载的文件里面还跟着一些原代码,有的网站上说是要安装VC++6,可是我安装了,还是不会用上面的源代码,有哪位朋友知道,告诉一声,谢谢.
For each sample program, there are two different executable files,
one located in the RELEASE subdirectory and the other in the DEBUG
subdirectory. The executable in the DEBUG directory is intended to
be used for debugging。
看完这一段Readme,明白了一些,看书要仔细些才好
2010-3-4 08:58
0
雪    币: 15
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我还停留在第二篇OD教程的疑惑中无法自拔。。。
2010-3-4 09:37
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
/*--------------------------------------------------------------
   HelloMsg.c -- Displays "Hello, Windows 98!" in a message box
                 (c) Charles Petzold, 1998
  --------------------------------------------------------------*/

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     MessageBox (NULL,TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"),

     return 0 ;
}
这个是windows 程序编程第一个练习程序,我点VC++6的compile,就有下面这个报错:
--------------------Configuration: HelloMsg - Win32 Debug--------------------
Compiling...
HelloMsg.c
E:\Pc knowlege\Windowscxsjdwb\Chap\Chap01\HelloMsg\HelloMsg.c(14) : error C2059: syntax error : 'return'
执行 cl.exe 时出错.

HelloMsg.obj - 1 error(s), 0 warning(s)
有朋友能解释下吗?

等晚上回家下载一篇C++的教学文档继续学习吧

发现这句话和书上说的不一样,后面少了一个0和);我按照书上说的自己打字敲到电脑里面,是可以运行一个对话框出来的,但是用上面这一段程序,就不行,上面说的错误是解决掉了,但是给了另一个错误:
--------------------Configuration: HelloMsg - Win32 Debug--------------------
Compiling...
HelloMsg.c
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/HelloMsg.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

HelloMsg.exe - 1 error(s), 0 warning(s)

有看到这得朋友跟下贴,解释下,以帮助其他可能看到本贴的朋友。本人也在积极的思考中。
2010-3-4 10:21
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
有啥疑问,可以发出来,从我们新手的角度探讨下。
2010-3-4 10:22
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
今天说下8088机器寻址的事情。
8088是16位机,那么其最大寻址的范围是2的16次方64K,这么小的内存很难想象能满足机器存储的需要,为了扩大访问内存的能力,CPU创造了内存分段的存储方式。内存分段大概相当于我们军训的队列,段(段寄存器)就是方阵,队列的横排/竖排就相当于段内的偏移地址(指针),每个队列的最多人数就是64K,呵呵,现在好了,首先我可以搞64K个队列,每个队列最多有64K的大兵,那现在不得了啦,总共可以访问的内存地址达到64乘以64K,够用了吧。
接小来我们可以开始寻址了,8088这个机器虽然寄存器及内部总线是16位的,所以人家叫16位机嘛,但是它的地址总线又是20位的,这时候段寄存器给的地址就不能直接访问内存了(其实质是访问到内存的段,就是找到你这个兵属于哪个方阵的),怎么办,移位,其实质是将16位的扩展成20位的,但是这种扩展是由条件的,就是将这16位放在20位的高16位,剩下的4位补0。好了,找到你这个大兵所在的方阵了,该找你了,那么你是哪一排哪一列的呢,现在我们用到了另一个东西,地址偏移。假设你们这个方阵比较特殊,只有一排或者一列,那么恭喜你,你只需用一个基址(比如BX,BI,DI,BP,DP)一个指定就行了,或者你不想这么麻烦,直接说么方阵第三个鸟人出列,这个就是直接寻址;没直接喊得就是寄存器间接寻址/寄存器相对寻址;很不幸你的队列比较大,又有排又有列,这时候你就要用到基址+ 变址来喊人了,基址就是你所在的列,编制是你所在的行,比弱喊3列3排出列,呵呵,一排人都出来了;不行,我只找你这个臭小子,3列3排+100号出列,这下你就没地方跑了,这就是相对基址加变址的方式啦。这上面说到了5种寻址方式,还有两种,呵呵,比较容易理解,就不说了。
其实还有个东西比较的难懂,就是堆栈,因为我现在还没有研究透,但是猜想,应该是将方阵里面的排或者列直接换成堆栈名就OK了。
顺便说下,32位机器呢要比16位机器简单些。
以上的体会,欢迎大家一起来探讨阿。
2010-3-8 09:38
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
电脑在启动的时候出现蓝屏,或者是提示内存不能为“Read”或者“write”,然后蓝屏。基本上都是内存出了问题。
根据最近对于汇编程序的学习,结合《Windows 程序设计》的基础知识,我们知道,命令首先存在于内存中,CPU访问内存并控制内存,这样程序就能顺序执行,倘若内存条没有插好,那么CPU就找不到内存,开机自检完成后估计就没有什么动静了,倘若内存插好了,但是内存本身有问题,开机启动系统后,随着应用程序的增加,CPU调入内存的程序不断增加,那么就会产生内存空间不足,系统就有提示内存不能为“Read”或者“write”。然后关机或者蓝屏。另外一种是,调入的程序在内存中突然消失,然后又不能继续从硬盘将丢失的程序代码重新调进来,那么应用程序肯定就玩完了。
一点心得和大家分享。
2010-3-15 09:17
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
学习学习。。。
2010-3-15 11:55
0
雪    币: 110
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     MessageBox (NULL,TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"),

     return 0 ;
}
你看到你的代码没有。。中间有个错误。。
每语句结束的时候是使用“;”而不是使用,而且MessageBox结束前还少了个")"号
2010-3-15 12:47
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
呵呵 ,以前还会用ollydbg,不过现在也快忘光了
2010-3-15 14:11
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
555555555555还不知道这里搞什么不过感觉很好
2010-3-15 14:21
0
雪    币: 371
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
你很有潜力,努力啊
2010-3-15 16:24
0
游客
登录 | 注册 方可回帖
返回
//