-
您的位置:首页 → 精文荟萃 → 破解文章 → 《 极速游龙 V2.0 》 破文+注册机源码.TXT
《 极速游龙 V2.0 》 破文+注册机源码.TXT
时间:2004/10/15 0:55:00来源:本站整理作者:蓝点我要评论(0)
-
目标软件: 极速游龙 V2.0
软件大小: 836 KB
软件语言: 简体中文
软件类别: 共享版 / 游戏工具
应用平台: Win9x/NT/2000/XP
下载地址: http://www.downloadsky.com/soft/11262.html
软件介绍:
极速游龙是专门为玩家而设计,集攻略、秘技、最新试玩下载、补丁于一身的游戏资料搜索工具。内容丰富全面。包括PCGAME、PS、超任等几大机种的资料,子分类除了以上提到的还有各类模拟器游戏下载,游戏相关的工具下载、日本游戏专题、游戏周边下载(包括:游戏主题音乐、游戏主题壁纸等)。
使用工具: TRW2000 v1.23 + 浮点插件,FengMa's Toy Beta1
基础知识:
①:浮点指令:
st(i):代表浮点寄存器,所说的出栈、入栈操作都是对st(i)的影响
src,dst,dest,op等都是指指令的操作数,src表示源操作数,dst/dest表示目的操作数
mem8,mem16,mem32,mem64,mem80等表示是内存操作数,后面的数值表示该操作数的内存位数(8位为一字节)
x <- y 表示将y的值放入x,例st(0) <- st(0) - st(1)表示将st(0)-st(1)的值放入浮点寄存器st(0)
1. 数据传递和对常量的操作指令
指令格式
指令含义
执行的操作
FLD src
装入实数到st(0)
st(0) <- src (mem32/mem64/mem80)
FILD src
装入整数到st(0)
st(0) <- src (mem16/mem32/mem64)
FBLD src
装入BCD数到st(0)
st(0) <- src (mem80)
FLDZ
将0.0装入st(0)
st(0) <- 0.0
FLD1
将1.0装入st(0)
st(0) <- 1.0
FLDPI
将pi装入st(0)
st(0) <- ?(ie, pi)
FLDL2T
将log2(10)装入st(0)
st(0) <- log2(10)
FLDL2E
将log2(e)装入st(0)
st(0) <- log2(e)
FLDLG2
将log10(2)装入st(0)
st(0) <- log10(2)
FLDLN2
将loge(2)装入st(0)
st(0) <- loge(2)
FST dest
保存实数st(0)到dest
dest <- st(0) (mem32/mem64)
FSTP dest
dest <- st(0) (mem32/mem64/mem80);然后再执行一次出栈操作
FIST dest
将st(0)以整数保存到dest
dest <- st(0) (mem32/mem64)
FISTP dest
dest <- st(0) (mem16/mem32/mem64);然后再执行一次出栈操作
FBST dest
将st(0)以BCD保存到dest
dest <- st(0) (mem80)
FBSTP dest
dest<- st(0) (mem80);然后再执行一次出栈操作
2.运算指令
指令格式
指令含义
执行的操作
加法
FADD
加实数
st(0) <-st(0) + st(1)
FADD src
st(0) <-st(0) + src (mem32/mem64)
FADD st(i),st
st(i) <- st(i) + st(0)
FADDP st(i),st
st(i) <- st(i) + st(0);然后执行一次出栈操作
FIADD src
加上一个整数
st(0) <-st(0) + src (mem16/mem32)
减法
FSUB
减去一个实数
st(0) <- st(0) - st(1)
FSUB src
st(0) <-st(0) - src (reg/mem)
FSUB st(i),st
st(i) <-st(i) - st(0)
FSUBP st(i),st
st(i) <-st(i) - st(0),然后执行一次出栈操作
FSUBR st(i),st
用一个实数来减
st(0) <- st(i) - st(0)
FSUBRP st(i),st
st(0) <- st(i) - st(0),然后执行一次出栈操作
FISUB src
减去一个整数
st(0) <- st(0) - src (mem16/mem32)
FISUBR src
用一个整数来减
st(0) <- src - st(0) (mem16/mem32)
乘法
FMUL
乘上一个实数
st(0) <- st(0) * st(1)
FMUL st(i)
st(0) <- st(0) * st(i)
FMUL st(i),st
st(i) <- st(0) * st(i)
FMULP st(i),st
st(i) <- st(0) * st(i),然后执行一次出栈操作
FIMUL src
乘上一个整数
st(0) <- st(0) * src (mem16/mem32)
除法
FDIV
除以一个实数
st(0) <-st(0) /st(1)
FDIV st(i)
st(0) <- st(0) /t(i)
FDIV st(i),st
st(i) <-st(0) /st(i)
FDIVP st(i),st
st(i) <-st(0) /st(i),然后执行一次出栈操作
FIDIV src
除以一个整数
st(0) <- st(0) /src (mem16/mem32)
FDIVR st(i),st
用实数除
st(0) <- st(i) /st(0)
FDIVRP st(i),st
FDIVRP st(i),st
FIDIVR src
用整数除
st(0) <- src /st(0) (mem16/mem32)
FSCALE
2的st(0)次方
st(0) <- 2 ^ st(0)
FPREM
取余数
st(0) <-st(0) MOD st(1)
FPREM1
取余数(IEEE),同FPREM,但是使用IEEE标准[486]
FRNDINT
取整(四舍五入)
st(0) <- INT( st(0) ); depends on RC flag
FABS
求绝对值
st(0) <- ABS( st(0) ); removes sign
FCHS
改变符号位(求负数)
st(0) <-st(0)
②:VB 常用函数(后面的调试过程中就不再介绍了):
1) 数据类型转换
i) 字符串( String )转换字节( Byte )或整型( Integer ) : __vbai2str
ii) 字符串( String )转长型( Long ) : __vbai4str
iii) 字符串( String )转换单精度型( Single ) : __vbar4str
iv) 字符串( String )转换双精度型( Double ) : __vbar8str
v) 字符串( String )转 Currency 型 : VarCyFromStr
vi) 整型( Integer )转字符串型( String ) : VarBstrFromI2
2) 移动数据
i) 字符串( String )到内存 : __vbaStrCopy
ii) 变量( Variant )到内存 : __vbaVarCopy or __vbaVarMove
3) 运算符
i) 加法 : __vbavaradd <-- 增加变量
ii) 减法 : __vbavarsub <-- 减去变量
iii) 乘法 : __vbavarmul <-- 乘以变量
iv) 除法 : __vbavaridiv <--除以变量
v) XOR: __vbavarxor <--异或运算。
(以上基础知识参考《加密与解密--软件保护技术与解决方案》一书)
破解过程:
Hmemcpy 设断:
CALL NEAR [ECX+A0]
CMP EAX,EBX
FNCLEX
JNL 0043A48A
PUSH DWORD A0
PUSH DWORD 0040B6B8
PUSH ESI
PUSH EAX
CALL `MSVBVM60!__vbaHresultCheckObj`
MOV EAX,[EBP-1C]
PUSH EAX
PUSH DWORD 0040CFE4
CALL 004386A0
LEA ECX,[EBP-1C]
CALL `MSVBVM60!__vbaFreeStr`
LEA ECX,[EBP-20]
CALL `MSVBVM60!__vbaFreeObj`
MOV ECX,[EDI]
PUSH EDI
CALL NEAR [ECX+030C]
LEA EDX,[EBP-20]
PUSH EAX
PUSH EDX
CALL `MSVBVM60!__vbaObjSet`
MOV ESI,EAX
LEA ECX,[EBP-1C]
PUSH ECX
PUSH ESI
MOV EAX,[ESI]
CALL NEAR [EAX+A0]
CMP EAX,EBX
FNCLEX
JNL 0043A4E5
PUSH DWORD A0
PUSH DWORD 0040B6B8
PUSH ESI
PUSH EAX
CALL `MSVBVM60!__vbaHresultCheckObj`
MOV EDX,[EBP-1C]
PUSH EDX
PUSH DWORD 0040CFFC
CALL 004386A0
LEA ECX,[EBP-1C]
17F:0043A4F6 CALL `MSVBVM60!__vbaFreeStr`
LEA ECX,[EBP-20]
CALL `MSVBVM60!__vbaFreeObj`
CALL 0043B3A0 //关键。
MOV ECX,EAX
CALL `MSVBVM60!__vbaI2I4`
MOV [00449078],AX
CMP AX,BX
MOV EAX,80020004
MOV ECX,0A
MOV [EBP-58],EAX
MOV [EBP-60],ECX
MOV [EBP-48],EAX
MOV [EBP-50],ECX
MOV [EBP-38],EAX
MOV [EBP-40],ECX
JNZ NEAR 0043A615 //不跳注册成功。
LEA EDX,[EBP-70]
LEA ECX,[EBP-30]
MOV DWORD [EBP-68],0040D00C
MOV DWORD [EBP-70],08
CALL `MSVBVM60!__vbaVarDup`
LEA EAX,[EBP-60]
LEA ECX,[EBP-50]
PUSH EAX
LEA EDX,[EBP-40]
PUSH ECX
PUSH EDX
LEA EAX,[EBP-30]
PUSH BYTE +40
PUSH EAX
CALL `MSVBVM60!rtcMsgBox`
LEA ECX,[EBP-60]
LEA EDX,[EBP-50]
PUSH ECX
LEA EAX,[EBP-40]
PUSH EDX
LEA ECX,[EBP-30]
PUSH EAX
PUSH ECX
PUSH BYTE +04
CALL `MSVBVM60!__vbaFreeVarList`
MOV EAX,[00449010]
ADD ESP,BYTE +14
CMP EAX,EBX
JNZ 0043A5A3
PUSH EBP
MOV EBP,ESP
SUB ESP,BYTE +08
PUSH DWORD 00402596
MOV EAX,[FS:00]
PUSH EAX
MOV [FS:00],ESP
SUB ESP,BYTE +58
PUSH EBX
PUSH ESI
PUSH EDI
MOV [EBP-08],ESP
MOV DWORD [EBP-04],00401CD8
XOR EDI,EDI
MOV [EBP-14],EDI
MOV [EBP-18],EDI
MOV [EBP-28],EDI
MOV [EBP-30],EDI
MOV [EBP-34],EDI
MOV [EBP-38],EDI
MOV [EBP-3C],EDI
MOV [EBP-40],EDI
MOV [EBP-50],EDI
CALL `MSVBVM60!rtcGetTimer`
FSTP DWORD [EBP-48]
LEA EAX,[EBP-50]
MOV DWORD [EBP-50],04
PUSH EAX
CALL `MSVBVM60!rtcRandomize` //产生机器码?
LEA ECX,[EBP-50]
CALL `MSVBVM60!__vbaFreeVar`
MOV ESI,[004011AC]
MOV EDX,0040D1B0 //EDX中存放的是UNICODE字符“False”。
LEA ECX,[EBP-18]
CALL ESI
MOV EDX,0040D1C0
LEA ECX,[EBP-38]
CALL ESI
MOV EDX,0040AC9C
LEA ECX,[EBP-34]
CALL ESI
MOV EDX,0040ACB4
LEA ECX,[EBP-30]
CALL ESI
LEA ECX,[EBP-38]
PUSH EDI
LEA EDX,[EBP-34]
PUSH ECX
LEA EAX,[EBP-30]
PUSH EDX
PUSH EAX
CALL 00438270
MOV EDI,[0040120C]
MOV EDX,EAX
LEA ECX,[EBP-3C]
CALL EDI
PUSH EAX
CALL `MSVBVM60!rtcR8ValFromBstr` //将机器码转换为浮点数。
CALL `MSVBVM60!__vbaFpI4` //机器码转换为十六进制数。
LEA ECX,[EBP-3C]
MOV [004491E8],EAX
LEA EDX,[EBP-38]
PUSH ECX
LEA EAX,[EBP-34]
PUSH EDX
LEA ECX,[EBP-30]
PUSH EAX
PUSH ECX
PUSH BYTE +04
CALL `MSVBVM60!__vbaFreeStrList` //准备写入注册信息。
ADD ESP,BYTE +14
CALL 00439070
MOV EDX,EAX
LEA ECX,[EBP-30]
CALL EDI
PUSH EAX
PUSH DWORD 0040C328
CALL `MSVBVM60!__vbaStrCat`
MOV EDX,EAX
MOV ECX,004491AC
CALL EDI
MOV EBX,[00401234]
LEA ECX,[EBP-30]
CALL EBX
MOV EDX,0040D054
LEA ECX,[EBP-30]
CALL ESI
PUSH DWORD 0040D1D0
PUSH DWORD 0040CFFC
LEA EDX,[EBP-30]
PUSH EDX
CALL 00437FC0
MOV EDX,EAX
LEA ECX,[EBP-28]
CALL EDI
LEA ECX,[EBP-30]
CALL EBX
PUSH DWORD 004491E8
CALL 0043B850 //计算序列号的关键CALL。
MOV EDX,EAX
LEA ECX,[EBP-30]
CALL EDI
PUSH EAX
MOV EAX,[EBP-28]
PUSH EAX
CALL `MSVBVM60!__vbaStrCmp` //序列号比较。
MOV EBX,EAX
LEA ECX,[EBP-30]
NEG EBX
SBB EBX,EBX
NEG EBX
NEG EBX
CALL `MSVBVM60!__vbaFreeStr`
TEST BX,BX
JZ NEAR 0043B7E2
因计算序列号的 CALL 实在烦琐,故只列出序列号计算过程:
(1):取用户名第 i 位,转换为十进制;
(2):取字符串“False”的第 i 位,转换为十进制;
(3):将步骤(1) - 步骤(2)的结果转换为字符串;
(4):将步骤(3)的结果的首位转换为十进制,再除以 1.3;
(5):将步骤(4)的结果乘以机器码;
(6):向上循环 4 次;
(7):取步骤(5)的结果,去掉小数点,然后转换为字符串,即最终的序列号。
然后,据此写出注册机:
Dim Dividend As Integer
Dim i As Integer
Dim MachineCode As Long
Dim Divisor As Double
Dim Result As Double
Dim SN As String
Dim MidName As String
Dim StrResult As String
Private Sub Command1_Click()
AboutMessage = MsgBox("This keygen made by fengma[FCG](fengma@2911.net) !", 4096 + vbExclamation, "About...")
End Sub
Private Sub Command2_Click()
MachineCode = Text1.Text
Divisor = 1.3
If Len(Text2.Text) < 2 Then
EnterName = MsgBox("Use a name at least 2 Chars long , please !", 4096 + vbExclamation, "Information")
Exit Sub
End If
If Command2.Caption = "Get Now !" Then
If Len(Text2.Text) < 5 Then
MidName = Mid$(Text2.Text, Len(Text2.Text), 1)
Else
MidName = Mid$(Text2.Text, 5, 1)
End If
If Asc(MidName) < 101 Then
Dividend = 57
Else
Dividend = Asc(Mid$(LTrim$(Str((Asc(MidName) - 101))), 1, 1))
End If
Result = Dividend / Divisor
StrResult = LTrim$(Str(MachineCode * Result))
SN = ""
For i = 1 To 16
ChrSN = Mid$(StrResult, i, 1)
If ChrSN <> "." Then
SN = SN & ChrSN
End If
Next i
Text3.Text = SN
With Command2
.Font = Tahoma
.Caption = "Bye !"
End With
Else
End
End If
End Sub
fengma[FCG] Cracked
|
相关阅读
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条评论>>