【求助】vb程序通过批处理文件调运java混淆器进行混淆错误!

【求助】vb程序通过批处理文件调运java混淆器进行混淆jar文件时,产生拒绝访问错误!经测试证实java混淆器和批处理文件没有问题,只是在对程序自动建立的temp目录下的jar混淆后,无法写入到同样是程序自动建立的work目录内,提示拒绝访问!

请各位帮助指点一下!十万火急!

Public filename As String
Public filedir As String
Public filestring As String
Public FileNameIf As String
Dim OBName As String
Dim AppPath As String ' 设置相对路径变量

'验证程序多次运行声明
Private Declare Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub manager_Click()
mainLogin.Show
End Sub

Private Sub MDIForm_Load()
'检查程序是否已经运行
  If App.PrevInstance Then
  MsgBox ("软件已经运行,不能重复打开!"), vbExclamation
  Unload Me
  Close
  End
  Exit Sub
  End If
Form1.Show
Form1.Width = frmMain.Width
Form1.Height = frmMain.Height - 1150

'获取程序的相对路径
AppPath = App.Path

Dim FolderName As String, fso As New FileSystemObject
  FolderName = AppPath & "/work"
  If fso.GetFolder(FolderName) <> "" Then
    fso.DeleteFolder FolderName
    fso.CreateFolder FolderName
  End If
  FolderName = AppPath & "/temp"
  If fso.GetFolder(FolderName) <> "" Then
    fso.DeleteFolder FolderName
    fso.CreateFolder FolderName
  End If
End Sub

Private Sub MDIForm_Resize()
Form1.Width = frmMain.Width
Form1.Height = frmMain.Height
End Sub

Private Sub MDIForm_Unload(Cancel As Integer)
  '删除work目录下所有子目录和文件
 
  Dim FolderName As String, fso As New FileSystemObject
  FolderName = AppPath & "/work"
  If fso.GetFolder(FolderName) <> "" Then
    fso.DeleteFolder FolderName
    fso.CreateFolder FolderName
  End If
  FolderName = AppPath & "/temp"
  If fso.GetFolder(FolderName) <> "" Then
    fso.DeleteFolder FolderName
    fso.CreateFolder FolderName
  End If
  Close
  End
End Sub

Private Sub mnuCustomer_Click()

End Sub

Private Sub mnuFactory_Click()

End Sub

Private Sub mnuFileExit_Click()
Unload Me
End Sub

Private Sub mnuHelpAbout_Click()
  frmSplash.Show
End Sub


Private Sub mnuInput_Click()
 
End Sub

Private Sub mnujhcx_Click()

End Sub


Private Sub mnuLogon_Click()
Login.Show
End Sub

Private Sub mnuOutput_Click()
frmoutput.Show
End Sub

Private Sub mnuProduct_Click()
frmDataManager3.Show
End Sub

Private Sub mnuProductInput_Click()
Frmdatamanager4.Show
End Sub

Private Sub mnuReturn_Click()
Frmretreat.Show
End Sub

Private Sub mnuStore_Click()
Frmdatamanager4.Show
End Sub

Private Sub mundataback_Click()
frmbackup.Show
End Sub

Private Sub mnuAbout_Click()
'软件信息界面居中函数
frmSplash.SetFocus
frmSplash.Left = (frmMain.ScaleWidth - frmSplash.Width) / 2
frmSplash.Top = (frmMain.ScaleHeight - frmSplash.Height) / 2
frmSplash.Show
End Sub

Private Sub mnuCopy_Click()
'调用文本复制函数
Clipboard.SetText Form1.Text1.SelText
End Sub


Private Sub mnuOpen_Click()
Call Open_Files

End Sub

Private Sub mnuPase_Click()
'调用文本粘帖函数
Form1.Text1.SelText = Clipboard.GetText()
End Sub

Private Sub mnuReplace_Click()
'调用替换对话框函数

End Sub

Private Sub mnuSeek_Click()
'调用查找对话框函数

End Sub

Private Sub mnuTrim_Click()
'调用文本剪切函数
Clipboard.SetText Form1.Text1.SelText
Form1.Text1.SelText = ""

End Sub

Private Sub munbaocun_Click()
Call Save_Files
End Sub

Private Sub munexits_Click()
Unload Me
Close
End
End Sub

Private Sub munseekku_Click()
frmseekyw.Show
End Sub



Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case "打开文件"
Call Open_Files
Case "插入代码"

Case "删除方法"

Case "添加方法"

Case "重写方法"

Case "运行调试"

Case "计 算 器"
 
  Dim RetVal
  RetVal = Shell(AppPath & "/tools/calc.exe", 1)
