庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>安全技术>软件破解>反汇编>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

即时语音提示 & 校对软件InsTalk注册码及注册机 上

 作者:本站收集   日期:2005-6-1
字号选择〖 〗/ 双击滚屏 单击停止   
即时语音提示 & 校对软件InsTalk注册码及注册机-初学者请看
软件说明:即时语音提示&校对软件 InsTalk 是面向 Windows 9x/NT 的工具软件。利用它用户可以让电脑说汉语普通话。它有两种工作状态。一种是在使用键盘输入数字和英文字符时,可以跟随录入的字符即时发出相应的语音提示。另一种是让电脑朗读中文。

使用工具:TRW2000、PW32Dasm9b.EXE、KeyMaker。

由于受软件提示信息的影响,整个破解过程走了不少弯路:输入注册信息后,软件提示关闭并重新启动软件以验证注册码,但重新启动时,试了很多断点还是找不到注册码(其实可以找到,但此注册码并非你所输入的注册名和单位生成,而是注册名和单位为空时的注册码),后来通过对注册表的监视,当软件注册码错误时,程序根本就不往注册表里写入。所以,判断注册码的工作应该在输入注册信息的时候就已经进行了,作者给我们开了个大玩笑?!!

=======================================================
1、启动程序,填写注册信息,Ctrl-n,bpx hmemcpy,F5返回,按“注册”按钮,程序拦下。
2、bc *,pmodule。
3、按两次F10,来到下面:
:004073D0 8D8C2444010000          lea ecx, dword ptr [esp+00000144]
:004073D7 6800010000              push 00000100
:004073DC 51                      push ecx
:004073DD 680D040000              push 0000040D
:004073E2 8BCE                    mov ecx, esi
:004073E4 8944243C                mov dword ptr [esp+3C], eax
:004073E8 E8D4540100              call 0041C8C1
:004073ED 8BC8                    mov ecx, eax
:004073EF E815560100              call 0041CA09
:004073F4 8D942444020000          lea edx, dword ptr [esp+00000244]
:004073FB 6800010000              push 00000100
:00407400 52                      push edx
:00407401 680F040000              push 0000040F
:00407406 8BCE                    mov ecx, esi
:00407408 89442440                mov dword ptr [esp+40], eax
:0040740C E8B0540100              call 0041C8C1
:00407411 8BC8                    mov ecx, eax
:00407413 E8F1550100              call 0041CA09
:00407418 89442438                mov dword ptr [esp+38], eax
:0040741C E86FB20100              call 00422690
:00407421 8B6804                  mov ebp, dword ptr [eax+04]
:00407424 A158E74200              mov eax, dword ptr [0042E758]
:00407429 8D8C2444010000          lea ecx, dword ptr [esp+00000144]
:00407430 896C241C                mov dword ptr [esp+1C], ebp
:00407434 51                      push ecx
:00407435 8D4C241C                lea ecx, dword ptr [esp+1C]
:00407439 8944241C                mov dword ptr [esp+1C], eax
:0040743D E8F55F0100              call 0041D437
:00407442 6A19                    push 00000019
:00407444 51                      push ecx
:00407445 8D94244C020000          lea edx, dword ptr [esp+0000024C]
:0040744C 33DB                    xor ebx, ebx
:0040744E 8BCC                    mov ecx, esp
:00407450 89642444                mov dword ptr [esp+44], esp
:00407454 52                      push edx
:00407455 899C2458030000          mov dword ptr [esp+00000358], ebx
:0040745C E84FD7FFFF              call 00404BB0
:00407461 8D44244C                lea eax, dword ptr [esp+4C]
:00407465 8D4C2434                lea ecx, dword ptr [esp+34]
:00407469 50                      push eax
:0040746A C684245803000001        mov byte ptr [esp+00000358], 01
:00407472 E839D7FFFF              call 00404BB0
:00407477 51                      push ecx
:00407478 8D542424                lea edx, dword ptr [esp+24]
:0040747C 8BCC                    mov ecx, esp
:0040747E 8964244C                mov dword ptr [esp+4C], esp
:00407482 52                      push edx
:00407483 50                      push eax
:00407484 51                      push ecx
:00407485 C684246403000002        mov byte ptr [esp+00000364], 02
:0040748D E80A600100              call 0041D49C
:00407492 C684245803000003        mov byte ptr [esp+00000358], 03
:0040749A E821D6FFFF              call 00404AC0(此处改变eax的值,说明对注册码进行了判断)
:0040749F 83C40C                  add esp, 0000000C
:004074A2 8D4C242C                lea ecx, dword ptr [esp+2C]
:004074A6 8BF8                    mov edi, eax(这里将eax的值赋予edi)
:004074A8 889C244C030000          mov byte ptr [esp+0000034C], bl
:004074AF E88A5E0100              call 0041D33E
:004074B4 8D4C2418                lea ecx, dword ptr [esp+18]
:004074B8 C784244C030000FFFFFFFF  mov dword ptr [esp+0000034C], FFFFFFFF
:004074C3 E8765E0100              call 0041D33E
:004074C8 3BFB                    cmp edi, ebx
:004074CA 0F849C000000            je 0040756C(此处若不跳,则可将错误的注册信息强制写入注册表
:004074D0 8D742444                lea esi, dword ptr [esp+44]
:004074D4 8D6C2430                lea ebp, dword ptr [esp+30]

=============================================================
在:0040749A E821D6FFFF              call 00404AC0处按F8进入:

:00404AC0 64A100000000            mov eax, dword ptr fs:[00000000]
:00404AC6 6AFF                    push FFFFFFFF
:00404AC8 6800414200              push 00424100
:00404ACD 50                      push eax
:00404ACE 64892500000000          mov dword ptr fs:[00000000], esp
:00404AD5 53                      push ebx
:00404AD6 56                      push esi
:00404AD7 8B442420                mov eax, dword ptr [esp+20]
:00404ADB 8D542418                lea edx, dword ptr [esp+18]
:00404ADF 50                      push eax
:00404AE0 51                      push ecx
:00404AE1 8BCC                    mov ecx, esp
:00404AE3 89642428                mov dword ptr [esp+28], esp
:00404AE7 52                      push edx
:00404AE8 C744241C01000000        mov [esp+1C], 00000001
:00404AF0 E8BE850100              call 0041D0B3
:00404AF5 8D442428                lea eax, dword ptr [esp+28]
:00404AF9 50                      push eax
:00404AFA E801260000              call 00407100(算注册码)
:00404AFF 8B742428                mov esi, dword ptr [esp+28](将错误的注册码赋予esi)
:00404B03 8B00                    mov eax, dword ptr [eax](将正确的注册码赋予eax)
:00404B05 83C40C                  add esp, 0000000C(在此处d eax看到真正的注册码)

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00404B2A(C)
|
:00404B08 8A10                    mov dl, byte ptr [eax](取真码第一位)
:00404B0A 8A1E                    mov bl, byte ptr [esi](取假码第一位)
:00404B0C 8ACA                    mov cl, dl(将真码第一位赋予cl)
:00404B0E 3AD3                    cmp dl, bl(比较两值是否相同)
:00404B10 751E                    jne 00404B30(不同就跳到00404B30,比较失败)
:00404B12 84C9                    test cl, cl(测试cl是否为空,即判断是否已全部比较完)
:00404B14 7416                    je 00404B2C(如果比较完毕,则跳到00404B2C)
:00404B16 8A5001                  mov dl, byte ptr [eax+01](取真码下一位)
:00404B19 8A5E01                  mov bl, byte ptr [esi+01](取假码下一位)
:00404B1C 8ACA                    mov cl, dl
:00404B1E 3AD3                    cmp dl, bl
:00404B20 750E                    jne 00404B30(不同就跳到00404B30,比较失败)
:00404B22 83C002                  add eax, 00000002(去掉真码前两位,为下一轮比较做准备)
:00404B25 83C602                  add esi, 00000002(去掉假码前两位,为下一轮比较做准备)
:00404B28 84C9                    test cl, cl(测试cl是否为空,即判断是否已全部比较完)
:00404B2A 75DC                    jne 00404B08(返回00404B08继续比较)

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00404B14(C)
|
:00404B2C 33C0                    xor eax, eax(注册码正确时,跳到此行)
:00404B2E EB05                    jmp 00404B35

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00404B10(C), :00404B20(C)
|
:00404B30 1BC0                    sbb eax, eax(注册码错误时,跳到此行)
:00404B32 83D8FF                  sbb eax, FFFFFFFF

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00404B2E(U)
|
:00404B35 85C0                    test eax, eax
:00404B37 0F94C0                  sete al
:00404B3A 25FF000000              and eax, 000000FF
:00404B3F 8D4C2420                lea ecx, dword ptr [esp+20]
:00404B43 8BF0                    mov esi, eax(将eax的值赋予esi)
:00404B45 E8F4870100              call 0041D33E
:00404B4A 8D4C2418                lea ecx, dword ptr [esp+18]
:00404B4E C644241000              mov [esp+10], 00
:00404B53 E8E6870100              call 0041D33E
:00404B58 8D4C241C                lea ecx, dword ptr [esp+1C]
:00404B5C C7442410FFFFFFFF        mov [esp+10], FFFFFFFF
:00404B64 E8D5870100              call 0041D33E
:00404B69 8B4C2408                mov ecx, dword ptr [esp+08]
:00404B6D 8BC6                    mov eax, esi(将esi的值赋予eax)
:00404B6F 5E                      pop esi
:00404B70 64890D00000000          mov dword ptr fs:[00000000], ecx
:00404B77 5B                      pop ebx
:00404B78 83C40C                  add esp, 0000000C
:00404B7B C3                      ret

======================================================
4、以下是对程序重新启动后的一些分析:
程序一开始有个欢迎提示框,提示是共享版还是注册版,可见在此之前已经判断了是否已经注册,所以目的就是找出出现这个提示框的最后一个关键Call。
用trw2000载入InsTalk.exe,结合F10、F9、F6键就可找到这个Call(具体操作方法可参考我写的Acdsee4.0的破解,在看雪论坛以我的注册名esoft2001.51.net搜索就能找到)
:0041F76B 8B06                    mov eax, dword ptr [esi]
:0041F76D 8BCE                    mov ecx, esi
:0041F76F FF5050                  call [eax+50](此处是出现提示框,应该快接近核心了。即使判断错也没关系,可以继续再试嘛!)
:0041F772 85C0                    test eax, eax
:0041F774 7515                    jne 0041F78B
==================================================
F8进入上面的Call,看到下面代码:
:004046D0 6AFF                    push FFFFFFFF
:004046D2 68DD404200              push 004240DD
:004046D7 64A100000000            mov eax, dword ptr fs:[00000000]

……………………略去一些代码
* Possible Reference to Dialog: 
                                  |
:004047A7 68D0E04200              push 0042E0D0
:004047AC 8BCE                    mov ecx, esi
:004047AE C68424F404000002        mov byte ptr [esp+000004F4], 02
:004047B6 E8DBDA0100              call 00422296
:004047BB 8D4C2424                lea ecx, dword ptr [esp+24]
:004047BF C68424E404000001        mov byte ptr [esp+000004E4], 01
:004047C7 E8728B0100              call 0041D33E
:004047CC 8D4C241C                lea ecx, dword ptr [esp+1C]
:004047D0 C68424E404000000        mov byte ptr [esp+000004E4], 00
:004047D8 E8618B0100              call 0041D33E
:004047DD 8B5500                  mov edx, dword ptr [ebp+00]
:004047E0 42                      inc edx
:004047E1 52                      push edx
:004047E2 E8BC590000              call 0040A1A3
:004047E7 8BF8                    mov edi, eax
:004047E9 8B442414                mov eax, dword ptr [esp+14]
:004047ED 83C404                  add esp, 00000004
:004047F0 897C2418                mov dword ptr [esp+18], edi
:004047F4 85C0                    test eax, eax(判断是否将注册信息写入注册表,若无则eax=0)
:004047F6 897C9C2C                mov dword ptr [esp+4*ebx+2C], edi
:004047FA 7428                    je 00404824
:004047FC 8B4D00                  mov ecx, dword ptr [ebp+00]
:004047FF 8BF0                    mov esi, eax
:00404801 8BC1                    mov eax, ecx
:00404803 C1E902                  shr ecx, 02
:00404806 F3                      repz
:00404807 A5                      movsd
:00404808 8BC8                    mov ecx, eax
:0040480A 83E103                  and ecx, 00000003
:0040480D F3                      repz
:0040480E A4                      movsb
:0040480F 8B4C2410                mov ecx, dword ptr [esp+10]
:00404813 51                      push ecx
:00404814 E88F880100              call 0041D0A8
:00404819 8B7C241C                mov edi, dword ptr [esp+1C]
:0040481D 8B742424                mov esi, dword ptr [esp+24]
:00404821 83C404                  add esp, 00000004
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004047FA(C)
|
上一篇:即时语音提示 & 校对软件InsTalk注册码及注册机 下    下一篇:The Works 全攻略  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-6-1
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