吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9270|回复: 3
收起左侧

[分享] KTH-3科泰华出入境证件数字相片采集系统(高手直接无视)

[复制链接]
vienna 发表于 2009-9-15 13:55
本帖最后由 vienna 于 2009-9-15 13:57 编辑

【文章标题】: KTH-3科泰华出入境证件数字相片采集系统,爆的
【文章作者】: vienna
【作者邮箱】: vienna@9.cn
【作者主页】: http://hi.baidu.com/vi_orz
【软件名称】: KTH-3科泰华出入境证件数字相片采集系统
【软件大小】: 23.1 MB
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: 无
【编写语言】: Delphi
【使用工具】: od,peid
【操作平台】: xp sp2
【软件介绍】: 别人给的,应该是个照相软件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
 005C6F68 >  55              push ebp                                 ; //程序入口
  005C6F69    8BEC            mov ebp,esp
  005C6F6B    83C4 F0         add esp,-10
  005C6F6E    53              push ebx
  005C6F6F    B8 F0695C00     mov eax,kthPhoto.005C69F0
  005C6F74    E8 7300E4FF     call kthPhoto.00406FEC
  005C6F79    8B1D 54C75C00   mov ebx,dword ptr ds:[5CC754]            ; kthPhoto.005CDC3C
  005C6F7F    68 C8705C00     push kthPhoto.005C70C8                   ; kthPhoto2009
  005C6F84    6A 00           push 0
  005C6F86    6A 00           push 0
  005C6F88    E8 2702E4FF     call kthPhoto.004071B4
  005C6F8D    E8 3A03E4FF     call <jmp.&kernel32.GetLastError>
  005C6F92    3D B7000000     cmp eax,0B7
  005C6F97    75 20           jnz short kthPhoto.005C6FB9
  005C6F99    6A 00           push 0

  //基于之前在程序的目录已经找到一个KthSoft.ini文件,里面也有了我们输入的假吗,那就不折腾了,是重启验证。
  
  //既然是ini文件,bp GetPrivateProfileStringA
  
  
  运行若干次,取假码的断下来了
  
  
  下面是堆栈窗口
  
  
0012F71C   00476729  /CALL 到 GetPrivateProfileStringA 来自 kthPhoto.00476724
  0012F720   005C6960  |Section = "App"
  0012F724   005C6954  |Key = "SN"                     //这是ini文件存家吗的一项
  0012F728   00404CA1  |Default = ""
  0012F72C   0012F744  |ReturnBuffer = 0012F744
  0012F730   00000800  |BufSize = 800 (2048.)
  0012F734   01578570  \IniFileName = "C:\Program Files\KTH-3科泰华出入境证件数字相片采集系统\KTHSoft.INI"
  0012F738   7C930228  ntdll.7C930228
  0012F73C   FFFFFFFF
  0012F740   00474FE4  kthPhoto.00474FE4
  
  
  正常的。。我们返回程序领空
  
  
  004766FF  |.  68 00080000   push 800
  00476704  |.  8D85 00F8FFFF lea eax,[local.512]
  0047670A  |.  50            push eax
  0047670B  |.  8B45 0C       mov eax,[arg.2]
  0047670E  |.  E8 89E5F8FF   call kthPhoto.00404C9C
  00476713  |.  50            push eax
  00476714  |.  8BC7          mov eax,edi
  00476716  |.  E8 81E5F8FF   call kthPhoto.00404C9C
  0047671B  |.  50            push eax
  0047671C  |.  8BC6          mov eax,esi
  0047671E  |.  E8 79E5F8FF   call kthPhoto.00404C9C
  00476723  |.  50            push eax                                 ; |Section
  00476724  |.  E8 D30BF9FF   call <jmp.&kernel32.GetPrivateProfileStr>; \GetPrivateProfileStringA
  00476729  |.  8BC8          mov ecx,eax                              ;  //返回到这里来,下断,运行,然后慢慢跟吧
  0047672B  |.  8D95 00F8FFFF lea edx,[local.512]
  00476731  |.  8B45 08       mov eax,[arg.1]
  00476734  |.  E8 93E1F8FF   call kthPhoto.004048CC
  00476739  |.  5F            pop edi
  0047673A  |.  5E            pop esi
  0047673B  |.  5B            pop ebx
  0047673C  |.  8BE5          mov esp,ebp
  
  
  //下断,运行,然后慢慢跟吧
  
