闲的蛋疼,玩玩PEID,觉得里面有个通用脱壳(然而并脱不了)不过找OEP还算方便。
把这个功能独立出来自己用,那不是呵呵哒了。
可以看出这个插件路径是这个ZDRx.dll
PEID同目录下有插件开发SDK,看一眼结构,还是很容易调用的。
[Shell] 纯文本查看 复制代码 Private Declare Function LoadDll Lib "ZDRx.dll" () As Long
Private Declare Function DoMyJob Lib "ZDRx.dll" (ByVal hwd As Long, ByVal name As String, ByVal res As Long, ByVal param As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal pDest As String, ByVal pSrc As Long, ByVal ByteLen As Long)
Private Sub Command1_Click()
Dim b As String
b = Space$(30)
CopyMemory b, LoadDll, 30
MsgBox b
End Sub
Private Sub Command2_Click()
DoMyJob Me.hWnd, App.Path & "\" & App.EXEName & ".exe", 0, 0
End Sub
写个简单的程序,调用一下。
获取插件信息功能OK,但是插件调用提示只能提供PEID用???
使用调试器对MessageBoxA/W下断,看看运气
下断到了返回到程序领空,结构比较清晰。
向上找一下跳转,然后调试一下,发现这里是个关键跳。
nop掉跳转代码,成功弹出窗口,功能正常。
然后跳到过程头部,看到这个值,是调用参数的第三个值。
改下程序代码,第三个调用参数为0x50456944(VB里是&H50456944),一切OK。
这个值应该是相当于一个简单授权码,不同的版本,猜测可能不同,具体没深究,可能是版本信息之类的。
不过,无所谓,能用就行! |