您的位置:首页精文荟萃破解文章 → 《 极速游龙 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破解如何给软件脱壳基础教程