0047673F  \.  C2 0800       retn 8                                   ;  返回到 005C67F8 (kthPhoto.005C67F8)

  //继续跟
  
005C67F8  |.  8D55 E8       lea edx,[local.6]                        ;  //返回到这里来
  005C67FB  |.  33C0          xor eax,eax
  005C67FD  |.  E8 06FEFFFF   call kthPhoto.005C6608
  005C6802  |.  84C0          test al,al
  005C6804  |.  75 07         jnz short kthPhoto.005C680D
  005C6806  |.  33DB          xor ebx,ebx
  005C6808  |.  E9 E9000000   jmp kthPhoto.005C68F6
  005C680D  |>  8D55 D8       lea edx,[local.10]
  005C6810  |.  8B45 E8       mov eax,[local.6]
  005C6813  |.  E8 8CF9FFFF   call kthPhoto.005C61A4
  005C6818  |.  8D45 F4       lea eax,[local.3]
  005C681B  |.  E8 BCDFE3FF   call kthPhoto.004047DC
  005C6820  |.  BB 10000000   mov ebx,10
  005C6825  |.  8D75 D8       lea esi,[local.10]
  005C6828  |>  8D4D CC       /lea ecx,[local.13]
  005C682B  |.  33C0          |xor eax,eax
  005C682D  |.  8A06          |mov al,byte ptr ds:[esi]
  005C682F  |.  BA 02000000   |mov edx,2
  005C6834  |.  E8 C72EE4FF   |call kthPhoto.00409700
  005C6839  |.  8B55 CC       |mov edx,[local.13]
  005C683C  |.  8D45 F4       |lea eax,[local.3]
  005C683F  |.  E8 68E2E3FF   |call kthPhoto.00404AAC
  005C6844  |.  46            |inc esi
  005C6845  |.  4B            |dec ebx
  005C6846  |.^ 75 E0         \jnz short kthPhoto.005C6828             ;  //循环~~是在算机器码~~
  005C6848  |.  8D45 F0       lea eax,[local.4]
  005C684B  |.  8B55 F4       mov edx,[local.3]                        ;  //下面写着堆栈 ss:[0012FF98]=0157861C, (ASCII "F3A0F9D604A7472900814BA6333A4F5B")~~机器码
  

  
  //往下跟跟~~~
  
  
