动手玩CrackMe(五)
回到家就是无所事事,为了防止这种情况,我就找了找,有木有比较好玩的crack玩玩,然后找了找发现有个据说算法很好的无壳的,果断上手试了试,感觉确实不错...查看全文
动手玩CrackMe(三)
昨天五一放假最后一天伤不起,然后我就很愉快的忘记了破解的事情,今天回家,不知道还有没有耐心补昨天的,把今天这个先做了,今天这个其实收获还是很大的,东西简单,算法简单,我打算等等尝试写个注册机。...查看全文
动手玩CrackMe(一)
这两天表示一直没有啥动力去搞编程,顿时感觉失去了些人生目标和动力,看看渗透高不成低不就的样子,我觉得是不是应该换种人生状态去碰碰别的,等到我状态回来在继续搞。于是我就喵到了逆向,搞搞破解蛮好玩的其实。
前几天刚刚搞了看雪的crackme2007,然后忍不住调戏了下,人生第一个独立完成的crackme啊,自信心瞬间膨胀了。过程如下。
链 接: http://bbs.pediy.com/showthread.php?t=11222
【软件名称】Bigman’s Crackme6
========================================================================================
【分析过程】
有个脱壳的版本,然后我直接下了,二话不说,拖进OD,然后找GetDlgItemTextA下断点,随便输入用户名和密码就上了。
00401528 |. 68 00010000 push 100 ; /Count = 100 (256.)
0040152D |. 8D85 00FFFFFF lea eax, dword ptr [ebp-100] ; |
00401533 |. 50 push eax ; |Buffer
00401534 |. 6A 65 push 65 ; |ControlID = 65 (101.)
00401536 |. FF75 08 push dword ptr [ebp+8] ; |hWnd
00401539 |. E8 FA010000 call
0040153E |. 89C3 mov ebx, eax
00401540 |. 09DB or ebx, ebx ; 判断用户名是否为空
00401542 |. 75 04 jnz short 00401548
00401544 |. 31C0 xor eax, eax
00401546 |. EB 50 jmp short 00401598
00401548 |> BF BC020000 mov edi, 2BC
0040154D |. BE 30000000 mov esi, 30
00401552 |. B8 48000000 mov eax, 48
00401557 |. 99 cdq
00401558 |. F7FB idiv ebx
0040155A |. 29C6 sub esi, eax
0040155C |. 8D34B6 lea esi, dword ptr [esi+esi*4]
0040155F |. 29F7 sub edi, esi
00401561 |. 6BFF 6B imul edi, edi, 6B
00401564 |. 81EF 6CCF0000 sub edi, 0CF6C
0040156A |. 81FF 00230000 cmp edi, 2300 ; EDI=(2bc-(30-48/len)*5)*6b-cf6c
00401570 |. 7F 08 jg short 0040157A ; 3
00401578 |. 7D 04 jge short 0040157E
0040157A |> 31C0 xor eax, eax
0040157C |. EB 1A jmp short 00401598
0040157E |> 8D85 00FFFFFF lea eax, dword ptr [ebp-100]
00401584 |. 50 push eax
00401585 |. 53 push ebx
00401586 |. FF75 08 push dword ptr [ebp+8]
00401589 |. E8 77FDFFFF call 00401305
{
00401305 /$ 55 push ebp
00401306 |. 89E5 mov ebp, esp
00401308 |. 81EC 2C040000 sub esp, 42C
0040130E |. 53 push ebx
0040130F |. 56 push esi
00401310 |. 57 push edi
00401311 |. 8DBD FCFEFFFF lea edi, dword ptr [ebp-104]
00401317 |. 8D35 38204000 lea esi, dword ptr [402038]
0040131D |. B9 40000000 mov ecx, 40
00401322 |. F3:A5 rep movs dword ptr es:[edi], dword p>
00401324 |. 8DBD E1FBFFFF lea edi, dword ptr [ebp-41F]
0040132A |. 8D35 38214000 lea esi, dword ptr [402138]
00401330 |. B9 40000000 mov ecx, 40
00401335 |. F3:A5 rep movs dword ptr es:[edi], dword p>
00401337 |. 8DBD E1FDFFFF lea edi, dword ptr [ebp-21F]
0040133D |. 8D35 38224000 lea esi, dword ptr [402238]
00401343 |. B9 40000000 mov ecx, 40
00401348 |. F3:A5 rep movs dword ptr es:[edi], dword p>
0040134A |. 8DBD E1FCFFFF lea edi, dword ptr [ebp-31F]
00401350 |. 8D35 38234000 lea esi, dword ptr [402338]
00401356 |. B9 40000000 mov ecx, 40
0040135B |. F3:A5 rep movs dword ptr es:[edi], dword p>
0040135D |. 8DBD DCFBFFFF lea edi, dword ptr [ebp-424]
00401363 |. 8D35 38244000 lea esi, dword ptr [402438]
00401369 |. B9 05000000 mov ecx, 5
0040136E |. F3:A4 rep movs byte ptr es:[edi], byte ptr>
00401370 |. 8DBD D6FBFFFF lea edi, dword ptr [ebp-42A]
00401376 |. 8D35 3D244000 lea esi, dword ptr [40243D]
0040137C |. B9 03000000 mov ecx, 3
00401381 |. F3:66:A5 rep movs word ptr es:[edi], word ptr>
00401384 |. 8DBD E1FEFFFF lea edi, dword ptr [ebp-11F]
0040138A |. 8D35 43244000 lea esi, dword ptr [402443]
00401390 |. B9 1B000000 mov ecx, 1B
00401395 |. F3:A4 rep movs byte ptr es:[edi], byte ptr>
00401397 |. C745 FC 00000>mov dword ptr [ebp-4], 0
0040139E |. 68 00010000 push 100 ; /Count = 100 (256.)
004013A3 |. 8D85 E1FCFFFF lea eax, dword ptr [ebp-31F] ; |
004013A9 |. 50 push eax ; |Buffer
004013AA |. 6A 66 push 66 ; |ControlID = 66 (102.)
004013AC |. FF75 08 push dword ptr [ebp+8] ; |hWnd
004013AF |. E8 84030000 call
004013B4 |. 09C0 or eax, eax ; 判断序列号是否为空
004013B6 |. 0F84 48010000 je 00401504
004013BC |. B8 CF110000 mov eax, 11CF
004013C1 |. 0FB68D E1FCFF>movzx ecx, byte ptr [ebp-31F]
004013C8 |. 99 cdq
004013C9 |. F7F9 idiv ecx
004013CB |. 83FA 17 cmp edx, 17 ; edx = 11cf – 17 = 11B8
004013CE |. 74 07 je short 004013D7
004013D0 |. 31C0 xor eax, eax
004013D2 |. E9 2D010000 jmp 00401504
004013D7 |> 31DB xor ebx, ebx
004013D9 |. EB 0B jmp short 004013E6
004013DB |> 8B45 10 /mov eax, dword ptr [ebp+10]
004013DE |. 0FBE0418 |movsx eax, byte ptr [eax+ebx]
004013E2 |. 0145 FC |add dword ptr [ebp-4], eax ; 把用户名每位的ASCII值相加,存在0012F8F0
004013E5 |. 43 |inc ebx
004013E6 |> 3B5D 0C cmp ebx, dword ptr [ebp+C]
004013E9 |.^ 7C F0 \jl short 004013DB
004013EB |. 31DB xor ebx, ebx
004013ED |. E9 83000000 jmp 00401475
004013F2 |> 8B55 10 /mov edx, dword ptr [ebp+10]
004013F5 |. 0FBE3C1A |movsx edi, byte ptr [edx+ebx]
004013F9 |. 8B75 FC |mov esi, dword ptr [ebp-4]
004013FC |. 89D9 |mov ecx, ebx
004013FE |. C1E1 02 |shl ecx, 2
00401401 |. 89DA |mov edx, ebx
00401403 |. 42 |inc edx
00401404 |. 29D1 |sub ecx, edx
00401406 |. 0FB68C0D E1FE>|movzx ecx, byte ptr [ebp+ecx-11F]
0040140E |. 89FA |mov edx, edi
00401410 |. 31CA |xor edx, ecx
00401412 |. 89F1 |mov ecx, esi
00401414 |. 0FAFCB |imul ecx, ebx
00401417 |. 29F1 |sub ecx, esi
00401419 |. 89CE |mov esi, ecx
0040141B |. 83F6 FF |xor esi, FFFFFFFF
0040141E |. 8DB432 4D0100>|lea esi, dword ptr [edx+esi+14D]
00401425 |. 8B4D 0C |mov ecx, dword ptr [ebp+C]
00401428 |. 89DA |mov edx, ebx
0040142A |. 83C2 03 |add edx, 3
0040142D |. 0FAFCA |imul ecx, edx
00401430 |. 0FAFCF |imul ecx, edi
00401433 |. 89F0 |mov eax, esi
00401435 |. 01C8 |add eax, ecx
00401437 |. B9 0A000000 |mov ecx, 0A
0040143C |. 31D2 |xor edx, edx
0040143E |. F7F1 |div ecx
00401440 |. 83C2 30 |add edx, 30
00401443 |. 88941D FCFEFF>|mov byte ptr [ebp+ebx-104], dl
0040144A |. 0FB6BC1D FCFE>|movzx edi, byte ptr [ebp+ebx-104]
00401452 |. 81F7 ACAD0000 |xor edi, 0ADAC
00401458 |. 89DE |mov esi, ebx
0040145A |. 83C6 02 |add esi, 2
0040145D |. 89F8 |mov eax, edi
0040145F |. 0FAFC6 |imul eax, esi
00401462 |. B9 0A000000 |mov ecx, 0A
00401467 |. 99 |cdq
00401468 |. F7F9 |idiv ecx
0040146A |. 83C2 30 |add edx, 30
0040146D |. 88941D FCFEFF>|mov byte ptr [ebp+ebx-104], dl
00401474 |. 43 |inc ebx
00401475 |> 3B5D 0C cmp ebx, dword ptr [ebp+C]
00401478 |.^ 0F8C 74FFFFFF \jl 004013F2 ; 注册码
0040147E |. 8D85 FCFEFFFF lea eax, dword ptr [ebp-104]
00401484 |. 50 push eax
00401485 |. 6A 54 push 54
00401487 |. 8D85 DCFBFFFF lea eax, dword ptr [ebp-424]
0040148D |. 50 push eax ; |Format
0040148E |. 8D85 E1FBFFFF lea eax, dword ptr [ebp-41F] ; |
00401494 |. 50 push eax ; |s
00401495 |. E8 CE020000 call
0040149A |. 8B7D 0C mov edi, dword ptr [ebp+C]
0040149D |. 89F8 mov eax, edi
0040149F |. 0FAF45 FC imul eax, dword ptr [ebp-4]
004014A3 |. B9 64000000 mov ecx, 64
004014A8 |. 99 cdq
004014A9 |. F7F9 idiv ecx
004014AB |. 89D7 mov edi, edx
004014AD |. 83C7 30 add edi, 30
004014B0 |. 57 push edi
004014B1 |. 8DBD E1FBFFFF lea edi, dword ptr [ebp-41F]
004014B7 |. 57 push edi
004014B8 |. 8DBD D6FBFFFF lea edi, dword ptr [ebp-42A]
004014BE |. 57 push edi ; |Format
004014BF |. 8DBD E1FDFFFF lea edi, dword ptr [ebp-21F] ; |
004014C5 |. 57 push edi ; |s
004014C6 |. E8 9D020000 call
004014CB |. 83C4 20 add esp, 20
004014CE |. 8D8D E1FDFFFF lea ecx, dword ptr [ebp-21F]
004014D4 |. 83C8 FF or eax, FFFFFFFF
004014D7 |> 40 /inc eax
004014D8 |. 803C01 00 |cmp byte ptr [ecx+eax], 0
004014DC |.^ 75 F9 \jnz short 004014D7
004014DE |. 50 push eax ; 输入注册吗长度
004014DF |. 8D85 E1FCFFFF lea eax, dword ptr [ebp-31F]
004014E5 |. 50 push eax ; 输入注册码
004014E6 |. 8D85 E1FDFFFF lea eax, dword ptr [ebp-21F]
004014EC |. 50 push eax ; 中间注册吗
004014ED |. E8 D0FDFFFF call 004012C2
{
004012C2 /$ 55 push ebp
004012C3 |. 89E5 mov ebp, esp
004012C5 |. 53 push ebx
004012C6 |. 56 push esi
004012C7 |. 57 push edi
004012C8 |. 8B5D 10 mov ebx, dword ptr [ebp+10]
004012CB |. 31F6 xor esi, esi
004012CD |. 46 inc esi
004012CE |. EB 29 jmp short 004012F9
004012D0 |> 8B55 08 /mov edx, dword ptr [ebp+8] ; edx = T8845-112
004012D3 |. 0FBE3C32 |movsx edi, byte ptr [edx+esi]
004012D7 |. 89F8 |mov eax, edi
004012D9 |. 83F0 20 |xor eax, 20
004012DC |. B9 0A000000 |mov ecx, 0A
004012E1 |. 99 |cdq
004012E2 |. F7F9 |idiv ecx
004012E4 |. 89D7 |mov edi, edx
004012E6 |. 83C7 30 |add edi, 30
004012E9 |. 8B55 0C |mov edx, dword ptr [ebp+C]
004012EC |. 0FBE1432 |movsx edx, byte ptr [edx+esi]
004012F0 |. 39D7 |cmp edi, edx //这边是核心,把真正的注册码回复成按照位置的ASC,然后和输入做比对
004012F2 74 04 je short 004012F8//只要把这里换成jne就行,把每位一个一个算出来就好了
004012F4 31C0 xor eax, eax
004012F6 |. EB 08 |jmp short 00401300
004012F8 |> 46 |inc esi
004012F9 |> 39DE cmp esi, ebx
004012FB |.^ 7C D3 \jl short 004012D0 ; 真正注册吗
}
}
【总结】
好吧,来个总结,作为第一个crackme,我整整搞了一个下午才搞定,其实内容分析还是比较清晰的,原本以为中间那个就是真的,结果测试了下果断假的,玩这个还是要耐心啊!!!...查看全文
沧桑的沙漏(第拾季)
落红的季候,万山红遍,层林尽染。一曲清歌,送来笑客啸天般墨写的忧伤,为爱独憔悴,愿与伊共舞,把时光看遍,不诉离殇,不问前程,只一路相随,且行且歌。原以为只是或清或浓的一抹,别想,厚厚一笔如茶岁月。...查看全文
自己学写操作系统(一)
这两天好无奈,面临准备考研的时候,却想着搞技术,无法心无旁骛的学高数神马的,自己还没有纠正自己的心态,然后军哥那边的课叫我写个东西,我思前想后,打算自己搞个操作系统出来,当然我自己肯定搞不定,于是我翻出了以前的一本书——《一个操作系统的实现》,然后自己慢慢研究,顺便写点东西下来。
写个操作系统,肯定离不开C语言和汇编,编译工具果断就nasm,小型的虚拟软件就上推荐的bochs了,我搞了两天安装在centos上,都快装死了,终于在我毁了4台虚拟机下搞定了。
直接解压后./configure –enable-debugger –enable-diasm肯定会报错,说要装GTK,我就死在这上面,各种各样奇葩的错误,贴出一个比较可行的方法。

