首页
社区
课程
招聘
[旧帖] [求助] VC++调用VFP6R.DLL的程序 的破解问题 0.00雪花
发表于: 2007-12-30 21:49 6621

[旧帖] [求助] VC++调用VFP6R.DLL的程序 的破解问题 0.00雪花

2007-12-30 21:49
6621
程序下载
跟了两天后的心得:(本人水平很菜)

看不到主程序的资源(没壳)

自己用OD跟踪.发现程序会目录中的 Data.ini 文件来判断文件是否注册
注册是重启验证+keyfile
注册时没有提示窗口 MessageBox下不了断
=========================================================
OD载入程序 F9运行  用户名和密码为空直接点确定进入
00401551 > $  55            push    ebp                              ;  (initial cpu selection)
00401552   .  8BEC          mov     ebp, esp
00401554   .  6A FF         push    -1
00401556   .  68 2A2C0A00   push    0A2C2A
0040155B   .  68 38900D00   push    0D9038                           ;  SE 处理程序安装
00401560   .  64:A1 0000000>mov     eax, dword ptr fs:[0]
00401566   .  50            push    eax
00401567   .  64:8925 00000>mov     dword ptr fs:[0], esp
0040156E   .  58            pop     eax
0040156F   .  64:A3 0000000>mov     dword ptr fs:[0], eax
00401575   .  58            pop     eax
00401576   .  58            pop     eax
00401577   .  58            pop     eax
00401578   .  58            pop     eax

已知道是读取文件来定是否注册
bp ReadFile下断  点下程序中的注册使用OD断下
7C80180E >  6A 20           push    20
7C801810    68 A89B807C     push    7C809BA8
7C801815    E8 AC0C0000     call    7C8024C6
7C80181A    33DB            xor     ebx, ebx
7C80181C    8B4D 14         mov     ecx, dword ptr [ebp+14]
7C80181F    3BCB            cmp     ecx, ebx
7C801821    74 02           je      short 7C801825
7C801823    8919            mov     dword ptr [ecx], ebx
7C801825    64:A1 18000000  mov     eax, dword ptr fs:[18]
7C80182B    8B40 30         mov     eax, dword ptr [eax+30]
7C80182E    8B7D 08         mov     edi, dword ptr [ebp+8]
7C801831    83FF F4         cmp     edi, -0C
7C801834    0F84 A8010000   je      7C8019E2
7C80183A    83FF F5         cmp     edi, -0B
7C80183D    0F84 94010000   je      7C8019D7
7C801843    83FF F6         cmp     edi, -0A
7C801846    74 53           je      short 7C80189B
7C801848    8BC7            mov     eax, edi

取消断点 alt+f9 来到

00401E42   > \E9 2B000000   jmp     00401E72
00401E47   >  FF75 18       push    dword ptr [ebp+18]               ; /pOverlapped
00401E4A   .  8B5D 14       mov     ebx, dword ptr [ebp+14]          ; |
00401E4D   .  53            push    ebx                              ; |pBytesRead
00401E4E   .  FF75 10       push    dword ptr [ebp+10]               ; |BytesToRead
00401E51   .  FF75 0C       push    dword ptr [ebp+C]                ; |Buffer
00401E54   .  FF75 08       push    dword ptr [ebp+8]                ; |hFile
00401E57   .  FF15 84644000 call    dword ptr [406484]               ; \ReadFile
00401E5D   .  E8 84340000   call    004052E6     --------------->OD停留位子
00401E62   .  E8 FF2A0000   call    00404966     
00401E67   .  DF7D A8       fistp   qword ptr [ebp-58]
00401E6A   .  8B7D A8       mov     edi, dword ptr [ebp-58]
00401E6D   .  8BC7          mov     eax, edi
00401E6F   .  8945 84       mov     dword ptr [ebp-7C], eax
00401E72   >  8B45 84       mov     eax, dword ptr [ebp-7C]
00401E75   .  8D65 F4       lea     esp, dword ptr [ebp-C]
00401E78   .  5F            pop     edi
00401E79   .  5E            pop     esi             ----------可以看到data.ini文件中的字符
00401E7A   .  5B            pop     ebx
00401E7B   .  5D            pop     ebp
00401E7C   .  C2 1400       retn    14

跟进下面两个call得不到什么东西.(可能是水平问题)
00401E5D   .  E8 84340000   call    004052E6     --------------->OD停留位子
00401E62   .  E8 FF2A0000   call    00404966   

F8一路下来到retn 来到    (发现领空是VFP6R.DLL)
0C004BBB    85C0            test    eax, eax                      --------eax=1
0C004BBD    0F84 98830D00   je      0C0DCF5B          ------ 跳转未实现   
0C004BC3    33C0            xor     eax, eax
0C004BC5    C2 0800         retn    8
0C004BC8    A1 10E02F0C     mov     eax, dword ptr [C2FE010]
0C004BCD    8B10            mov     edx, dword ptr [eax]
0C004BCF    8B42 08         mov     eax, dword ptr [edx+8]
0C004BD2    85C0            test    eax, eax
0C004BD4    74 0C           je      short 0C004BE2
0C004BD6    3948 44         cmp     dword ptr [eax+44], ecx
0C004BD9    74 09           je      short 0C004BE4
0C004BDB    8B40 0C         mov     eax, dword ptr [eax+C]
0C004BDE    85C0            test    eax, eax
0C004BE0  ^ 75 F4           jnz     short 0C004BD6
0C004BE2    33C0            xor     eax, eax

