首页
社区
课程
招聘
我的第一篇“小菜”之作
发表于: 2004-8-11 20:34 7632

我的第一篇“小菜”之作

2004-8-11 20:34
7632

目的:自己第一次写点东西,从这个开始我也从明码查找开始向算法方式转变
目标:找注册码
目标软件: BT 发动机动机3.0
难度:容易
声明:因为网上已有注册码,所以这里才写出软件的名字
工具软件: TRW、W32Dasm黄金版

:00404180    lea eax, dword ptr [ebp-04]=====>断到这里,取地址
:00404183   mov eax, dword ptr [eax]========>这里eax放入种子数
:00404185   call 004801C8                   ==========>数值计算,重要,进入  (1)     
:0040418A   mov dword ptr [ebp-64], eax   ====>eax为计算后值,假设为X,放入[ebp-64]
:0040418D   dec [edi+1C]
:00404190   lea eax, dword ptr [ebp-04]
:00404193   mov edx, 00000002
:00404198   call 00505C90
:0040419D   mov [edi+10], 0008
:004041A3   mov [edi+10], 0020
:004041A9   xor ecx, ecx
:004041AB   mov dword ptr [ebp-08], ecx
:004041AE   lea edx, dword ptr [ebp-08]
:004041B1   inc [edi+1C]
:004041B4   mov eax, dword ptr [ebx+00000310]
:004041BA   call 004D7CF0
:004041BF   lea eax, dword ptr [ebp-08]=======>取注册码地址
:004041C2   mov eax, dword ptr [eax]   ===========>将注册码放入eax
:004041C4   call 004801C8                     数值计算,重要,进入,(2)/*算法同(1)*/
:004041C9   mov dword ptr [ebp-68], eax     ========>   eax计算后的值,假设为Y,放入[ebp-68]
:004041CC   dec [edi+1C]
:004041CF   lea eax, dword ptr [ebp-08]
:004041D2   mov edx, 00000002
:004041D7   call 00505C90
:004041DC   mov [edi+10], 0008
:004041E2   mov ecx, 00015B33               =====>将常数十六进制15b33 放入ecx
:004041E7   sub ecx, dword ptr [ebp-64]  =======>然后减去X
:004041EA   mov eax, ecx              =========>放到eax里
:004041EC   add eax, eax             ======>eax=eax+eax
:004041EE   lea eax, dword ptr [eax+4*eax] ======>eax=eax+eax*4  
:004041F1   add eax, FFFFFFDF                 ======>eax=eax+(-21)
:004041F4   cmp eax, dword ptr [ebp-68]  ======>用结果同Y比较,相同则注册成功(假成功^_^)
:004041F7   jne 00404472            ==========>后面是写注册表和显示注册成功,和除去注册按钮
================================》第一部分结束,但虽然显示是注册用户,但还是有下面的提示出现
第二部分,先用W32Dasm 反汇编,然后查找,“对不起,对不起,只有注册用户才能使用优化功能..."
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401D40(C), :00401D4F(C)               ==============》知道有00401d40,和00401d4f跳到这里
|
:00401E30 66C745DC2C00            mov [ebp-24], 002C

* Possible StringData Ref from Data Obj ->"对不起,只有注册用户才能使用优化功能..."
                                  |
:00401E36 BA55A25100              mov edx, 0051A255
查打上面两个地方
:00401D39 E82E010000              call 00401E6C  =========》进入,跟踪发现只是重复第一部分
:00401D3E 84C0                    test al, al
:00401D40 0F84EA000000            je 00401E30    =====》如果,你上面第一部分已经通过那这里不会跳
:00401D46 8BC3                    mov eax, ebx
:00401D48 E8CF0F0000              call 00402D1C动=====》这里面就是第二部分验证啦!进入
:00401D4D 84C0                    test al, al
:00401D4F 0F84DB000000            je 00401E30
===========================================================================================
* Referenced by a CALL at Addresses:
|:00401D48   , :00402274   
|
:00402D1C 55                      push ebp               ==========》来到这里,然后跟踪
:00402D1D 8BEC                    mov ebp, esp
:00402D1F 83C48C                  add esp, FFFFFF8C
~~~~~   
~~~~略~~~~
~~~~~
* Possible StringData Ref from Data Obj ->"reg_code"    =======》上面通过一系列的注册表判断和读取                                                                 
                                  |
