标 题: 【分享】汇编学习心得
作 者: popeylj
时 间: 2007-07-16
链 接: http://bbs.pediy.com/showthread.php?p=335146#post335146
本文主要是介绍我当初学习的crackme的一个简介,也算是一个破解过程的里程碑过程。
首先,拿到我们的第一个crackme,输入注册码显示错误:I am Sad (除非你运气好输入正确:))
然后,我们开始破解
首先,分析是否有壳,我用的是PEid,经过分析
UPX 的壳,然后我们用upx shell 脱壳后,发现为 delphi 编写。用w32dasm反汇编脱壳的crackme ,查找字符串 I am sad ,(此为初级的简单之出,因为源程序没有处理这些字符串)
* Possible StringData Ref from Code Obj ->"请输入注册码"
|
:004513A4 BA28144500 mov edx, 00451428
:004513A9 8B83F0020000 mov eax, dword ptr [ebx+000002F0]
:004513AF E8ECF3FFFF call 004507A0
:004513B4 EB40 jmp 004513F6
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004513A2(C)
|
:004513B6 8D55F8 lea edx, dword ptr [ebp-08]
:004513B9 8B83F4020000 mov eax, dword ptr [ebx+000002F4]
:004513BF E8ACE1FDFF call 0042F570
:004513C4 8B45F8 mov eax, dword ptr [ebp-08]
:004513C7 8B152C3C4500 mov edx, dword ptr [00453C2C]
:004513CD E83632FBFF call 00404608
:004513D2 7512 jne 004513E6
* Possible StringData Ref from Code Obj ->"Welcome!"
|
:004513D4 BA40144500 mov edx, 00451440
:004513D9 8B83F0020000 mov eax, dword ptr [ebx+000002F0]
:004513DF E8BCF3FFFF call 004507A0
:004513E4 EB10 jmp 004513F6
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004513D2(C)
|
* Possible StringData Ref from Code Obj ->"I am sad!"
|
:004513E6 BA54144500 mov edx, 00451454
:004513EB 8B83F0020000 mov eax, dword ptr [ebx+000002F0]
:004513F1 E8AAF3FFFF call 004507A0
看到004513E6就是我们的错误信息的地方,所以这就是我们的关键点,在这个上下查找跳转过程就可以,大部分初级的过程是在这个错误的上面,(仅限初级这么容易,以后的就不好找了,呵呵)。
发现没有上面的jne 004513E6没有!!!这就是关键点,所以,我们就将004513D2 中的jne换成je或者nop就可以了((这就是爆破),可是如果想要软件原来的注册码就要看那个call调用了什么了。就需要我们再进一步了)。然后就是档案的修改了,用c32asm修改了。
如果有什么不明白的,可以跟贴,我尽力。
有人说这样会固化思想,可是我想这也是一种建议吧,因为在开始的时候,我当初也是很茫然的,所以,总得有个路子走,到后来学的多了,也就能活学活用了:)仅仅算是给新人的建议的一种吧。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!