标题: Advanced Evaluator 3.5 (另一强大的科学计算器--注册运算也很强大哟)破解~~新手请进~~有详细注解~高手们做个注册机吧~~~呵呵
内容:
差点就要放弃啦~~~~~~~
软件名称:Advanced Evaluator 3.5 (功能强大的科学计算器)
下载地址:http://61.134.4.193:8080/appsoftware/calculator/ae35.zip (708KB)
注册形式:Name & Key (我用了Name:Sam Von Key:67676767) 30天限制,过了30天就不能用了
破解原因:同上次一样,找了一大堆计算器想算注册码,这个也一样不合我心意,但它有注册保护,刚好可以练一下
但这个比上次那个难多啦(对于我来说),看我的标题就知道啦,不过这次可增加了我不少经验值,顺便问
下大家,有哪个计算器软件或其它工具可以进行汇编的shl,nor,rol,xor等这些逻辑运算的请告诉我下载
地址~~~~谢谢大家~~~~
破解过程及心得:
这次破解简直是瞎猫捉到死老鼠,一开始当然是例行公事一样的填入我的Name&Key,打开Trw2000,输入bpx hmemcpy,然后按确定,Booom~~~Trw拦下来啦,然后就bd、pmodule,来到了程序的代码中,呵呵~~~~有谁算过这个过程要多长时间。通常来说这时我都会看看各个寄存器的值,一般来说这时eax的值就是你Name or Key的长度,而我这里是我Name的长度7,好啦它读了我的Name,马上用s命令查找'Sam Von'(s命令会用吧,反正我刚学的时候就不怎么会用,谁不懂就问吧),找到啦,当然是“bpm 地址 rw”啦,这个命令很好用的,只要任何程序读写了存放我的Name的地址,Trw就会中断了,我的猜想是程序读我的Name作比较或者作运算或者把它放到第二个地址去,所以我通常有个习惯就是用bpm把所有存放我Name & Key的地址都设中断,反正程序一读我的Name&Key就是要做小动作啦,所以这样比较容易跟也容易找到核心,当程序再次中断时,我发现它在拿我的Name和sudi比较,但我用sudi来注册时一样出错,那这个可能是黑名单吧,这里应该不是重点,再跟~~~~~~~又发现程序在查我Name的二进制,要用到二进制来运算,麻烦啦,继续~~~~~~中间好多F8 F10的不停的按,反正要注意各寄存器的值,在Trw中的汇编代码窗口右上角的提示很重要,多多留意,一发现出现有疑的数据就要d来看看。其中有几个地方应该都是运算重点,但我没有贴出代码,只给出地址,有兴趣的就自己看看吧:在4027EC处程序用我Name的16进制加上某个地址再与另一地址比较;在478B1B处程序作了运算(用了除法等命令);在479471-->4794B0处程序将我Name的二进制连续放在内存中然后比较、查表、运算。最下面我贴出那些代码是对Key的比较运算,反正我再跟下去就晕啦,因为后面的call很多,运算也很复杂,我看不懂代码,但我想后面应该就是运算核心啦,高手们可以研究一下。上面的过程我花了两天时间,始终搞不懂,你一定想问我为什么不用反汇编呢,其实我一早用过啦,程序是Delphi写的,里面一点有用的字串都没有,只有十多行而已(BTW:为什么纯Delphi的程序用W32dasm反汇编后在字串表中都只有几行呢,是程序本身的设计还是Delphi的限制呢),我开始怀疑是否是我的起点过高呢~~~~~~~~~~~~呵呵
眼花啦~~~~每次看下面运算的代码都不得重点,我实在看不懂运算的过程,而且后面的call太多啦,唉没心机啦,于是像傻子一样不停的按F10~~~~忽然在4799AB处停了下来,其实这里我以前也来过几次,不过总觉得比较语句应该是cmp al,01之类的才是重要的判断,不会同2比吧,给骗了~~~这时将al改为2就完全破解啦,这完全是我无路可走才想到乱改一气的,所以说捉到死老鼠啦~~~~~呵呵
再说两句,破解真的好累,写文章就更累~~~~这是我写的第三篇,这几天都没精神啦,另外我写的可能很乱很罗嗦,请大家原谅,我文笔本来就不好,加上我写的这些都是想保留下来以后温习用的,所以写的很详细(因为我是一个新手,功力0.6级),记得我刚开始学破解时到处找教程,但几乎每个教程都那么简单,可能我人蠢吧,很多东西看不懂,所以我就将破解的过程整理后贴出来咯,希望能帮得了一些新手,也请高手指正,毕竟这些都是我自己理解的东西~~~~难免有错的~~~~谢了~~~~~~~~~~~~~
以下为核心判断的call
* Referenced by a CALL at Addresses:
|:00478C93 , :00478CA2 , :00479039 , :00479049 , :0047974C
|:00479780 , :004799A6
|
:00478A48 53 push ebx
:00478A49 56 push esi
:00478A4A 57 push edi
:00478A4B 55 push ebp
:00478A4C 8BEA mov ebp, edx
:00478A4E B202 mov dl, 02 <----dl=2 此为注册标志想办法保持这个数就行啦
:00478A50 8B7504 mov esi, dword ptr [ebp+04]<---[C60994]=252E---假密码
:00478A53 8B4804 mov ecx, dword ptr [eax+04]<---[C67F88]=1CD3---真密码
-------------------------------------------------------------------------------------------------
To:新手~~~~~~~~~~
我不知道程序将我的Name和Key作了什么运算,反正到了此处程序就拿这两个数作比较,我就称它们为真假密码吧,请留意程序并没有将密码连续放在内存中,而是分散的,它的存放是这样的[ebp(eax)]是密码的基地址,[ebp(eax)+4]是密码的值,[ebp(eax)+8]是下一个密码的基地址,程序先比较第一个密码,不等的话还会去比较第二个,这一点我就不明白啦,第一个不等就算啦嘛,为何还做下面的比较,就算后面的密码相等bl也不可能变为2呀,这是我第一次碰到的情况,所以我把它记了下来,不要说我罗嗦呀~~~~~~~~~~
-------------------------------------------------------------------------------------------------
:00478A56 3BF1 cmp esi, ecx
:00478A58 7D04 jge 00478A5E <---此处esi>ecx所以跳啦
:00478A5A 33D2 xor edx, edx <---不跳的话edx就被清为0啦
:00478A5C EB20 jmp 00478A7E
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00478A58(C)
|
:00478A5E 3BF1 cmp esi, ecx <----再比不等dl就变为1啦
:00478A60 7E1C jle 00478A7E
:00478A62 B201 mov dl, 01
:00478A64 EB18 jmp 00478A7E <----一定跳啦,不过dl为1啦
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00478A90(C)
|
:00478A66 8BC6 mov eax, esi <----基地址
:00478A68 8BEF mov ebp, edi
:00478A6A 8B7504 mov esi, dword ptr [ebp+04]<----第二个密码22B4
:00478A6D 8B4804 mov ecx, dword ptr [eax+04]<----211
:00478A70 3BF1 cmp esi, ecx
:00478A72 7D04 jge 00478A78 <------看~~就算相等也没用,刚才dl已经为1啦
:00478A74 33D2 xor edx, edx
:00478A76 EB06 jmp 00478A7E
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00478A72(C)
|
:00478A78 3BF1 cmp esi, ecx
:00478A7A 7E02 jle 00478A7E
:00478A7C B201 mov dl, 01
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00478A5C(U), :00478A60(C), :00478A64(U), :00478A76(U), :00478A7A(C)
|
:00478A7E 8B7008 mov esi, dword ptr [eax+08]<----下一个密码的基地址
:00478A81 85F6 test esi, esi
:00478A83 0F95C1 setne cl <----在Trw中此句是"setnz cl" 所以cl=1
:00478A86 8B7D08 mov edi, dword ptr [ebp+08]<----下一个密码的基地址
:00478A89 85FF test edi, edi
:00478A8B 0F95C3 setne bl <----bl=1,第二次到此bl=0下面就不跳啦共比较了四次
:00478A8E 22CB and cl, bl
:00478A90 75D4 jne 00478A66 <----在Trw中此句是jnz 所以跳了
:00478A92 8B7808 mov edi, dword ptr [eax+08]
:00478A95 85FF test edi, edi
:00478A97 0F94C1 sete cl
:00478A9A 8B7508 mov esi, dword ptr [ebp+08]
:00478A9D 85F6 test esi, esi
:00478A9F 0F95C3 setne bl
:00478AA2 22CB and cl, bl
:00478AA4 7402 je 00478AA8
:00478AA6 B201 mov dl, 01
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00478AA4(C)
|
:00478AA8 85F6 test esi, esi
:00478AAA 0F94C1 sete cl
:00478AAD 85FF test edi, edi
:00478AAF 0F95C0 setne al
:00478AB2 22C8 and cl, al
:00478AB4 7402 je 00478AB8
:00478AB6 33D2 xor edx, edx
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00478AB4(C)
| 上面的代码没能将dl=02
:00478AB8 8BC2 mov eax, edx <---此处edx=0所以al=0 注意ret后就是比较啦
:00478ABA 5D pop ebp
:00478ABB 5F pop edi
:00478ABC 5E pop esi
:00478ABD 5B pop ebx
:00478ABE C3 ret
=================================================================================================
:0047999A 8B45EC mov eax, dword ptr [ebp-14]
:0047999D 8945F0 mov dword ptr [ebp-10], eax
:004799A0 8B55F4 mov edx, dword ptr [ebp-0C]
:004799A3 8B45F0 mov eax, dword ptr [ebp-10]
:004799A6 E89DF0FFFF call 00478A48 <----上面的代码
:004799AB 3C02 cmp al, 02 <----呵呵~~~~~~~看下面的代码,根本没有跳转语句,跟
进后面的call找不到重点,所以说我是瞎撞的
-------------------------------------------------------------------------------------------------
在此如果将al改成02就OK啦(这里看起来很简单,当然啦这是结果,但想想之前的过程真的很恐怖,好多次想放弃啦,有耐心才会成功的,不过还要有点运气,有时按着F8就睡着啦,等你睡醒后看一眼,可能关键处就在那等左你呢~~~~~~哈哈)NAG消失,进入程序,再次运行,完全没问题,看看About没我的名字,Why??程序怎么判断我注册呢?注册表???好了,Regmon出手,程序读了HKEY_CURRENT_USER\AppEvents\precomp,好啦,试试改名,呵呵~~~~~~~出来啦,要我注册,其实程序并没有保存我的Name&Key只是如果不注册,此键值就有个标志,注册了就改为另一个标志(都不是明文,记不下来),气死我啦,把它改为Sam.com~~~~咦!!眼花了????怎么没叫我注册呢?再改为Sam Von~~~~我拷~~~还是进去了,原来程序只有一个不注册的标志,只要键值不是它就行啦,这东西注册挺贵的,不会这么儿戏吧,不过这鍵不是这么容易就能找得到的(找到也不敢乱动它吧呵呵~~~~~~~~~~~~),而且它的注册码算法很复杂(个人认为),请留意下面我提供的算法代码,注册码保护得这么好这里却~~~~~这该怎么形容呀~~~~哈哈哈哈~~~想不起~~~我语文很差的~~~~呵呵
-------------------------------------------------------------------------------------------------
:004799AD 8B4508 mov eax, dword ptr [ebp+08]
:004799B0 0F9400 sete byte ptr [eax]
:004799B3 8D45F0 lea eax, dword ptr [ebp-10]
:004799B6 E869EEFFFF call 00478824
:004799BB 8D45F4 lea eax, dword ptr [ebp-0C]
:004799BE E861EEFFFF call 00478824
:004799C3 33C0 xor eax, eax
:004799C5 5A pop edx
:004799C6 59 pop ecx
:004799C7 59 pop ecx
:004799C8 648910 mov dword ptr fs:[eax], edx
:004799CB 68E5994700 push 004799E5
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004799E3(U)
|
:004799D0 8D45F8 lea eax, dword ptr [ebp-08]
:004799D3 BA02000000 mov edx, 00000002
:004799D8 E8AF9FF8FF call 0040398C
:004799DD C3 ret
以下应该是注册码算法的核心开始,想研究密码算法的请看看吧,我功力还不够~~~~~~~~~~~
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00479592(C)
|
:0047956D 8D45F8 lea eax, dword ptr [ebp-08]
:00479570 8B55FC mov edx, dword ptr [ebp-04]<---此行运行过后d edx=>[edx]=67676767 是我输入的注册码,已变为Hex的啦
:00479573 4E dec esi
:00479574 3B72FC cmp esi, dword ptr [edx-04]
:00479577 7205 jb 0047957E
:00479579 E80697F8FF call 00402C84
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00479577(C)
|
:0047957E 46 inc esi
:0047957F 0FB65432FF movzx edx, byte ptr [edx+esi-01]<---注册码第一位edx=67
:00479584 8B9495F8FBFFFF mov edx, dword ptr [ebp+4*edx-00000408]<--注意edx参与了运算我猜 它在查表,过了这行就d edx,二进制??算一算原来
是67的二进制,所以我开始怕了,这两个call我跟进 去却搞不懂,头晕啦,高手请吧
:0047958B E85CA6F8FF call 00403BEC
:00479590 46 inc esi
:00479591 4B dec ebx
:00479592 75D9 jne 0047956D
:00479594 EB12 jmp 004795A8 <---这里跳过去后应该就是算法的核心,高手研究一下吧
这段代码要运行好几次,因为注册码和姓名的每一位查表运算都要经过这里,我觉得好复杂呀,后面的代码我就不贴了,因为有很多call很难写清楚,请大家反汇编后找一找吧~~~~~~~~不说啦~~~~~~我开始眼花啦~~~~~~~
13:33 2001-3-10
相关视频
相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
热门文章 去除winrar注册框方法
最新文章
比特币病毒怎么破解 比去除winrar注册框方法
华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据
人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程
查看所有0条评论>>