:00402FFD BAC2A45100              mov edx, 0051A4C2
:00403002 8D45C4                  lea eax, dword ptr [ebp-3C]
:00403005 E8262B1000              call 00505B30
:0040300A FF461C                  inc [esi+1C]
:0040300D 8B10                    mov edx, dword ptr [eax]
:0040300F 8BC3                    mov eax, ebx
:00403011 E836A60700              call 0047D64C
:00403016 89458C                  mov dword ptr [ebp-74], eax
:00403019 FF4E1C                  dec [esi+1C]
:0040301C 8D45C4                  lea eax, dword ptr [ebp-3C]
:0040301F BA02000000              mov edx, 00000002
:00403024 E8672C1000              call 00505C90
:00403029 8B4D8C                  mov ecx, dword ptr [ebp-74]  -====》最后把Y放入ecx,X放入edi
:0040302C 2BCF                    sub ecx, edi         =========>然后用Y-X,结果放到ecx
:0040302E 81F9784B0900            cmp ecx, 00094B78     =======>同这个常数94b78比较
:00403034 753B                    jne 00403071        ======》相同,就可运行啦!

总结:

第一部分  
种子数转换成十六进制数
假设为abcde
那么结果等于
(A 为十六进制的A,十进制的10)
X=(((a*A+b)*A+c)*A+d)*A+e
注册码的转换
Y=.........同种子数一样
验证
(15b33-X)*A-21=B
第二部分
验证
Y-X=94b78

看上面两个验证公试,就知道可以列一个二元一次方程,X、Y唯一,可解得X=634F,Y=9AEC7

最后逆算成abcde的方法很简单,把X和Y用计算器转换成十进制就可啦

感谢:
       看雪老大创造的良好学习环境
       版主们的敬业,如:fly等偶象            
       DB老师的教导!
       心如止水(不是搞破解的,不过是个刷三星手机的高手QQ:8362598)
       还有广大在这里和我一起成长的菜鸟们

备注:上面的文章,一定有写的不对的地方,谢谢强人、牛人们指教,改正!向你们致敬!!
      还有,谁愿意做我的老师,自学语言累啊!
                                                         

                                                      2004年8月11日
                                                   学生  未日独留

                                                写于辽宁的某个地方^_^


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (13)
雪    币: 82
活跃值: (321)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有前途:D
就是格式不够美:)
2004-8-11 21:20
0
雪    币: 236
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
继续努力……
2004-8-11 21:21
0
雪    币: 263
活跃值: (340)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
4
支持!
2004-8-11 21:35
0
雪    币: 14
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
有我们顶你呢怕什么
2004-8-12 00:13
0
雪    币: 98745
活跃值: (201039)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
支持!
2004-8-12 00:41
0
雪    币: 690
活跃值: (1841)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
7
继续努力,支持。
2004-8-12 07:08
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我也是小菜一碟,让我们互相鼓励、互相帮助、共同进步。:D
2004-8-12 08:31
0
雪    币: 234
活跃值: (104)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
很不错啊!
2004-8-12 09:19
0
雪    币: 241
活跃值: (145)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
共同努力,一起在pediy中成长。
2004-8-12 11:31
0
雪    币: 234
活跃值: (61)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
顶你!希望以后能奉献更好的文章!
2004-8-12 12:15
0
雪    币: 2958
活跃值: (2420)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习!!!
2004-8-12 13:52
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
13
2004-8-12 21:10
0
雪    币: 418
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
顶!
2004-8-12 23:24
0
游客
登录 | 注册 方可回帖
返回
//