|
|
|
|
|
[原创] 算法分析入门教程实战篇及应用篇---NBA2005新春大奉送
附业余版本的查找注册码: 1.确定提示信息的位置。多数是错误的信息。设断方法文中已经详细叙述了。 2.向上查找关键的跳转。粗粗过一遍程序的大体结构,把握程序的流程和大体结构。 3.再向上寻找关键的CALL 、内存地址或堆栈窗口,结合与你输入的假用户名和假码相关的程序流程、汇编语言知识的理解综合研判。对大多数程序而言,注册码(特别是明码)往往在关键的跳转不远处的内存地址或堆栈窗口、寄存器窗口中。暗码分析要看懂大致的算法。 程序流程的理解能力的高低,决定了算法分析的效率和精确度。可以毫不夸张地说,算法分析的水平差距就在程序流程的把握能力上。这是我再三强调的原因。 具体举例如下: 阳小子的第一个易语言编写的EM,希望新手可以找回自信!高手飘! mingligli 已经做出了答案,我就可以简单分析如下,按照逆向追踪的顺序记录: 1.设断。上文已经详述。 2.向上查看关键跳转语句,粗粗过一遍,了解整个注册码处理大段的程序大致流程。 发现关键跳转语句都对应下面一排共十个JMP。 Breakpoints 地址 模块 激活 反汇编 注释 0041A6F1 阳小子EM 始终 push ebp (initial cpu selection) 0041A745 阳小子EM 始终 je 0041AD71 0041A7A1 阳小子EM 始终 jge 0041AD6C 0041A7FD 阳小子EM 始终 jnz 0041AD67 0041A893 阳小子EM 始终 je 0041AD62 0041A935 阳小子EM 始终 je 0041AD5D 0041A9CB 阳小子EM 始终 je 0041AD58 0041AA6D 阳小子EM 始终 je 0041AD53 0041AB0F 阳小子EM 始终 je 0041AD4E 0041ABB1 阳小子EM 始终 je 0041AD49 0041AC53 阳小子EM 始终 je 0041AD44 正确的提示段 0041AD3F /E9 00000000 jmp 0041AD44 0041AD44 \E9 00000000 jmp 0041AD49 0041AD49 E9 00000000 jmp 0041AD4E 0041AD4E E9 00000000 jmp 0041AD53 0041AD53 E9 00000000 jmp 0041AD58 0041AD58 E9 00000000 jmp 0041AD5D 0041AD5D E9 00000000 jmp 0041AD62 0041AD62 E9 00000000 jmp 0041AD67 0041AD67 E9 00000000 jmp 0041AD6C 0041AD6C E9 00000000 jmp 0041AD71 0041AD71 8BE5 mov esp, ebp 估计要经过十次考验,只要一次不通过就绕过正确的提示。有了大致的程序流程的框架, 破解的目标就很明确了。 3.再向上一直到整个注册码处理大段的段首,设断0041A6F1 55 push ebp: 0041A6EF 5D pop ebp 0041A6F0 C3 retn 0041A6F1 55 push ebp 0041A6F2 8BEC mov ebp, esp 0041A6F4 81EC 0C000000 sub esp, 0C 0041A6FA 6A FF push -1 0041A6FC 6A 08 push 8 0041A6FE 68 72000116 push 16010072 0041A703 68 01000152 push 52010001 0041A708 E8 610A0000 call 0041B16E 0041A70D 83C4 10 add esp, 10 第一个判断是注册码不能为空。 第二个判断是判断注册码位数小于0A。 0041A79D 837D F8 0A cmp dword ptr [ebp-8], 0A 0041A7A1 0F8D C5050000 jge 0041AD6C 第三个判断是判断注册码位数为07。 0041A7F9 837D F8 07 cmp dword ptr [ebp-8], 7 0041A7FD 0F85 64050000 jnz 0041AD67 前三个判断是对注册码的限制条件。其中第二个判断是干扰,不重要。 4.程序流程概念清晰的人立刻想到剩下的七个判断就是分别逐位地判断。 后面七个判断的关键对比: 0041A9C7 837D F4 00 cmp dword ptr [ebp-C], 0 关键对比前的关键CALL: call 0041A58D 查找所有命令:call 0041A58D 找到的命令有八个: 找到的命令 地址 反汇编 注释 0041A71B call 0041A58D 判断注册码不能为空。 0041A869 call 0041A58D 0041A90B call 0041A58D 0041A9A1 call 0041A58D 0041AA43 call 0041A58D 0041AAE5 call 0041A58D 0041AB87 call 0041A58D 0041AC29 call 0041A58D 看来要处理比较七次。 全部设断(除外注册码不能为空的判断),进入此 CALL: 0041A58D 8B5424 04 mov edx, dword ptr [esp+4] 假注册码 0041A591 8B4C24 08 mov ecx, dword ptr [esp+8] 内存地址0040C0EC处的字符串 0041A595 85D2 test edx, edx 0041A597 75 0D jnz short 0041A5A6 0041A599 33C0 xor eax, eax 0041A59B 85C9 test ecx, ecx 0041A59D 74 06 je short 0041A5A5 0041A59F 8039 00 cmp byte ptr [ecx], 0 0041A5A2 74 01 je short 0041A5A5 0041A5A4 48 dec eax 0041A5A5 C3 retn 0041A5A6 85C9 test ecx, ecx 0041A5A8 75 09 jnz short 0041A5B3 0041A5AA 33C0 xor eax, eax 0041A5AC 803A 00 cmp byte ptr [edx], 0 0041A5AF 74 01 je short 0041A5B2 0041A5B1 40 inc eax 0041A5B2 C3 retn 0041A5B3 F7C2 03000000 test edx, 3 0041A5B9 75 37 jnz short 0041A5F2 0041A5BB 8B02 mov eax, dword ptr [edx] 0041A5BD 3A01 cmp al, byte ptr [ecx] 0041A5BF 75 2B jnz short 0041A5EC 0041A5C1 0AC0 or al, al 0041A5C3 74 24 je short 0041A5E9 0041A5C5 3A61 01 cmp ah, byte ptr [ecx+1] 0041A5C8 75 22 jnz short 0041A5EC 0041A5CA 0AE4 or ah, ah 0041A5CC 74 1B je short 0041A5E9 0041A5CE C1E8 10 shr eax, 10 0041A5D1 3A41 02 cmp al, byte ptr [ecx+2] 0041A5D4 75 16 jnz short 0041A5EC 0041A5D6 0AC0 or al, al 0041A5D8 74 0F je short 0041A5E9 0041A5DA 3A61 03 cmp ah, byte ptr [ecx+3] 0041A5DD 75 0D jnz short 0041A5EC 0041A5DF 83C1 04 add ecx, 4 0041A5E2 83C2 04 add edx, 4 0041A5E5 0AE4 or ah, ah 0041A5E7 ^ 75 D2 jnz short 0041A5BB 0041A5E9 33C0 xor eax, eax 0041A5EB C3 retn 0041A5EC 1BC0 sbb eax, eax 0041A5EE D1E0 shl eax, 1 0041A5F0 40 inc eax 0041A5F1 C3 retn 关键的内存地址: 内存0040C0EC 其中经典的关键比较处: 0041A5BB 8B02 mov eax, dword ptr [edx] 0041A5BD 3A01 cmp al, byte ptr [ecx] 0041A5BF 75 2B jnz short 0041A5EC 关键比较处设断: 0041A5BD 3A01 cmp al, byte ptr [ecx] 注意信息窗口的对比字符。要记住你自己输入的假码的ASCII值。 假码为1234567,较容易确定具体位数的字符。 按程序比较顺序整理如下: 字符判断1:第七位为! 字符判断2:第六位为m 字符判断3:第一位为y 字符判断4:第二位为x 字符判断5:第五位为c 字符判断6:第六位为m 字符判断7:第四位为e 第三位无要求。 内存地址0040C0EC处的字符!myxce共六个分别取值比较,可在此内存地址设访问断点。 正确注册码出来了:(yx*ecm!),第三位任意字符。 与用户名无关,这也是小BUG吧。不输入用户名没关系,只要注册码对就行。 唉,用户名成了聋子的耳朵---摆设! 其实是阳小子故意的,减少了可跟踪判断的信息。但同时也减轻了新手的破解工作量啊。 注册成功后:注册按钮变成了灰化的已注册。 如果你输入用户名,会显示Cracker by 用户名。 这个CRACK ME的难点有: 1:无提示。考易语言的特殊断点法。 2:循环多。考对程序流程的把握能力。猜CALL应该从属于程序流程的判断。 3:逐字乱序比较。考汇编语言的理解能力。 核心是程序流程的把握能力。 好记性不如烂笔头,将自己破解成功的CRACK ME写下来,能促进你对破解的理解。同时也能帮助别人共同进步。何乐而不为呢? 会否会否? 击皱一池春水 知否知否? 扬萧自在看雪 破否破否? 击皱一池春水 懂否懂否? 阳小子在看雪 |
|
[原创] 算法分析入门教程实战篇及应用篇---NBA2005新春大奉送
抱歉。春节前筹备构思了半个月,节日里连续奋斗了两天两夜一气呵成(为了保证写作思路的严谨和前后的呼应和谐)。很累。睡了一天,锻练了两三天,见了写作就怵。写过了才知道,为什么前辈都挑简单的程序做教材的示范例子。当时挺满意的。 其实我的文中已经详细的回答了。今天认真看了自己的辛苦大作,发现过于专业化了。因为本文的重点是对算法分析努力进行系统的理论阐述,核心是程序流程。个人的理解是:将研究重心放在算法分析的人多数具备对注册码的查找实战了。因此没有过多地着墨于此。 附业余版本的查找注册码: 1.确定提示信息的位置。多数是错误的信息。设断方法文中已经详细叙述了。 2.向上查找关键的跳转。粗粗过一遍程序的大体结构,把握程序的流程和大体结构。 3.再向上寻找关键的CALL 、内存地址或堆栈窗口,结合与你输入的假用户名和假码相关的程序流程、汇编语言知识的理解综合研判。对大多数程序而言,注册码(特别是明码)往往在关键的跳转不远处的内存地址或堆栈窗口、寄存器窗口中。暗码分析要看懂大致的算法。 写作随笔点滴: 有许多的联想和瞬间飘过的灵感并没有体现在文中,都是为了体现算法分析的大核心而忍痛放弃。现就回忆记录如下: 元旦时,MM拿这个简单的CRACK ME向我求教。忽然感慨:这么有名的看雪论坛,在算法分析的教学上,居然都是单一的记叙文。好些的文章里,偶尔会飘出一两句经典的经验体会。但就系统性来说,远远不能满足新兵的强烈求知欲。难道就不能多些议论文、多些专题论文?难道真是我的水平比他们好、文才比他们优美?我还没有无知到这个地步。gzgzlxg的API 绝密档案系列的精彩,大家有目共睹。看雪论坛上,研究利用程序注册机的人很多,水平高的人也不少,但象laomms那样无私地将自己系统的理论、经验毫无保留地奉献、公开,恐怕曲指可数。如果看雪论坛有声望排行榜的,我相信laomms一定榜上有名。正是laomms的无私,才有了我的这篇拙著。无提示的例子,也是最后才决定加入的。 现代的破解人,需要有远大的眼光和清醒的政治头脑。现代的战争里,虚拟战场已经成为关系国家安全的最核心的战场。当人们在讨论金融战争时,又有多少人意识到外国金融这两年对中国金融的巨大冲击。房产、期货、黄金、外汇和股市、债券......几乎所有的金融品种全部随国外相关品种创出历史新高。在高昂的牛头下,又有多少人意识到未来两年多金融市场的惨烈。人无远虑,必有近忧。在遍地黄金的赚钱效应下,又有多少人在纸上富贵的梦里沉迷。慢涨巨跌的规律,同样造就了绝大多数人亏损的铁律。又有多少人会想到,中国金融市场两三年后的绝处逢春呢?大众很少有人意识到:外国的金融已经做好了对中国金融侵略的战略部署。箭在弦上!!!1997年,泰国的经济毁于外国金融的侵略,一点不为过。 金融如是,破解又何尝不是如此?经常上看雪的人都知道,看雪老是受到有心人有组织有技术含量的攻击。看雪不公开破国内的软件,同时及时通报软件作者有关的BUG,经常调试、检测许多的国内著名软件。很显然,攻击的利益团体来自国内的可能性很小。 似乎虚拟战争离我们很远。但黑客圈的人都知道,近几年中外黑客进行了多次的较量。很可惜,在我的菜鸟裁判的眼中,中国的劣势很明显。与老百姓关系最密切的就是大众软件和游戏软件的破解,这实质就是经济发展的相互破坏。银行、金融、信息、通讯、交通......,哪一项离得开电脑?哪一项离得开程序?一个非洲国家的大选工具竟被亲美派做了手脚,其意义和启示是深远的。最显著的例子就是中国的股市,人为控制的痕迹相当明显,政治意图逼迫人民币升值,缓解某大国的巨大财政赤字。 扯远了?NO!黑客、破解和软件开发,这三者对未来国家安全的重要性日益明显。为什么多家软件公司给熊猫烧香的作者许诺未来?为什么CRACK ME将“软件漏洞分析入门”置顶?为什么现在的研究重点放在了密码学上?为什么欧洲和其他国家抵制有后门机关的WIN视窗和浏览器? 2004年8月17日的美国加州圣巴巴拉,正在召开的国际密码学会议(Crypto’2004)安排了三场关于杂凑函数的特别报告。在国际著名密码学家Eli Biham和Antoine Joux相继做了对SHA-1的分析与给出SHA-0的一个碰撞之后,来自山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告。因为她的研究成果作为密码学领域的重大发现宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。会议总结报告这样写道:“我们该怎么办?MD5被重创了;它即将从应用中淘汰。SHA-1仍然活着,但也见到了它的末日。 破解是相当有前途的一门新兴学科,必将会受到国家政策的大力扶持。在这方面,有着政府背景传闻的看雪论坛,做出了巨大的努力,并已经着手开始行动具体化。美国、台湾、欧洲和中国的劲敌印度,都大力扶持破解、软件开发和网络安全的发展。许多有着政府背景传闻的实力软件公司,也在四处寻找货真价实的相关人才。我期待着,破解和网络攻防的知识能早日出现在计算机专业大学的科目中。这是加强我国防安全的必然发展趋势。 在你迈向上述三大领域前,算法分析是道坎,而不是查找注册码。 在算法分析中,程序流程的理解能力的高低,决定了算法分析的效率和精确度。可以毫不夸张地说,算法分析的水平差距就在程序流程的把握能力上。这是我再三强调的原因。而写注册机,则更让我们加深对程序流程的理解。许多高手也知道这道理,但怕吓跑了新手。 汇编知识随着经验的积累和多次练习,很快就能掌握。但对程序流程的把握能力,却是需要天分的,与是不是学计算机专业没有关系。这能回答为什么许多业余的破解手能超越学计算机专业的。2008年NBA2005算法分析实战淘汰赛是你学习破解和有没有发展潜力的理论依据。 突破了算法分析,就要面临发展方向的选择了。人的精力是有限的,只能发挥人的特长,才会人尽其用。你的优势就是你的发展方向。 脱壳? 软件调试和完善? 密码学? 翻译? 教学? 文秘? 汉化? 几点建议: 1.脱壳也是破解的重要技术。建议脱壳CRACK ME 专栏。 2.每年评选十大优秀破文。 3.开辟破解技术的专题教学,如算法分析或密码学、程序BUG、利用程序自身做注册机等等。 呵呵,象写网络小说了。 签上特征: 没有远虑 必有近忧 没有看雪 必有雪灾 破友们 大家起来 为看雪的兴旺 众人拾柴火焰高。 |
|
[原创] 算法分析入门教程实战篇及应用篇---NBA2005新春大奉送
怪了,排序老改不过来: 附算法分析入门教程实战篇基础知识之二:常用ASCII表 数 字类: 数 字 0 1 2 3 4 5 6 7 8 9 十六进制 30 31 32 33 34 35 36 37 38 39 十 进制 48 49 50 51 52 53 54 55 56 57 大写字母: 字 母 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 十六进制 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 十 进制 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 小写字母: 小写字母 a b c d e f g h i j k l m n o p q r s t u v w x y z 十六进制 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 十 进制 97 98 99 100101102103104105106107108109110111112113114115116117118119120121122 特殊字符: 字 符 ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ 十六进制 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 3A 3B 3C 3D 3E 3F 40 5B 5C 5D 5E 5F 60 7B 7C 7D 7E 十 进制 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 58 59 60 61 62 63 64 91 92 93 94 95 96123124125126 使用频率高的: 数 字:'0'~'9' --> 30~39 大写字母:'A'~'Z' --> 41~5A 小写字母:'a'~'z' --> 61~7A 特别字符:空 格' '--> 20 连字符'-'--> 2D |
|
[原创] 算法分析入门教程实战篇及应用篇---NBA2005新春大奉送
套用周星驰--武状元苏乞儿的经典对白: 降龙十七式使用完毕,第十八式就靠你自己的悟性和汗水了。 天才=百分之一的灵感+百分之九十九的汗水。 看雪论坛之藏龙卧虎是破解界公认的。CRACK ME的难度也是业内公认的。 所以,开始做不出来很正常。别灰心。坚持,坚持,再坚持。 好累啊。以后就要忙考试了。我会想念大家的!我会常来玩的。 汇集其他人写的此CRACK ME 的破文: { 【原创】题目为“Splish,Splash”的crackme的算法分析(菜鸟第一次) -------------------------------------------------------------------------------- 标 题: 【原创】题目为“Splish,Splash”的crackme的算法分析(菜鸟第一次) 作 者: WILDBUG 时 间: 2006-06-17,16:18 链 接: http://bbs.pediy.com/showthread.php?t=27566 【破解作者】 wildbug 【作者邮箱】 :) 【作者主页】 :) 【使用工具】 OD, PEiD,ASCII码转换,windows计算器 【破解平台】 Win98 【软件名称】 题目为“Splish,Splash”的crackme 【下载地址】 看雪论坛精华5-序列号-splish 【软件简介】 一个crackme,有3个输入框,第一个为Hard Coded,输入,下面有Check HardCoded按钮,第二、三是输入Name和 Serial的,下面有Name/Serial Check按钮。 【软件大小】 232KB 【加壳方式】 无 【破解声明】 献给和我一样看到无明码就想爆破的兄弟:) } { 一个2合1的CRACKME算法分析 -------------------------------------------------------------------------------- 标 题: 一个2合1的CRACKME算法分析 作 者: 逍遥风 时 间: 2006-02-15,13:31 链 接: http://bbs.pediy.com/showthread.php?t=21346 } |
|
[原创]常见自校检分析实例
我说最近脱壳老是不顺呢。 别说,答案就在这呢。 幸亏在看雪的同时又在论坛上浏了一圈,可逮着你了。 谢谢,好文,值五个精。不发个勋章太亏了。 弟兄们说呢? 创新是破解前进的动力。应该大力鼓励。 |
|
[原创]一个入门级的CrackMe分析(适合新手)业余版 与高手Petnt文参考阅读
欲与CCDEBUGer一比高! 呵呵,牛皮嘛,谁不会吹啊! CCDEBUGer是谁? OllyDB入门教程.chm的作者。 严重鄙视剽窃别人作品的人 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值