Nghiên cứu lập trình FreeBasic, cú pháp gần giống VB6, tốc độ nhanh như C, biên dịch 32bit và 64bit (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

minhtungph

None
Tham gia
18/9/13
Bài viết
198
Được thích
78
- Có một ngôn ngữ lập trình cũng không mới, nhưng nó ít phổ biến, theo tìm hiểu của mình thì code được biên dịch trực tiếp ra mã máy, có hỗ trợ 32bit và 64bit, tốc độ thực thi thì nhanh như C
- Ngôn ngữ này có thể dùng để viết Game và làm nhiều thứ hay ho khác.
- ĐẶC BIỆT cái mình muốn nghiên cứu là viết dll để hỗ trợ cho Excel, vì cú pháp nó gần như giống với VB6
- web: https://www.freebasic.net/
Mã:
function AddNumbers( a as integer, b as integer ) as integer
        return a + b
end function
 
sub hello( )
        print "hello"
end sub
 
declare sub myprint( num as integer )
 
'Code outside any procedures is the main part of the program
hello( )
print AddNumbers( 1, 1 )
myprint 5
 
sub myprint( num as integer )
        print num
end sub
 
- Có một ngôn ngữ lập trình cũng không mới, nhưng nó ít phổ biến, theo tìm hiểu của mình thì code được biên dịch trực tiếp ra mã máy, có hỗ trợ 32bit và 64bit, tốc độ thực thi thì nhanh như C
- Ngôn ngữ này có thể dùng để viết Game và làm nhiều thứ hay ho khác.
- ĐẶC BIỆT cái mình muốn nghiên cứu là viết dll để hỗ trợ cho Excel, vì cú pháp nó gần như giống với VB6
- web: https://www.freebasic.net/
Mã:
function AddNumbers( a as integer, b as integer ) as integer
        return a + b
end function
 
sub hello( )
        print "hello"
end sub
 
declare sub myprint( num as integer )
 
'Code outside any procedures is the main part of the program
hello( )
print AddNumbers( 1, 1 )
myprint 5
 
sub myprint( num as integer )
        print num
end sub
1/ Các tín đồ VB6 trên thế giới họ vẫn đang nổ lực hết Mình viết 1 trình biên dịch mới dựa trên VB6 ... đoán là trong 1 To 2 năm nữa sẻ có nhiều đấy chứ ko phải có 1 FreeBasic đâu

2/ Còn nhanh như C thì không có cửa quá vì nó vẫn qua thông dịch chứ ko phải mã máy

3/ Tools sau nó cũng đang hướng tới nè ... Build 32 bit và 64 bít đấy ... nó dựa trên VB6

 
Chỉ e là do ít phổ biến nên không được hỗ trợ từ cộng đồng mạng, khó tìm code.
 
Chỉ e là do ít phổ biến nên không được hỗ trợ từ cộng đồng mạng, khó tìm code.
tại ít quan tâm nó thôi chứ đầy ra

VB6 nếu ai còn quan tâm thì viết DLL ... call nó từ VBA 32 bit mà ko cần đăng ký được đấy

Còn chuyển mã đó qua 64 bit trên VBA thì tôi chưa biết vì code Load nó thuộc hàng khủng của tây nó viết
 
Lần chỉnh sửa cuối:
Ngoài hạn chế về 64 bit và Unicode thì VB6 vẫn có chỗ nhất định trong làng lập trình. VB.NET dù hiện đại, mượt mà nhưng việc thao tác vẫn rắc rối khi viết ứng dụng đơn giản, offline...
Còn ngôn ngữ bạn nói không rõ có nhiều tài liệu hướng dẫn không? Và mức độ thân thiện nếu lập cho môi trường Office?
 
Lần chỉnh sửa cuối:

Bọn tàu tạo pm bắt chước các thương hiệu nổi tiếng, có cái giống y hệt.
Ví dụ như ZwCAD y hệt AutoCAD từ giao diện, lệnh, chức năng... Nếu không nhìn tên thì chả phân biệt nổi làm trên thằng nào? Cũng chả hiểu thế mà không bị bọn Autodesk kiện?
 
- Có một ngôn ngữ lập trình cũng không mới, nhưng nó ít phổ biến, theo tìm hiểu của mình thì code được biên dịch trực tiếp ra mã máy, có hỗ trợ 32bit và 64bit, tốc độ thực thi thì nhanh như C
- Ngôn ngữ này có thể dùng để viết Game và làm nhiều thứ hay ho khác.
...
nhanh như C:
Nói chuyteejn tốc độ thì đâu thể nói suông. Cần một vài điều kiện và con số chứng minh.
Vả lại, dân a-ma-tơ viết C thì không biết dùng con trỏ và pipe, không thể viết code chạy nhanh hơn ngôn ngữ khác được. So sánh có thể khập khiễng.
Chú: nếu nói C++ thì thư viện STL của C++ được viết bởi những tay lập trình thượng thặng, đã qua peer reviews, đã qua các trình dịch tối ưu hoá mã máy, cho nên rất hiệu quả. Ngôn ngữ nào muốn so sánh tốc độ thì phải chứng minh thư viện của nó đã.

viết game:
Thời buổi bi giờ người ta viết ghêm bằng Python thư viện lớn không kể hết.
 
nhanh như C:
Nói chuyteejn tốc độ thì đâu thể nói suông. Cần một vài điều kiện và con số chứng minh.
Vả lại, dân a-ma-tơ viết C thì không biết dùng con trỏ và pipe, không thể viết code chạy nhanh hơn ngôn ngữ khác được. So sánh có thể khập khiễng.
Chú: nếu nói C++ thì thư viện STL của C++ được viết bởi những tay lập trình thượng thặng, đã qua peer reviews, đã qua các trình dịch tối ưu hoá mã máy, cho nên rất hiệu quả. Ngôn ngữ nào muốn so sánh tốc độ thì phải chứng minh thư viện của nó đã.

viết game:
Thời buổi bi giờ người ta viết ghêm bằng Python thư viện lớn không kể hết.
Em thì không biết nhiều về các lý thuyết, chỉ lần mò code nào chạy được thì lấy về dùng, chỉ là áp dụng mấy cái vòng lặp cơ bản mà ngôn ngữ nào cũng có, hình 1 chạy code FreeBasic bằng IDE Win FBE, hình 2 chạy trên VBA, hình 3 chạy trên c++
Mã:
Sub test()
    Dim i As Long, j As Long, tong As Double, t As Single
    t = Timer
    For i = 1 To 100000
        For j = 1 To 100000
            tong = tong + i + j
        Next j
    Next i
    MsgBox tong & " - " & Timer - t
End Sub
1631604323355.png
1631604157956.png
1631603674149.png
Bài đã được tự động gộp:


nó đấy ... tiếng trung hết ... ko có tiếng Anh
VisualFreeBasic nó chỉ là 1 trong những IDE tạo ra hỗ trợ code FreeBasic, ngoài ra còn nhiều IDE khác nữa, mà phổ biến nhất là WinFBE, tất cả khi biên dịch đều phải thông qua FB, thằng Twinbasic và radbasic e đoán nó cũng thế, twin thì chưa có GUI và hiện tại chỉ hỗ trợ 32bit, còn thằng rad thì nó chỉ demo rồi thu phí, cũng chưa được trãi nghiệm.
Ngoài hạn chế về 64 bit và Unicode thì VB6 vẫn có chỗ nhất định trong làng lập trình. VB.NET dù hiện đại, mượt mà nhưng việc thao tác vẫn rắc rối khi viết ứng dụng đơn giản, offline...
Còn ngôn ngữ bạn nói không rõ có nhiều tài liệu hướng dẫn không? Và mức độ thân thiện nếu lập cho môi trường Office?
a xem phần wiki của nó cũng khá giống với vb6: https://www.freebasic.net/wiki/DocToc
 
Lần chỉnh sửa cuối:
2 năm trước tải thử rồi ... chán lắm thấy nhiều người hy vọng cái này radbasic

VB6 vẫn là tốt nhất trong cái đám đó tới thời điểm hiện tại

Thấy nhiều dự án code vẫn viết trên VB6 cho windows server 2019 ... thì VB6 sẻ tồn tại hết vòng đời của bản Win đó ít nhất 5 to 10 năm sau

Ms tuyên bố VB6 hổ trợ trên Windows Server 2019 ... cứ yên tâm mà viết VB6 đi ... chạy tốt sau 10 năm nữa


1631605750651.png


Còn muốn viết DLL mà chạy trên Office 64 bít thì làm theo chỉ dẫn của tôi trên GPE này ... nếu ko sử dụng ADODB còn sử dụng ADODB thì cài thêm

Microsoft Access Database Engine 2010 Redistributable​

 
Lần chỉnh sửa cuối:
VB6 chạy trên Windows 11 ... hình tây nó Úp ... còn tôi Copy :D :D


2.gif
 
Bạn nào còn yêu thích VB6 thì hãy tự tin mà viết và sử dụng nó... Tôi thấy mấy diễn đàn quốc tế họ vẫn viết các dự án code khủng trên VB6 đấy

có 2 cái mà lâu nay tôi hay nhắc + nói trên GPE này

1/ sử dụng DLL viết = VB6 trên Office 64 bít ... nói nhiều lắm rồi nên ko trình bày lại nữa tốn tài nguyên quá

2/ thông thường khi ta viết DLL = VB6 nếu copy qua máy khác thì ta phải đăng ký nó theo tiêu chí của Ms ( Bill đặt ra như thế ) nhưng trên thực tế tây nó viết code load luôn DLL đó sử dụng mà ko cần đăng ký nó

Bản Demo tôi úp dưới ... hãy thưởng thức nó .... hãy cố giắng tìm mã nguồn đó từ Google .... nếu kẹt quá hết cách thì cứ nói thẳng với tôi ... tại đây ( không thậm thụt lén lút bí mật tin nhắn ... có gì cứ phơi bày hết lên đây )

với mã nguồn trên là tây nó viết ... còn tôi copy và sử dụng rất tốt trên VB6 và VBA 32 bit ... còn qua VBA 64 bit thì phải viết lại tùy theo khả năng của ai đó

nếu trong khả năng tìm kiếm 1 tháng hay to dài dài gì đó mà hết cách cả nói ... vì tôi muốn ai đó tự thân mà tìm lấy nó mới thú vị

3/ khi ta khai báo load hàm API cũng thế mục này xem mô tả link sau bài 28 và 30 thớt sau đã nói nên không cần thiết nói lại nữa


Với cách trên thì từ VBA khai báo load API mà ko cần khai báo Private Declare Function + #If 32 và 64 nữa
Mà chỉ viết 1 Hàm duy nhất là chạy thôi

....
....
hãy cố giắng tìm đi và đi xa hơn nữa cái GPE này thì ai đó mới không có cảm giác như mình ngồi đáy giếng xong la om xòm .... vãi kinh lắm-0-0-0-===\.

Demo sau là load DLL viết = VB6 mà không cần đăng ký nó
 

File đính kèm

Lần chỉnh sửa cuối:
File trên e thử trên máy chính ( win 10 64bit, office 32bit) chạy được, còn thử trên VPS ( office 64 bit ) thì lỗi
1631674472437.png
 
còn về vấn đề viết vb6 để chạy trên Office 64bit nó cũng đơn giản chứ ko có gì (thậm chí ko cần viết thêm code gì hết,) , nhưng khi dùng exe mà phân phối cho khách hàng thì nếu pack lại hầu như 100% bị báo là virus.
 
còn về vấn đề viết vb6 để chạy trên Office 64bit nó cũng đơn giản chứ ko có gì (thậm chí ko cần viết thêm code gì hết,) , nhưng khi dùng exe mà phân phối cho khách hàng thì nếu pack lại hầu như 100% bị báo là virus.
vậy là biết rồi he .... khá giỏi hơn ai đó đấy

vấn đề Virus 90 % là do ta viết code ... hãy mò tiếp đi là thấy
VD: trên VBA thôi ta khai báo vài hàm API thì https://www.virustotal.com/gui/home/upload

nó báo là virus ngay

Còn trên VB6 là mã nhị phân cần phải viết chặt chẽ hơn là hết thôi .... hãy cố giắng vượt qua cái ải này thì bạn thẻ thấy được nhiều vấn đề khi viết code

Còn trên VBA thích khai báo viết từa lưa hột dưa các kiểu ko sao cả

xem bài 18 và 26 link sau
 
Lần chỉnh sửa cuối:
vậy là biết rồi he .... khá giỏi hơn ai đó đấy

vấn đề Virus 90 % là do ta viết code ... hãy mò tiếp đi là thấy
VD: trên VBA thôi ta khai báo vài hàm API thì https://www.virustotal.com/gui/home/upload

nó báo là virus ngay

Còn trên VB6 là mã nhị phân cần phải viết chặt chẽ hơn là hết thôi .... hãy cố giắng vượt qua cái ải này thì bạn thẻ thấy được nhiều vấn đề khi viết code

Còn trên VBA thích khai báo viết từa lưa hột dưa các kiểu ko sao cả

xem bài 18 và 26 link sau
exe xuất ra từ vb6 thì thường lành tính, ít khi bị báo virus, và bị báo khi dùng 1 số APi như anh nói, nhưng cái em nói chính là làm xong mình pack lại thì hầu như đều bị báo virus, như chương trình của anh thì chưa pack
1631685557247.png
 
exe xuất ra từ vb6 thì thường lành tính, ít khi bị báo virus, và bị báo khi dùng 1 số APi như anh nói, nhưng cái em nói chính là làm xong mình pack lại thì hầu như đều bị báo virus, như chương trình của anh thì chưa pack
View attachment 266113
1/ 90/100 pack là đính virus ... còn tại sao thì tôi lại ko có bàn ... vì có bàn đi chăng nữa ai đó chọc 1 câu tôi lại IM RE ... vì có học bài bản chi mô mà giải thích

2/ Tôi khuyên thật lòng cố giắng học 1 tools gì đó mà viết nếu mình có khả năng và hãy bỏ pack đi càng sớm càng tốt vì tôi thấy 1 số tay code C# tầm quốc tế họ ko bao giờ Pack cả mà họ viết mọi cái trên C# tận dụng hậu thuẩn của Ms viết windows Form + vvv còn lại thư viên đặc biệt quan trọng thì viết trong c++ xong từ C# load hàm trong C++

Với cách trên rất an toàn mà ko dính cả đám virus do ta pack

3/ Ngay tôi viết API trên Delphi cũng báo có Virus .... báo đó là do chính ta viết đấy chứ ko có con virus thật nào cả
hãy đọc bài số 26 của anh duyệt là thấy 1 câu nói đó tôi mất cả năm mới hiểu ra cơ chế của nó đấy... còn ko bỏ tiền ra mua là hết virus ... con mua sao thì hòi anh ý xem tình hình sao ( còn tôi thì ko bao giờ mua cả mà tự xử lấy )

1631688350378.png

4/ mà lỡ xem Files đó rồi ... tôi nhờ chút ... xem hết tất cả các Class xem có thấy gì ko ... còn module hình như thấy
xong cứ úp lên đây vô tư đi ... ko phải suy nghĩ
 
Lần chỉnh sửa cuối:
4. clsToolTip, clsBitmap : nhờ cái tool này của a mới phát hiện đã có lớp bitmap trong VB6, lại tiếp tục nghiên cứu về imageSearch trong VB6, không hiểu sao dll ImageSearch của AutoIT nó khai báo sử dụng bình thường mà trong vb6 lại ko dùng được.
Anh Kiều Mạnh đã từng nghiên cứu qua việc tìm kiếm 1 hình ảnh có sẵn và xuất ra vị trí xuất hiện của nó trên màn hình chưa?
1631689254124.png
 

File đính kèm

4. clsToolTip, clsBitmap : nhờ cái tool này của a mới phát hiện đã có lớp bitmap trong VB6, lại tiếp tục nghiên cứu về imageSearch trong VB6, không hiểu sao dll ImageSearch của AutoIT nó khai báo sử dụng bình thường mà trong vb6 lại ko dùng được.
Anh Kiều Mạnh đã từng nghiên cứu qua việc tìm kiếm 1 hình ảnh có sẵn và xuất ra vị trí xuất hiện của nó trên màn hình chưa?
View attachment 266116
ko xem dược = windows media
1631689825765.png

đó trước đây nó khoãng 40 em virus ... giờ còn 1 em mà tìm hoài ko ra nên tạm bỏ đó
 
ko biết tham số + cách sử dụng hàm sau sao @minhtungph

1631690354351.png
Bài đã được tự động gộp:

Mã:
#include-once
; ------------------------------------------------------------------------------
;
; AutoIt Version: 3.0
; Language:       English
; Description:    Functions that assist with Image Search
;                 Require that the ImageSearchDLL.dll be loadable
;
; ------------------------------------------------------------------------------

;===============================================================================
;
; Description:      Find the position of an image on the desktop
; Syntax:           _ImageSearchArea, _ImageSearch
; Parameter(s):
;                   $findImage - the image to locate on the desktop
;                   $tolerance - 0 for no tolerance (0-255). Needed when colors of
;                                image differ from desktop. e.g GIF
;                   $resultPosition - Set where the returned x,y location of the image is.
;                                     1 for centre of image, 0 for top left of image
;                   $x $y - Return the x and y location of the image
;                   $transparency - TRANSBLACK, TRANSWHITE or hex value (e.g. 0xffffff) of
;                                  the color to be used as transparency; can be omitted if
;                                  not needed
;
; Return Value(s):  On Success - Returns 1
;                   On Failure - Returns 0
;
; Note: Use _ImageSearch to search the entire desktop, _ImageSearchArea to specify
;       a desktop region to search
;
;===============================================================================
Func _ImageSearch($findImage, $resultPosition, ByRef $x, ByRef $y, $tolerance, $transparency = 0)
    Return _ImageSearchArea($findImage, $resultPosition, 0, 0, @DesktopWidth, @DesktopHeight, $x, $y, $tolerance, $transparency)
EndFunc   ;==>_ImageSearch

Func _ImageSearchArea($findImage, $resultPosition, $x1, $y1, $right, $bottom, ByRef $x, ByRef $y, $tolerance, $transparency = 0)
    ;MsgBox(0,"asd","" & $x1 & " " & $y1 & " " & $right & " " & $bottom)
    If Not ($transparency = 0) Then $findImage = "*" & $transparency & " " & $findImage
    If $tolerance > 0 Then $findImage = "*" & $tolerance & " " & $findImage
    $result = DllCall("ImageSearchDLL.dll", "str", "ImageSearch", "int", $x1, "int", $y1, "int", $right, "int", $bottom, "str", $findImage)

    ; If error exit
    If $result[0] = "0" Then Return 0

    ; Otherwise get the x,y location of the match and the size of the image to
    ; compute the centre of search
    $array = StringSplit($result[0], "|")

    $x = Int(Number($array[2]))
    $y = Int(Number($array[3]))
    If $resultPosition = 1 Then
        $x = $x + Int(Number($array[4]) / 2)
        $y = $y + Int(Number($array[5]) / 2)
    EndIf
    Return 1
EndFunc   ;==>_ImageSearchArea

Vãi thế nó đây = code

mấy năm trước cài tools xem DLL VB6 hoài mà thấy như mấy hình trên ko à xong chán bỏ ... suy ra VB6 viết DLL bảo mật tốt hơn cả C#
 
Lần chỉnh sửa cuối:
Đó là file AutoIT anh, trong autoIT ta có 2 biến x,y, khi gọi hàm: $search=_ImageSearch(@ScriptDir & '\Anh.bmp',1,$x,$y,1), thì vị trí của ảnh "Anh.bmp" trong cùng thư mục chạy sẽ gán vào biến x,y
Mã:
    Local $x=0,$y=0
    $search=0
    While $search=0
        $search=_ImageSearch(@ScriptDir & '\Anh.bmp',1,$x,$y,1)
    WEnd
    if $search=1 Then
        MouseClick("left",$x,$y,1)
    EndIf
Bài đã được tự động gộp:

mấy năm trước cài tools xem DLL VB6 hoài mà thấy như mấy hình trên ko à xong chán bỏ ... suy ra VB6 viết DLL bảo mật tốt hơn cả C#
Vb6 biên dịch ra native code luôn mà anh, còn C# nó biên dịch ra P-code, nếu chương trình biên dịch ra để nguyên vậy thì gần như dịch ngược lại 99% code ( còn ngon hơn nữa là chương trình viết bằng c# có thể dịch thành vb.net)
 
Lần chỉnh sửa cuối:
Đó là file AutoIT anh, trong autoIT ta có 2 biến x,y, khi gọi hàm: $search=_ImageSearch(@ScriptDir & '\Anh.bmp',1,$x,$y,1), thì vị trí của ảnh "Anh.bmp" trong cùng thư mục chạy sẽ gán vào biến x,y
Mã:
    Local $x=0,$y=0
    $search=0
    While $search=0
        $search=_ImageSearch(@ScriptDir & '\Anh.bmp',1,$x,$y,1)
    WEnd
    if $search=1 Then
        MouseClick("left",$x,$y,1)
    EndIf
Bài đã được tự động gộp:


Vb6 biên dịch ra native code luôn mà anh, còn C# nó biên dịch ra P-code, nếu chương trình biên dịch ra để nguyên vậy thì gần như dịch ngược lại 99% code ( còn ngon hơn nữa là chương trình viết bằng c# có thể dịch thành vb.net)
vậy cái DLL VB6 đó ko pack cũng đâu có thấy được gì đâu ... thấy sơ sơ như thế thì có cũng như không mà
 
vậy cái DLL VB6 đó ko pack cũng đâu có thấy được gì đâu ... thấy sơ sơ như thế thì có cũng như không mà
chủ yếu mở ra tìm hiểu thông tin thôi anh, với lại có thể đoán được trong đó dùng những hàm gì, và nếu chương trình dùng key đơn giản thì có thể mò ra chỗ lưu key hoặc kiểu mã hoá, như cái exe của a có một số gợi ý từ các hàm API
Mã:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Sub ProgIDFromCLSID Lib "ole32"()
Private Declare Sub CLSIDFromString Lib "ole32"()
Private Declare Sub StringFromGUID2 Lib "ole32"()
Private Declare Sub LoadTypeLib Lib "oleaut32"()
Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" Alias "GetProcAddress" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 
chủ yếu mở ra tìm hiểu thông tin thôi anh, với lại có thể đoán được trong đó dùng những hàm gì, và nếu chương trình dùng key đơn giản thì có thể mò ra chỗ lưu key hoặc kiểu mã hoá, như cái exe của a có một số gợi ý từ các hàm API
Mã:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Sub ProgIDFromCLSID Lib "ole32"()
Private Declare Sub CLSIDFromString Lib "ole32"()
Private Declare Sub StringFromGUID2 Lib "ole32"()
Private Declare Sub LoadTypeLib Lib "oleaut32"()
Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" Alias "GetProcAddress" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
khúc api thấy hết mà ... kéo xuống copy hết các hàm đó úp lên luôn đi

Có thấy vị trí lưu keys ko úp luôn lên ... vô tư đi
 
mới lục lại cái tools ngày xưa hay vọc xem ... thì nói rồi cái mớ API ai cũng xem được hết
API
1631694207354.png

Còn code khác nó ra thế này
Mã:
Public Sub Proc_1_3_403CD0
  loc_00403D12: Dim var_30(60415) As Byte
  loc_00403D2D: var_18 = VarPtr(var_24)
  loc_00403DC6: call UBound(00000001h, arg_10, var_18, var_4C, var_18, var_4C, var_18, var_4C, var_18, var_4C, var_18, var_4C, var_18, var_4C, var_30, 00402120h)
  loc_00403DCE: var_ret_1 = UBound(00000001h, arg_10, var_18, var_4C, var_18, var_4C, var_18, var_4C, var_18, var_4C, var_18, var_4C, var_18, var_4C, var_30, 00402120h)
  loc_00403DD4:
  loc_00403DDB: If var_ret_1 < 0 Then GoTo loc_00403E4B
  loc_00403DE4: If ecx = 0 Then GoTo loc_00403E0C
  loc_00403DEA: If ecx <> 1 Then GoTo loc_00403E0C
  loc_00403DF9: var_58 = var_ret_1
  loc_00403DFC: If var_ret_1 < 0 Then GoTo loc_00403E07
  loc_00403DFE: var_eax = Err.Raise
  loc_00403E07: 'Referenced from: 00403DFC
  loc_00403E0A: GoTo loc_00403E12
  loc_00403E0C: 'Referenced from: 00403DE4
  loc_00403E0C: var_eax = Err.Raise
  loc_00403E12: 'Referenced from: 00403E0A
  loc_00403E1F: call __vbaVarVargNofree
  loc_00403E2E: var_50 = CLng(__vbaVarVargNofree)
  loc_00403E40: True = True + var_ret_1
  loc_00403E49: GoTo loc_00403DD4
  loc_00403E4B: 'Referenced from: 00403DDB
  loc_00403E84: var_eax = CallWindowProc(VarPtr(var_24), 0, 0, 0, 0)
  loc_00403E9A: var_38 = CallWindowProc(VarPtr(var_24), 0, 0, 0, 0)
  loc_00403EA6: var_50 = var_30
  loc_00403EAF: Exit Sub
End Sub

và sau nữa ... đó là thấy nguyên Hàm đấy
Mã:
Public Function LoadLib(DLLPath, className) '404310
  loc_00404365: Me.var_1C = PropBag.ReadProperty(DLLPath, DLLPath)
  loc_00404391: GoTo loc_004043AC
  loc_00404397: If var_4 = 0 Then GoTo loc_004043A2
  loc_004043A2: 'Referenced from: 00404397
  loc_004043AB: Exit Sub
  loc_004043AC: 'Referenced from: 00404391
End Function

Mai mốt viết lại các cấu trúc String mã hóa hết là chịu thôi
Bài đã được tự động gộp:

keys đấy ... mã hóa hóa mấy cái string là thua toàn tập
Mã:
Public Sub Proc_1_1_11025A47
  loc_11025AA5: var_28 = CreateObject("Shell.Application", 0)
  loc_11025AD0: var_90 = "\keys.dat"
  loc_11025AE5: call __vbaVarLateMemCallLdRf(var_38, var_28, "Namespace", 00000001h, var_78, var_74, var_70, var_6C, "Self", var_68, "Path", var_68, 0, var_68, ebx)
  loc_11025AF2: call __vbaVarLateMemCallLdRf(var_48, __vbaVarLateMemCallLdRf(var_38, var_28, "Namespace", 00000001h, var_78, var_74, var_70, var_6C, "Self", var_68, "Path", var_68, 0, var_68, ebx))
  loc_11025B23: var_18 = Me. & "\keys.dat"
  loc_11025B4B: GoTo loc_11025B7A
  loc_11025B51: If var_4 = 0 Then GoTo loc_11025B5B
  loc_11025B5B: 'Referenced from: 11025B51
  loc_11025B79: Exit Sub
  loc_11025B7A: 'Referenced from: 11025B4B
End Sub
Bài đã được tự động gộp:

hàm sau là gõ trên Cells lấy dữ liệu qua Internet
Mã:
Public Function GetRsSQL(Ip, Port, FileName, SQL, TieuDe) '110282D0
  Dim var_60 As Me
  Dim var_5C As Me
  Dim var_58 As Me
  Dim var_84 As Me
  loc_1102834D: On Error Resume Next
  loc_1102836A: var_eax = Me.PropBag.WriteProperty(Ip, Port, FileName)
  loc_1102838E: Set Me = var_60
  loc_110283A3: If TieuDe = 0 Then GoTo loc_110283AC
  loc_110283AC: 'Referenced from: 110283A3
  loc_11028415: -1 = Me.Height
  loc_11028441: var_50 = var_74
  loc_11028455: call __vbaRefVarAry(var_50, var_88)
  loc_1102845C: call UBound(00000002h, __vbaRefVarAry(var_50, var_88))
  loc_11028464: UBound(00000002h, __vbaRefVarAry(var_50, var_88)) = UBound(00000002h, __vbaRefVarAry(var_50, var_88)) + 00000001h
  loc_1102846D: UBound(00000002h, __vbaRefVarAry(var_50, var_88)) = UBound(00000002h, __vbaRefVarAry(var_50, var_88)) + 1
  loc_11028479: call __vbaRefVarAry(var_50)
  loc_11028480: call UBound(00000001h, eax)
  loc_11028488: UBound(00000001h, eax) = UBound(00000001h, eax) + 00000001h
  loc_11028491: var_ret_1 = UBound(00000001h, eax)
  loc_11028499: var_20 = var_ret_1
  loc_110284B4: ReDim var_40(1 To var_ret_1)
  loc_110284BD: UBound(00000002h, __vbaRefVarAry(var_50, var_88)) = UBound(00000002h, __vbaRefVarAry(var_50, var_88)) - 1
  loc_110284C5: var_EC = UBound(00000002h, __vbaRefVarAry(var_50, var_88))
  loc_110284D9: If 00000001h > 0 Then GoTo loc_1102878D
  loc_110284E4:
  loc_110284E9: If 00000001h > 0 Then GoTo loc_11028776
  loc_110284F6: If TieuDe = 0 Then GoTo loc_1102864A
  loc_110284FF: If 00000001h <> 1 Then GoTo loc_1102864A
  loc_11028512: Me.Caption = var_60
  loc_11028538: 00000001h = 00000001h - 00000001h
  loc_11028575: Me.var_88 = Forms
  loc_110285C1: var_6C = var_5C
  loc_110285D0: If var_40 = 0 Then GoTo loc_11028614
  loc_110285D6: If var_40 <> 2 Then GoTo loc_11028614
  loc_110285DD: 00000001h = 00000001h - ecx+0000001Ch
  loc_110285E3: If 00000001h < 0 Then GoTo loc_110285EE
  loc_110285E5: var_eax = Err.Raise
  loc_110285EE: 'Referenced from: 110285E3
  loc_110285F0: 00000001h = 00000001h - ecx+00000014h
  loc_110285FC: If 00000001h < 0 Then GoTo loc_11028607
  loc_110285FE: var_eax = Err.Raise
  loc_11028607: 'Referenced from: 110285FC
  loc_11028612: GoTo loc_1102861D
  loc_11028614: 'Referenced from: 110285D0
  loc_11028614: var_eax = Err.Raise
  loc_1102861D: 'Referenced from: 11028612
  loc_11028625: ecx = var_5C
  loc_1102864A: 'Referenced from: 110284F6
  loc_1102864C: 00000001h = 00000001h - 00000001h
  loc_1102865A: var_2C = var_2C - 00000001h
  loc_11028663: var_8C = var_2C
  loc_110286B7: call __vbaVarIndexLoadRefLock(var_74, var_50, var_58, 00000002h, var_88)
  loc_110286CE: Me.BackColor = __vbaVarIndexLoadRefLock(var_74, var_50, var_58, 00000002h, var_88)
  loc_110286E0: If var_40 = 0 Then GoTo loc_1102872C
  loc_110286E6: If var_40 <> 2 Then GoTo loc_1102872C
  loc_110286EC: var_54 = var_54 + var_2C
  loc_110286F5: var_54 = var_54 - ecx+0000001Ch
  loc_110286FB: If var_54 < 0 Then GoTo loc_11028706
  loc_110286FD: var_eax = Err.Raise
  loc_11028706: 'Referenced from: 110286FB
  loc_11028708: 00000001h = 00000001h - ecx+00000014h
  loc_11028714: If 00000001h < 0 Then GoTo loc_1102871F
  loc_11028716: var_eax = Err.Raise
  loc_1102871F: 'Referenced from: 11028714
  loc_1102872A: GoTo loc_11028735
  loc_1102872C: 'Referenced from: 110286E0
  loc_1102872C: var_eax = Err.Raise
  loc_11028735: 'Referenced from: 1102872A
  loc_11028740: ecx = var_84
  loc_11028761: 00000001h = 00000001h + 00000001h
  loc_11028771: GoTo loc_110284E4
  loc_11028776: 'Referenced from: 110284E9
  loc_1102877B: 00000001h = 00000001h + var_2C
  loc_11028788: GoTo loc_110284D3
  loc_1102878D: 'Referenced from: 110284D9
  loc_110287A9: var_3C =
  loc_110287C1: var_eax = call Proc_9_1_1102EAD0(Me.SaveProp, , )
  loc_110287D7: var_6C = Err
  loc_110287ED: var_CC = CBool(Err)
  loc_110287FF: If CBool(Err) = 0 Then GoTo loc_1102881D
  loc_11028811: var_60 = Me.Name
  loc_1102881D: 'Referenced from: 110287FF
  loc_1102881F: On Error Resume Next
  loc_11028825: Exit Sub
  loc_11028830: GoTo loc_1102887B
  loc_11028836: If var_C = 0 Then GoTo loc_11028841
  loc_11028841: 'Referenced from: 11028836
  loc_1102887A: Exit Sub
  loc_1102887B: 'Referenced from: 11028830
  loc_11028890: Exit Sub
End Function
 
Lần chỉnh sửa cuối:
Nhân tiện nói chuyện Virus ... tôi chỉ cho ai đó 1 chút thôi còn lại tự mò mà check lấy sau này viết code cho nó chặt chẽ chút ... Vì viết trên Tools từ VB6 trở lên là mã nhị phân nên nó rất nghiêm ngặt chứ ko như VBA ... khai báo kiểu từa lưa hột dưa = ok tuốt

VD : trên đầu Module tôi khai báo như sau

Private bKey As Byte

lập tức báo Virus Unsafe

Vì tôi sử dụng lại biến bKey cho rất nhiều hàm nên làm biếng khai vậy cho nhanh
xong tôi chuyển nó vào Sub ... biến mất con virus kia ngay lập tức .... Tại sao ư mò diết khắc biết thôi
Mã:
Private Function GetKeyServer() As String    
    Dim bKey As Byte  
End Function

Mò diết xong nhớ thấy báo virus gì là nghi nó ở sub Or hàm nào mới viết thôi ... xong check chút là ra

Vui lòng ko trích dẫn bài này vì ko thích bàn nhiều chuyện ===> thế tôi ===> bu vào nhọc lắm
 
Lần chỉnh sửa cuối:

Bài viết mới nhất

Back
Top Bottom