005C6876  |.  BB 10000000   mov ebx,10
  005C687B  |.  8D75 D8       lea esi,[local.10]
  005C687E  |>  8D4D C4       /lea ecx,[local.15]
  005C6881  |.  33C0          |xor eax,eax
  005C6883  |.  8A06          |mov al,byte ptr ds:[esi]
  005C6885  |.  BA 02000000   |mov edx,2
  005C688A  |.  E8 712EE4FF   |call kthPhoto.00409700
  005C688F  |.  8B55 C4       |mov edx,[local.15]
  005C6892  |.  8D45 F4       |lea eax,[local.3]
  005C6895  |.  E8 12E2E3FF   |call kthPhoto.00404AAC
  005C689A  |.  46            |inc esi
  005C689B  |.  4B            |dec ebx
  005C689C  |.^ 75 E0         \jnz short kthPhoto.005C687E             ;  //又一个循环,是算注册码了吧,上面还有些东西我不知道干什么的
  005C689E  |.  8B45 EC       mov eax,[local.5]
  005C68A1  |.  50            push eax                                 ; /hObject
  005C68A2  |.  E8 D508E4FF   call <jmp.&kernel32.CloseHandle>         ; \CloseHandle
  005C68A7  |.  8B45 F8       mov eax,[local.2]
  005C68AA  |.  8B55 F4       mov edx,[local.3]                        ;  //下面显示堆栈 ss:[0012FF98]=015786AC, (ASCII "7A573272829CBA0157A3C81A45D776DD"),,,注册码了

  //下面接着的是爆破位置
  
  005C68B2     /74 40         je short kthPhoto.005C68F4               ;  //一轮工作之后。。这里没有跳。。要爆破的将这里改成jmp就完事了
  005C68B4  |. |8B0D 3CC45C00 mov ecx,dword ptr ds:[5CC43C]            ;  kthPhoto.00675DBC
  005C68BA  |. |A1 54C75C00   mov eax,dword ptr ds:[5CC754]
  005C68BF  |. |8B00          mov eax,dword ptr ds:[eax]
  005C68C1  |. |8B15 50625C00 mov edx,dword ptr ds:[5C6250]            ;  kthPhoto.005C629C
  005C68C7  |. |E8 C8CDEAFF   call kthPhoto.00473694
  005C68CC  |. |A1 3CC45C00   mov eax,dword ptr ds:[5CC43C]
  005C68D1  |. |8B00          mov eax,dword ptr ds:[eax]
  005C68D3  |. |8B80 00030000 mov eax,dword ptr ds:[eax+300]
  005C68D9  |. |8B55 F0       mov edx,[local.4]
  005C68DC  |. |E8 EB7CF0FF   call kthPhoto.004CE5CC
  005C68E1  |. |A1 3CC45C00   mov eax,dword ptr ds:[5CC43C]
  005C68E6  |. |8B00          mov eax,dword ptr ds:[eax]
  005C68E8  |. |8B10          mov edx,dword ptr ds:[eax]
  005C68EA  |. |FF92 E8000000 call dword ptr ds:[edx+E8]
  005C68F0  |. |33DB          xor ebx,ebx
  005C68F2  |. |EB 02         jmp short kthPhoto.005C68F6
  005C68F4  |> \B3 01         mov bl,1
  005C68F6  |>  33C0          xor eax,eax

  --------------------------------------------------------------------------------------------------
  
  另外发现一个很快找到位置爆破的操作。。但这些乱碰的。。而且和上面的爆破位置不一样,效果是一样的。。估计是影响了0还是1所以上下效果一样的(菜鸟)
  
  关于为什么这样可以找到位置,还望高手说说教教~~~
  
  话说我们bp GetPrivateProfileStringA
  
  来到了~~~
  
  0012F71C   00476729  /CALL 到 GetPrivateProfileStringA 来自 kthPhoto.00476724
  0012F720   005C6960  |Section = "App"
  0012F724   005C6954  |Key = "SN"                     //这是ini文件存家吗的一项
  0012F728   00404CA1  |Default = ""
  0012F72C   0012F744  |ReturnBuffer = 0012F744
  0012F730   00000800  |BufSize = 800 (2048.)
  0012F734   01578570  \IniFileName = "C:\Program Files\KTH-3科泰华出入境证件数字相片采集系统\KTHSoft.INI"
  0012F738   7C930228  ntdll.7C930228
  0012F73C   FFFFFFFF
  0012F740   00474FE4  kthPhoto.00474FE4
  ............
  ............
  ............//省略一亿字,因为我们直接拖到最底
  ............
  0012FF98  |00000000
  0012FF9C  |00000000
  0012FFA0  |01578570
  0012FFA4  ]0012FFC0
  0012FFA8  |005C7042  返回到 kthPhoto.005C7042 来自 kthPhoto.005C678C          //最最后一个返回到程序的,我们双击返回
  0012FFAC  |7FFDB000
  0012FFB0  |00390012  返回到 00390012
  0012FFB4  |0012FFE0  指针到下一个 SEH 记录
  0012FFB8  |0040431C  SE 句柄
  0012FFBC  |0012FFC0
  0012FFC0  \0012FFF0
  0012FFC4   7C817077  返回到 kernel32.7C817077
  0012FFC8   7C930228  ntdll.7C930228
  0012FFCC   FFFFFFFF
  0012FFD0   7FFDB000
  0012FFD4   805522FA
  0012FFD8   0012FFC8
  0012FFDC   85C551C0
  0012FFE0   FFFFFFFF  SEH 链尾部
  0012FFE4   7C839AD8  SE 句柄
  0012FFE8   7C817080  kernel32.7C817080
  0012FFEC   00000000
  0012FFF0   00000000
  0012FFF4   00000000
  0012FFF8   005C6F68  kthPhoto.<ModuleEntryPoint>
  0012FFFC   00000000
  
  //回到cpu这里
  
  005C6FC7   /74 74           je short kthPhoto.005C703D               ; //这里一跳过去,call了就出输入注册码窗口,nop掉达爆破效果(不懂理论,不知道为什么呢)
  005C6FC9   |8B0D 9CC55C00   mov ecx,dword ptr ds:[5CC59C]            ; kthPhoto.00675D88
  005C6FCF   |8B03            mov eax,dword ptr ds:[ebx]
  005C6FD1   |8B15 8C395C00   mov edx,dword ptr ds:[5C398C]            ; kthPhoto.005C39D8
  005C6FD7   |E8 B8C6EAFF     call kthPhoto.00473694
  005C6FDC   |8B0D FCC85C00   mov ecx,dword ptr ds:[5CC8FC]            ; kthPhoto.00675D70
  005C6FE2   |8B03            mov eax,dword ptr ds:[ebx]
  005C6FE4   |8B15 04185C00   mov edx,dword ptr ds:[5C1804]            ; kthPhoto.005C1850
  005C6FEA   |E8 A5C6EAFF     call kthPhoto.00473694
  005C6FEF   |8B0D DCC65C00   mov ecx,dword ptr ds:[5CC6DC]            ; kthPhoto.00675D50
  005C6FF5   |8B03            mov eax,dword ptr ds:[ebx]
  005C6FF7   |8B15 20CB5B00   mov edx,dword ptr ds:[5BCB20]            ; kthPhoto.005BCB6C
  005C6FFD   |E8 92C6EAFF     call kthPhoto.00473694
  005C7002   |8B0D F8C45C00   mov ecx,dword ptr ds:[5CC4F8]            ; kthPhoto.00675D18
  005C7008   |8B03            mov eax,dword ptr ds:[ebx]
  005C700A   |8B15 2C985B00   mov edx,dword ptr ds:[5B982C]            ; kthPhoto.005B9878
  005C7010   |E8 7FC6EAFF     call kthPhoto.00473694
  005C7015   |8B0D 58C45C00   mov ecx,dword ptr ds:[5CC458]            ; kthPhoto.00675D30
  005C701B   |8B03            mov eax,dword ptr ds:[ebx]
  005C701D   |8B15 A4AD5B00   mov edx,dword ptr ds:[5BADA4]            ; kthPhoto.005BADF0
  005C7023   |E8 6CC6EAFF     call kthPhoto.00473694
  005C7028   |8B0D A8C95C00   mov ecx,dword ptr ds:[5CC9A8]            ; kthPhoto.00675D0C
  005C702E   |8B03            mov eax,dword ptr ds:[ebx]
  005C7030   |8B15 44735B00   mov edx,dword ptr ds:[5B7344]            ; kthPhoto.005B7390
  005C7036   |E8 59C6EAFF     call kthPhoto.00473694
  005C703B   |EB 7B           jmp short kthPhoto.005C70B8
  005C703D   \E8 4AF7FFFF     call kthPhoto.005C678C                   ; //这个call过了就出输入注册码的窗口。。我还不懂,直接往上看
  005C7042    84C0            test al,al                               ; //双击后返回到这里

  
  ----------------------------------------------------------------------------------------
  
  找算法,写注册机那些高深的东西留着哪位高手有兴趣就搞吧。。菜鸟飘过~~~~
  
--------------------------------------------------------------------------------
【经验总结】
  断点后最后一个返回可能是好东西。
  
--------------------------------------------------------------------------------
【版权声明】: 转载请注明作者并保持文章的完整, 谢谢!

                                                       2009年09月15日 13:48:41

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

科维 发表于 2009-9-15 14:09
很详细的一个
学习了
ZeNiX 发表于 2009-11-27 12:07
zll1722 发表于 2012-3-21 18:07
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 02:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表