首页
社区
课程
招聘
[旧帖] [求助]新丁求助- 一库存软件,破解之路 已走1/3! 0.00雪花
发表于: 2007-7-6 00:48 6979

[旧帖] [求助]新丁求助- 一库存软件,破解之路 已走1/3! 0.00雪花

2007-7-6 00:48
6979
今早 刚有个朋友拿了个 进销存软件过来试用, 谁知一用,一测试版!!且 不是日期限制的那种! 程序进入到 程序界面 即要求输入Key~~ 大概查看了一下 估计是 电脑公司临时加密的~~  故 萌发了破解的想法!
因自己 从未接触过加密,以前只听过 TRW2000,Soft-ice 及 W32asm….的大名,而自己从未使用过,临时报佛脚 跑到了看雪 注册了个ID~~ :)  抱着 教程看了10分钟, 等软件下好, 就开始 磨刀上阵了~~ :)
结果一用 Trw2000 汗~~ Xp系统,Soft-ice XP版的也没找到 ~~ 再汗~~ 故只能拿着 W32asm探探路。  反汇编smjxc.exe后 在PE信息中导入ReyOpenKeyA 窗口中出现 如下代码
格式为:
*Reference To: ADVAPI32.RegCloseKey,    Ord:01E1h
:004012EC  FF1504204000         Call dword ptr  [00402004]
:004012F2   85C0                 test  eax , eax
:004012F4   7407                 je 004012FD
:004012F6   33C0                 xor eax , eax
:004012F8   E991000000           jmp  0040138E

大至的看了一下 也就是 test 是否密码相符, 不相符 跳到啥 相符怎样 然后,跳到啥地方, 程序继续!!

Smjxc.exe 下载地址为: http://www.misfits.es/code/smjxc.rar (600K左右)

现在 自己想用暴力破解, 让其, 不管 test后对错与否,都跳到 0040138E, 如何操做? 用什么软件? 能否占用几分钟,帮俺改改这个呢?  :)

整个程序下载地址为   http://www.misfits.es/code/smjxc-all.rar (21M左右)

新丁谢了~~ :)

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

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
新手路过~!
   我帮不了哦~!
2007-7-6 07:47
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
用16进制编辑器搜索 740733C0   该成 90909090
2007-7-6 10:57
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
但我觉得不是在这儿,这可能只是判断注册表是否打开成功。
2007-7-6 11:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
程序下载ing.....
2007-7-6 11:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
回zipper的话~~
       该程序是 绿色软件故, 个人觉得 打开注册表的可能性 不大~~~~
今天太忙~~ 晚上,或明天有时间俺再试试 用16进制写写~~
另~~  用w32asm 上面有他的 物理地址~~ :)  大家试试, 看能不能爆了该程序!! :) 谢了!
2007-7-6 19:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
VFP9R.DLL,VF写的。没破解过。
2007-7-6 20:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
*  文件名: SERVERINF.PRG <-- 本文件由 UnFoxAll 创建
* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

DECLARE INTEGER GetSerialNumber IN DiskSerial.dll INTEGER , STRING @
DECLARE INTEGER GetModelNumber IN DiskSerial.dll INTEGER , STRING @
DECLARE INTEGER GetRevisionNumber IN DiskSerial.dll INTEGER , STRING @
DECLARE INTEGER GetBufferSize IN DiskSerial.dll INTEGER
DECLARE INTEGER GetDiskCylinders IN DiskSerial.dll INTEGER
DECLARE INTEGER GetDiskHeads IN DiskSerial.dll INTEGER
DECLARE INTEGER GetSectorsOfTrack IN DiskSerial.dll INTEGER
CMSG = ''
IF  .NOT. FILE(GETDIR_SYS() + '\Smm.DLL')
  MESSAGEBOX('配置文件不存在请联系开发商',6,'提示')