Case "退出系统"
Unload Me
Close
End
End Select
End Sub
Private Sub Open_Files()
CommonDialog1.Filter = "kjava文件(*.jar)|*.jar|"
CommonDialog1.FilterIndex = 2
CommonDialog1.ShowOpen
Dim NameString As String
filestring = Trim(CommonDialog1.filename)
Call GetFileName(filestring)
If Trim(CommonDialog1.filename) <> "" Then

  '将取得的FileName.jar复制到程序根目录下work/temp目录
  FileNameIf = Trim(CommonDialog1.filename)
  '检测文件FileName是否存在
  Dim fso As New FileSystemObject
  If fso.FileExists(FileNameIf) = True Then
    '检测文件FolderName是否存在
    FolderName = AppPath & "/temp/" & filename
    If fso.FolderExists(FolderName) = False Then
    fso.CreateFolder FolderName
    End If
    If fso.FolderExists(AppPath & "/work/" & filename & "/") = False Then
    fso.CreateFolder AppPath & "/work/" & filename & "/"
    End If
    If fso.FileExists(AppPath & "/temp/" & filename & "/" & filename) = True Then
    fso.DeleteFile AppPath & "/temp/" & filename & "/" & filename
    End If
    FileCopy CommonDialog1.filename, AppPath & "/temp/" & filename & "/" & filename
       
    '将临时目录temp下的jar文件二次混淆
    If fso.FileExists(AppPath & "/work/" & filename & "/" & filename) = True Then
    fso.DeleteFile AppPath & "/work/" & filename & "/" & filename
    End If
    OBName = AppPath & "/ini/ob.txt"
    If fso.FileExists(OBName) = True Then
      Call GetOB(OBName)
    Else
      MsgBox "混淆脚本文件丢失!", 0, "错误提示"
    End If
   
   
    '利用jar将工作目录下二次混淆的filename.jar解压缩



    '搜索filename.jar解压缩目录下的*.class文件并生成列表显示到文件管理区
 
 
       
       
       
       
       
       
       
       
  Else
      MsgBox "当前目录没有" & filename & "文件!", 0, "错误提示"
  End If
 
 
 
End If
End Sub
Private Sub Save_Files()
CommonDialog2.filename = filename
CommonDialog2.Filter = "kjava文件(*.jar)|*.jar|"
CommonDialog2.FilterIndex = 2
CommonDialog2.ShowSave

If Trim(CommonDialog2.filename) <> "" Then
 
 
  '利用winrar将工作目录下的jar解压缩文件重新打包保存至工作目录
 
 
 
  '将工作目录内打包后的文件复制另存为用户指定的文件
  FileNameIf = Trim(AppPath & "/work/" & filename & "/" & filename)
    '检测文件FileName是否存在
  Dim fso As New FileSystemObject
  If fso.FileExists(FileNameIf) = True Then
      FileCopy AppPath & "/work/" & filename & "/" & filename, CommonDialog2.filename
  Else
      MsgBox "您要打包保存的工程项目不存在!", 0, "错误提示"
  End If
 
End If
   
End Sub
'获取文件名称
Public Sub GetFileName(filestring)
Dim i As Integer
i = InStrRev(filestring, "/", -1)

filename = Mid(filestring, i + 1, Len(filestring) - i)


End Sub
'获取文件目录
Public Sub GetFileDir(filestring)
Dim i As Integer
i = InStrRev(filestring, "/", -1)
filedir = Mid(filestring, 1, i)

End Sub
'修改生成新的混淆脚本
Public Sub GetOB(OBName)
Dim A, S As String
Dim FreeNum As Integer
FreeNum = FreeFile
Dim fso As New FileSystemObject
If fso.FileExists(AppPath & "/temp/" & filename & "/ob.txt") = True Then
fso.DeleteFile AppPath & "/temp/" & filename & "/ob.txt"
End If
FileCopy OBName, AppPath & "/temp/" & filename & "/ob.txt"
OBName = AppPath & "/temp/" & filename & "/ob.txt"

'打开TXT,input表示以输入方式打开,output或append写入文件
Open OBName For Input As #FreeNum
Do Until EOF(FreeNum) '循环,直到文件结尾。Eof函数用来判断文件是否读完
Line Input #FreeNum, A
S = S + vbNewLine + A 'S用来保存整个文件
Loop
Close FreeNum

S = Replace(S, "JarFile", AppPath & "/temp/" & filename)
S = Replace(S, "outJar", AppPath & "/work/" & filename)
S = Replace(S, "libraryjarsFile", AppPath & "/tools/emptyapi.jar")

'打开TXT,output表示以输出方式打开,写入文件
Open OBName For Output As #FreeNum
Print #FreeNum, S
Close FreeNum





'生成ob混淆脚本
If fso.FileExists(AppPath & "/temp/" & filename & "/ob") = True Then
fso.DeleteFile AppPath & "/temp/" & filename & "/ob"
End If
Dim NewOBName As String
NewOBName = AppPath & "/temp/" & filename & "/ob"
Name OBName As NewOBName

'生成批处理文件.dat
Dim f
Set f = fso.CreateTextFile(AppPath & "/temp/" & filename & "/ob.bat", True)
f.WriteLine ("cd/")
f.WriteLine ("cd " & AppPath & "/tools/")
f.WriteLine ("java -jar proguard.jar @" & AppPath & "/temp/" & filename & "/ob")
f.WriteLine ("pause")
Set f = Nothing
Set fso = Nothing

If Shell(AppPath & "/temp/" & filename & "/" & "ob.bat", vbNormalFocus) <> 0 Then
MsgBox "混淆" & filename & "文件失败,程序将打开原版程序!", 0, "错误提示"
FileCopy CommonDialog1.filename, AppPath & "/work/" & filename & "/" & filename
End If

End Sub
 
<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值