无聊下几个共享软件玩玩
软件名称:Delphi学习宝典
最后更新:2004-6-23 //够老的吧,反正想要出钱买你们也不知道找谁了

算法方式:加减乘除
玩的结果耽误2~3天的工作,找资料的时候也看到有人问要这个注册码,反正也是玩就坚持搞下来了,如题所说简单而复杂,一路下来加减乘除,眼都花了因为没技术有一个过程耽误一天
过程:
程序无壳用VB Decompiler Pro反编译找到关键点地址:00425BBB 打开od ctrl+g 填入关键地址往上走找到地址 00425021 . FF15 34104000 call dword ptr ds:[<&MSVBVM60.#516>] ; \rtcAnsiValueBstr
在上面是判断用户名和注册码是否为空没啥意思 下断点 00425021 经过取用户名转换成Ansi码并相加,简单不?????
下面不能成为算法了,叫算数好了,因为上面说一路加减乘除么(省略了看的恶心),到
00425B8F . 8995 B8FEFFFF mov dword ptr ss:[ebp-0x148],edx ; edx存放算数出来的数值就是注册码了,没技术可言,不信可以试试~
疑点也是学习点:
00425B4F . FFD6 call esi ; 好多call esi 那里没去看
00425B51 . 8BC8 mov ecx,eax
=======================================================================================
00425B53 . B8 398EE338 mov eax,0x38E38E39 //这里是疑问跟前面无关,这段过程是
00425B58 . F7E9 imul ecx //取edx的值*0x38E38E39/2^0x1F,VB要写成edx*954437177/2^32
00425B5A . D1FA sar edx,1 ;移位直接理解成/ 2// 想问问0x1F转换10进制为31怎么上面计算要变成32了
00425B5C . 8BCA mov ecx,edx //
00425B5E . C1E9 1F shr ecx,0x1F //
=======================================================================================
00425B61 . 03D1 add edx,ecx
00425B63 . 81C2 9C0F0100 add edx,0x10F9C ; +69532
00425B69 . 0F80 B8030000 jo Delphi学.00425F27
00425B6F . 83EA 61 sub edx,0x61 ; -97
00425B72 . 0F80 AF030000 jo Delphi学.00425F27
00425B78 . 81C2 3C010000 add edx,0x13C ; +316=4392581
00425B7E . 8B0F mov ecx,dword ptr ds:[edi]
00425B80 . 0F80 A1030000 jo Delphi学.00425F27
00425B86 . 6BD2 02 imul edx,edx,0x2 ; 最后一步计算出注册码 4392581*2=8785162
也就是上面疑问那点耽误时间了,注册运算过程20次+,真不如内存注册,一点注册码来也~
附上无聊的成果:
reg.rar
[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!