我试过按上图把每个库都下载下来编译过,结果各种问题,有个一键安装:
yum install gtk2 gtk2-devel gtk2-devel-docs
但是会和一个glib库冲突,很简单,把它yum yum -y remove就行,然后在./configure –enable-debugger –enable-diasm,接着是make && make install,在make过程中可能出现undefined reference to `pthread_create’错误,只要对Makefile文件修改下,
##查找 LIBS(或直接跳到92行)。。行末加上-lpthread..
LIBS = -lm -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lpthread
然后make install就行了,很快bochs就搞定了,接下来很方便就能搞定nasm了。...查看全文
使用Python实现Hadoop的Map/Reduce
原本由于hadoop的HDFS的接口是JAVA的,苦于不喜欢JAVA一直就把它抛弃了在一旁,后面发现竟然有python框架的,我仍不住就先测试了下,搭建了个环境,顺便记录记录。
首先不用说,直接在Centos上搭建Hadoop的单机伪分布模式,这个网上一搜一大堆,我就不赘述了。直接从实践开始。
放上两个测试py:
1. mapper.py 程序代码...查看全文
偶尔谈谈人生(一)
感觉《沧桑的沙漏》系列是那种憋了好几个月,突然有一天顿悟的产品,然后春天到了,我觉得最近我的思绪的产物不是那种顿悟,然后我就升华的那种大侧大悟, 难登《沧桑的沙漏》的大雅之堂,可是我又想吐槽一些现状,然后我就打算开个本系列,应下景吧。
(PS:写着写着就想起高晓松老师的《如丧》的一篇,写给多年以后的自己,然后,我就打算写个第二人称的,或许多年以后看看会很奇怪,为啥一篇文章里面会有你和我两个称呼)
时间一眨眼就过去了很多,都说岁月是把无情的杀猪刀,感觉高考那天的情景还历历在目,回家的时候爆了三次车胎;做着做着扬天长叹:次奥,这尼玛月考题是哪个SB老师出了,balabalabala…一堆一堆,然后看现在的你,OK,已经到了大三下的老年时期,可以站着路口边拿个棒棒糖对着小萝莉说蜀黍给你棒棒糖吃的节奏了,然后呢,一无所获不能说,至少可以说个老无所依,不对,得过且过更适合现在。妹纸都没有把到一个,枉自己还自觉地情商有多高,有多么奇葩的三观之类的,结果呢?反观当初你鄙视的那些人,哪个人成绩都比你好,你又有啥能得意的?技术呢?忽悠忽悠那帮不懂的人倒是可以,扯淡起来一套一套的,不懂的真能被你唬住,实际上呢,省省吧,难登大雅之堂不贴切,学无所成倒是事实,刚刚按照老师的要求写了份简历,在工作技能那栏我会的一股脑儿的写了上去,感觉是牛逼啊,其实类,浅尝即止你自己是懂得,后悔了吧,没用,当初有人劝你不听,非要我行我素。
诶,人生啊,准备考研,可是一点欲望都没有,想想自己要考的学校,又不是你轻松能上的,不知道多年以后你会不会后悔自己现在这段时间的荒废。六级到现在也没有过,枉你看了这么多年美剧,两年155季美剧是用来炫耀的,不是用来锻炼的。
然后呢,,接下来我该做什么?考研复习是肯定的,没人督促我肯定完蛋。技术呢,python不能扔是必然的,可是我真的不想做程序员以后,我的志向是做一个类似渗透的那种,编程是我的一个爱好罢了,我该怎么学渗透?计算机网络也得学,考研也肯定要用的。看看桌上那本驱动开发,目测是没时间看完了,真烦,驱动开发不能扔,我得找个时间好好的写个文件过滤驱动。
该怎么安排?早上不想早起,看书看这看着思绪就飞到远方,我该怎么调节?人生呐,要是每次在十字路口的时候都有盏指明灯该多好?...查看全文
python对Word和Excl的操作
这几天疯狂的找Python的项目做,这不阿宝童鞋给我找个了,通过一个excl,读取每一块的数据,填充一个word模板相应的位置,然后批量生产,随手鄙视下阿宝童鞋以后,我就开始疯狂的谷歌行为了。有点PE知识的人都知道,word不像txt,直接open就可以读取内容,那对这种万恶的微软产物我该怎么办?谷歌了一堆以后,找到了一个python强大的库——win32com,顺手推荐一本书——《Python Programming on Win32》,全书英文版,拒掉无比!!
然后,我找到了这个库,顺手百度了下官方文档,顺便搜索到了一堆相关的详细使用记录,看了一眼,都不咋地,作为面向对象的产物,在使用一句一句的太不和谐,在我辛勤的寻找下,终于发现了两个类,巨牛无比,顺带结合自己的理解加了几个方法在类里面,顺手贴出来分享下:
第一个:Python操作Word...查看全文