以后的F8跟下去就乱了.

有没有达人看下这个软件
问题 主程序读data.ini还是 VFP6R.DLL来读 (判断注册)
       网上好像都比较少这种的例子 查了几天没有找到
     这种程序有没有什么方法可以找到关键的call

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 202
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不知道是不是一开始的方法就错了?求达人指点一二
2007-12-30 21:52
0
雪    币: 224
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
原来是垃圾中的垃圾.非法彩票软件.
SET SYSMENU OFF
SET EXCLUSIVE OFF
SET TALK OFF
SET CONSOLE OFF
SET DELETED ON
SET EXACT ON
SET CENTURY ON
SET DATE TO ansi
SET SAFETY OFF
_SCREEN.visible = .T.
_SCREEN.caption = "猪猪小庄统计器 V6.8+ 软件设计:猪猪"
SET MESSAGE TO "彩票统计器,支持共享联网,正在登陆..."
SET MESSAGE OFF
ON ERROR do errormsg with program(),line(),message(),error()
PUBLIC pmaxv, pldt, pduser, pusn, pflmn, pmonx, runok, myplay, smm
smm = "ncksku14782"
myplay = .F.
runok = .F.
pflmn = "Data.ini"
pmaxv = INT(VAL(getiv(PFLMN,"Default","Max","49")))
pmonx = INT(VAL(rsob(getiv(PFLMN,"Default","MMX","CCDEF"))))
pduser = getiv(PFLMN,"Default","使用者","888888")
pusn = getiv(PFLMN,"Default","分隔符","")
pldt = DATE()
gxnn()
lvvs = ALLTRIM(SMM)
lvs = LVVS
tmpa = ALLTRIM(getiv("data.ini","Information","Descrip",""))
tmpb = TMPA
tmpa = ALLTRIM(RSTRG(TMPA))
lvs = ALLTRIM(rstrg(ALLTRIM(LXRS(LVS))))
IF ******
ELSE
   myplay = .F.
ENDIF
ON SHUTDOWN do onshutdown
_SCREEN.picture = getiv("data.ini","分析参数","背景","intwm.bmp")
lcigt = getiv("Data.ini","HELP","FirstUsed","0")
IF LCIGT = "0"
   IF getiv("Data.ini","HELP","HTML","0") <> "0"
      mie = CREATEOBJECT("internetexplorer.application")
      mie.visible = .T.
      lmgx = getiv("Data.ini","HELP","HTML","0")
      IF NOT (SYS(5)+SYS(2003)) $ LMGX
         IF LEFT(LMGX,1) = "\"
            lmgx = SYS(5)+SYS(2003)+LMGX
         ELSE
            lmgx = SYS(5)+SYS(2003)+"\"+LMGX
         ENDIF
      ENDIF
      MIE.NAVIGATE(LMGX)
   ENDIF
   putiv("Data.ini","HELP","FirstUsed","1")
ENDIF
_SCREEN.windowstate = 2
DO FORM getlogin
IF RUNOK
   IF _SCREEN.width <= 800
      MESSAGEBOX("分辨率太低",0,"猪猪统计器")
      QUIT
   ELSE
      DO FORM intmainnc
   ENDIF
   DO SXINM6.MPR
   SET MESSAGE TO "彩票统计器,欢迎使用... "
   READ EVENTS
ENDIF
2007-12-31 12:20
0
雪    币: 202
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是彩票软件 不过从来没有破解过这种类行的,想试试手.
网上都说用  UnFoxAll 3.0专业增强版等软件来解源码. 这个软件好像不太一样.
新手看来要多学习了  按部就班看来是不行的
多谢上面那位大哥,你的那些码是用什么得到的. 好像重点被***了 嘿嘿
菜鸟只是想学习下
不过还是想问下
我那种方法跟软件有没有什么错误?  OD跟VFP的可能会很难?
还有秘密是不是只在主程序中.
用peid查到 foxshell 是不是加密了.才使得UnFoxAll 等软件不能直接查到 传说中的.app文件?
2007-12-31 21:00
0
雪    币: 202
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
还有就是我现在重点是不是应该破解 foxshell 得到.app文件?
就是上面那位大哥给出的代码
只是想学破解的方法.对软件本身并不是一未的破解.
希望达人能帮帮初学者
2007-12-31 22:22
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我也碰到过同样的问题,包括unfox等好几款反编译软件均无效,不知道该怎么搞
2007-12-31 22:55
0
游客
登录 | 注册 方可回帖
返回
//