QUIT
RETURN
ENDIF
LNSERIALNUMBER = SPACE(40)
LNLENGTH = GETSERIALNUMBER(0,@LNSERIALNUMBER)
LNSERIALNUMBER = LEFT(LNSERIALNUMBER,LNLENGTH)
CMSG = CMSG + '注册号' + LNSERIALNUMBER + CHR(13) + CHR(10)
USE SHARED GETDIR_SYS() + '\SMM.DLL'
SET EXACT OFF
IF COPYRIGHTS = '博尔码'
WAIT WINDOW NOWAIT '博尔码'
USE IN SMM
RETURN .T.
ENDIF
SET EXACT ON
IF UPPER(ALLTRIM(LNSERIALNUMBER)) <> UPPER(ALLTRIM(HARDSN)) AND  ;
.NOT. EMPTY(LNSERIALNUMBER)
  MESSAGEBOX('请注册' + CMSG,6,'提示')
REPLACE HARDSN WITH LNSERIALNUMBER + '3'
IF FILE('REGEDIT.txt')
    ERASE REGEDIT.txt
ENDIF
GNFILE = FCREATE('REGEDIT.txt')
  FPUTS(GNFILE,'注册号' + LNSERIALNUMBER + '3')
  FCLOSE(GNFILE)
USE IN SMM
QUIT
ENDIF
SET EXACT OFF
USE IN SMM
*

以上由UnFoxAll 反编译。懂点vf就好多了,楼主加油!
2007-7-6 21:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
回lynns~~ :)
     俺这用 unfoxall反编译过了`~  但  以前在学校没接触过 VFP~~  只学过 一丁点的汇编及 C语言~~   算号的原理明白, 但真要 算起来~~  :(
     能否把以上代码 加些个注释呢? ~~ :)
     为感
2007-7-6 22:04
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我用game master在内存中查找YOUR CODE IS WRONG,我的在00A070B8,想在OD里进行内存读写的中断,然后发现00A07100 有串字符,为正确的注册码,00A07180为输入的错误的注册码。但不知如何得到的,还有待分析。

提示码:3JV8835B
注册号:81CBEECC176B5E61404895A297101C7D
2007-7-10 10:35
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
终于被我发现了,我在两个机器上测试通过,算法如下:
假如提示码为3JV8835B,在字符串前加上ZS,后面加上提示码的第一个字母,然后是KALEN。形成新字符串ZS3JV8835B3KALEN,隔一个字符取一个,第一次为SJ83BKL,第二次为 SJ83BKLN,然后加在一起,形成字符串SJ83BKLSJ83BKLN,取MD5即可。
说不清楚,这是vf的代码:
DECLARE STRING getserial IN 'JUNWEI.DLL' INTEGER
DECLARE STRING MD5String IN 'JUNWEI.DLL' AS MD5JM STRING , INTEGER
DECLARE STRING GetCpuID IN 'JUNWEI.DLL'
LNSERIALNUMBER = '3JV8835B3'
LC_HARDSN = WORKJM(LNSERIALNUMBER,'ZS')
MESSAGEBOX(LC_HARDSN)

PROCEDURE WorkJm
PARAMETER YOURID , JMSTR
YOURID = JMSTR - UPPER(ALLTRIM(YOURID)) - 'KALEN'

LOCAL CURRENTID
CURRENTID = ''
FOR IDNAME = LEN(YOURID) TO 1 STEP -2
    CURRENTID = CURRENTID + SUBSTR(YOURID,LEN(YOURID) - IDNAME,1)
ENDFOR
FOR IDNAME = LEN(YOURID) TO 0 STEP -2
    CURRENTID = CURRENTID + SUBSTR(YOURID,LEN(YOURID) - IDNAME,1)
ENDFOR
CurrentId=MD5JM([&CurrentId.],Len(CurrentId))
RETURN (CURRENTID)
ENDPROC
2007-7-11 10:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
谢Zipper~~~  :)  按楼上的方法 的确能算出注册码~~  :)
2007-7-12 21:41
0
游客
登录 | 注册 方可回帖
返回
//