ibrahem Posted October 31, 2018 Share Posted October 31, 2018 (edited) This is not actually a UDF it is an idea to make HWID protection unable to be hacked if the user managed to Get HWIDs list and modified it to add his HWID the idea is that you modify the real hwid to make new hwid (fake hwid) and modify the (fake hwid) to make (shown hwid) by using StringReplace("","") the (real hwid) and (fake hwid) will not be shown to the user ,but (shown hwid ) will be shown ... when the user gives you his (shown hwid),you modify it back to (fake hwid) the (fake hwid) will be put on the online HWIDs list .. when the user who has bought licence , whose fake hwid was put on the online list , open the program , the program would get the user's fake hwid and compare it with the online list and if it was found, the program would work ... else, the program would ask the user to buy a licence so if the user put his/her ( shown hwid ) on the list, the program would not work as the program looks for the (fake hwid) not the (shown hwid) > i hope you like this idea...this idea can be used in all scripting languages here is the script expandcollapse popup;~ By ÅÈÑÇåíã ÚÕÇã ÇáÏíä / ibrahem #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <String.au3> #include <Crypt.au3> #include <Array.au3> CheckForDebuggers() Global $FAKEhwid, $FAKEhwid, $REALhwid, $SHOWNhwid, $RealConvertedHwid, $SHOWNtext, $num, $CheckResult, $SAVEDfakeHWID $num = 0 $REALhwid = _GetHWID() ConvertRealHwidToFakeHwid() ConvertFakeHwidToShownHwid() $SAVEDfakeHWID = $FAKEhwid $SHOWNtext = $SHOWNhwid check() If $CheckResult <> 1 Then LicenceForm() ; If hwid was not found then ask to buy licence Func LicenceForm() MouseMove(MouseGetPos(0), MouseGetPos(1), 1) #Region ### START Koda GUI section ### $regester = GUICreate(" Subscribe Form ", 666, 51, -1, -1) $InputHWID = GUICtrlCreateInput($SHOWNhwid, 96, 8, 489, 32, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") $buyLicence = GUICtrlCreateButton("Subscribe ", 8, 8, 73, 33) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $copyHWID = GUICtrlCreateButton("Copy", 600, 8, 57, 33) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $copyHWID ClipPut($SHOWNtext) Case $buyLicence ;How users can buy licence.. Ex:Shellexecute("your FB page")..or MsgBox(0,"my phone number", "phone number") ; buy licence action ....etc. EndSwitch WEnd EndFunc ;==>LicenceForm Func check() Do Call("SearchForHwid") If $FAKEhwid = $FAKEhwid[$num] Then MsgBox(0, "", "done") $num = $num + 1 If $FAKEhwid[$num] = "finish" Then ExitLoop If $SAVEDfakeHWID = $FAKEhwid[$num] Then ; What happens (after hwid is found / if th user has licence) $CheckResult = 1 ExitLoop EndIf Until $FAKEhwid = "finsh" EndFunc ;==>check Func SearchForHwid() $Source = BinaryToString(InetRead('link of raw online hwids list', 1));(((((((((((((((((((((((((((link of raw online hwids list))))))))))))))))))))))))) $reader = _StringBetween($Source, '{', '}') For $a In $reader $FAKEhwid = _StringBetween($Source, '{', '}') ConsoleWrite($FAKEhwid[$num] & @CRLF) Next EndFunc ;==>SearchForHwid Func _GetHWID() Local $aDrives = DriveGetDrive('FIXED'), $sOutput = '' If @error = 0 Then For $i = 1 To $aDrives[0] $sOutput &= DriveGetSerial($aDrives[$i]) Next EndIf $aDrives = DriveGetDrive('CDROM') If @error = 0 Then For $i = 1 To $aDrives[0] $sOutput &= DriveGetSerial($aDrives[$i]) Next EndIf Local $aMemory = MemGetStats() $sOutput &= @OSVersion & @OSBuild & @OSArch & @CPUArch & @KBLayout & $aMemory[1] $aMemory = 0 $sOutput = StringStripWS($sOutput, 8) Local $sHash = StringTrimLeft(_Crypt_HashData($sOutput, $CALG_MD5), 2) Return StringMid($sHash, 1, 8) & '-' & StringMid($sHash, 9, 4) & '-' & StringMid($sHash, 13, 4) & '-' & StringMid($sHash, 17, 4) & '-' & StringMid($sHash, 21, 12) EndFunc ;==>_GetHWID Func ConvertRealHwidToFakeHwid() $FAKEhwid = $REALhwid $FAKEhwid = StringReplace($FAKEhwid, "A", "Z") $FAKEhwid = StringReplace($FAKEhwid, "B", "1") $FAKEhwid = StringReplace($FAKEhwid, "C", "M") $FAKEhwid = StringReplace($FAKEhwid, "D", "C") $FAKEhwid = StringReplace($FAKEhwid, "E", "D") $FAKEhwid = StringReplace($FAKEhwid, "F", "H") $FAKEhwid = StringReplace($FAKEhwid, "G", "I") $FAKEhwid = StringReplace($FAKEhwid, "H", "L") $FAKEhwid = StringReplace($FAKEhwid, "I", "O") $FAKEhwid = StringReplace($FAKEhwid, "J", "V") $FAKEhwid = StringReplace($FAKEhwid, "K", "E") $FAKEhwid = StringReplace($FAKEhwid, "L", "Y") $FAKEhwid = StringReplace($FAKEhwid, "M", "U") $FAKEhwid = StringReplace($FAKEhwid, "N", "A") $FAKEhwid = StringReplace($FAKEhwid, "O", "7") $FAKEhwid = StringReplace($FAKEhwid, "P", "2") $FAKEhwid = StringReplace($FAKEhwid, "Q", "3") $FAKEhwid = StringReplace($FAKEhwid, "R", "4") $FAKEhwid = StringReplace($FAKEhwid, "S", "5") $FAKEhwid = StringReplace($FAKEhwid, "T", "P") $FAKEhwid = StringReplace($FAKEhwid, "U", "Q") $FAKEhwid = StringReplace($FAKEhwid, "V", "J") $FAKEhwid = StringReplace($FAKEhwid, "W", "K") $FAKEhwid = StringReplace($FAKEhwid, "X", "N") $FAKEhwid = StringReplace($FAKEhwid, "Y", "9") $FAKEhwid = StringReplace($FAKEhwid, "Z", "X") $FAKEhwid = StringReplace($FAKEhwid, "1", "8") $FAKEhwid = StringReplace($FAKEhwid, "2", "G") $FAKEhwid = StringReplace($FAKEhwid, "3", "W") $FAKEhwid = StringReplace($FAKEhwid, "4", "R") $FAKEhwid = StringReplace($FAKEhwid, "5", "0") $FAKEhwid = StringReplace($FAKEhwid, "6", "B") $FAKEhwid = StringReplace($FAKEhwid, "7", "F") $FAKEhwid = StringReplace($FAKEhwid, "8", "S") $FAKEhwid = StringReplace($FAKEhwid, "9", "6") $FAKEhwid = StringReplace($FAKEhwid, "0", "T") $FAKEhwid = StringReplace($FAKEhwid, "-", "-") EndFunc ;==>ConvertRealHwidToFakeHwid Func ConvertFakeHwidToShownHwid() $SHOWNhwid = $FAKEhwid $SHOWNhwid = StringReplace($SHOWNhwid, "A", "Z") $SHOWNhwid = StringReplace($SHOWNhwid, "B", "1") $SHOWNhwid = StringReplace($SHOWNhwid, "C", "M") $SHOWNhwid = StringReplace($SHOWNhwid, "D", "C") $SHOWNhwid = StringReplace($SHOWNhwid, "E", "D") $SHOWNhwid = StringReplace($SHOWNhwid, "F", "H") $SHOWNhwid = StringReplace($SHOWNhwid, "G", "I") $SHOWNhwid = StringReplace($SHOWNhwid, "H", "L") $SHOWNhwid = StringReplace($SHOWNhwid, "I", "O") $SHOWNhwid = StringReplace($SHOWNhwid, "J", "V") $SHOWNhwid = StringReplace($SHOWNhwid, "K", "E") $SHOWNhwid = StringReplace($SHOWNhwid, "L", "Y") $SHOWNhwid = StringReplace($SHOWNhwid, "M", "U") $SHOWNhwid = StringReplace($SHOWNhwid, "N", "A") $SHOWNhwid = StringReplace($SHOWNhwid, "O", "7") $SHOWNhwid = StringReplace($SHOWNhwid, "P", "2") $SHOWNhwid = StringReplace($SHOWNhwid, "Q", "3") $SHOWNhwid = StringReplace($SHOWNhwid, "R", "4") $SHOWNhwid = StringReplace($SHOWNhwid, "S", "5") $SHOWNhwid = StringReplace($SHOWNhwid, "T", "P") $SHOWNhwid = StringReplace($SHOWNhwid, "U", "Q") $SHOWNhwid = StringReplace($SHOWNhwid, "V", "J") $SHOWNhwid = StringReplace($SHOWNhwid, "W", "K") $SHOWNhwid = StringReplace($SHOWNhwid, "X", "N") $SHOWNhwid = StringReplace($SHOWNhwid, "Y", "9") $SHOWNhwid = StringReplace($SHOWNhwid, "Z", "X") $SHOWNhwid = StringReplace($SHOWNhwid, "1", "8") $SHOWNhwid = StringReplace($SHOWNhwid, "2", "G") $SHOWNhwid = StringReplace($SHOWNhwid, "3", "W") $SHOWNhwid = StringReplace($SHOWNhwid, "4", "R") $SHOWNhwid = StringReplace($SHOWNhwid, "5", "0") $SHOWNhwid = StringReplace($SHOWNhwid, "6", "B") $SHOWNhwid = StringReplace($SHOWNhwid, "7", "F") $SHOWNhwid = StringReplace($SHOWNhwid, "8", "S") $SHOWNhwid = StringReplace($SHOWNhwid, "9", "6") $SHOWNhwid = StringReplace($SHOWNhwid, "0", "T") $SHOWNhwid = StringReplace($SHOWNhwid, "-", "-") EndFunc ;==>ConvertFakeHwidToShownHwid Func CheckForDebuggers() ; this func closes some known proxy debuggers ; Charles If WinExists("Charles") Then WinClose("Charles") If ProcessExists("Charles.exe") Then ProcessClose("Charles") ; Fiddler If WinExists("Fiddler") Then WinClose("Fiddler") If ProcessExists("Fiddler.exe") Then ProcessClose("Fiddler.exe") ; Wireshark If ProcessExists("Wireshark.exe") Then ProcessClose("Wireshark.exe") If WinExists("Wireshark") Then WinClose("Wireshark") ; OllyDbg If WinExists("OllyDbg") Then WinClose("OllyDbg") If ProcessExists("OLLYDBG.EXE") Then ProcessClose("OLLYDBG.EXE") ; just expectation If WinExists("Developer") Then WinClose("Developer") If WinExists("debug") Then WinClose("debug") If WinExists("debugger") Then WinClose("debugger") If WinExists("debuger") Then WinClose("debuger") EndFunc ;==>CheckForDebuggers .. and here is the tool that modifies the ( shown hwid ) back to ( fake hwid ) ,which will be put on the online list warning !!!! : YOU Mustn't Give This Tool To the user ... it is only for you ..if you give it to the user , he/she will be able to put his (fake hwid) on the list expandcollapse popup#NoTrayIcon AutoItSetOption("trayiconhide", 1) Global $fakehwid, $num, $num1 $num = "" $num1 = "" #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <EditConstants.au3> MouseMove(MouseGetPos(0), MouseGetPos(1), 1) #Region ### START Koda GUI section ### Form= $form = GUICreate(" Convert $SHOWNhwid to $FAKEhwid", 490, 99, -1, -1) $inputhwid = GUICtrlCreateInput("", 8, 8, 473, 32, BitOR($gui_ss_default_input, $es_center, $es_readonly)) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") $paste = GUICtrlCreateButton("Paste", 336, 48, 137, 41) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") $convert = GUICtrlCreateButton("Convert", 176, 48, 137, 41) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") $copy = GUICtrlCreateButton("Copy", 16, 48, 137, 41) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nmsg = GUIGetMsg() Switch $nmsg Case $gui_event_close Exit Case $paste GUICtrlSetData($inputhwid, ClipGet()) Case $convert convertshownhwidtofakehwid() GUICtrlSetData($inputhwid, $fakehwid) Case $copy ClipPut(GUICtrlRead($inputhwid)) EndSwitch WEnd Func convertshownhwidtofakehwid() $fakehwid = GUICtrlRead($inputhwid) Do $num = $num + 1 $fakehwid = StringReplace($fakehwid, "A", "Z") $fakehwid = StringReplace($fakehwid, "B", "1") $fakehwid = StringReplace($fakehwid, "C", "M") $fakehwid = StringReplace($fakehwid, "D", "C") $fakehwid = StringReplace($fakehwid, "E", "D") $fakehwid = StringReplace($fakehwid, "F", "H") $fakehwid = StringReplace($fakehwid, "G", "I") $fakehwid = StringReplace($fakehwid, "H", "L") $fakehwid = StringReplace($fakehwid, "I", "O") $fakehwid = StringReplace($fakehwid, "J", "V") $fakehwid = StringReplace($fakehwid, "K", "E") $fakehwid = StringReplace($fakehwid, "L", "Y") $fakehwid = StringReplace($fakehwid, "M", "U") $fakehwid = StringReplace($fakehwid, "N", "A") $fakehwid = StringReplace($fakehwid, "O", "7") $fakehwid = StringReplace($fakehwid, "P", "2") $fakehwid = StringReplace($fakehwid, "Q", "3") $fakehwid = StringReplace($fakehwid, "R", "4") $fakehwid = StringReplace($fakehwid, "S", "5") $fakehwid = StringReplace($fakehwid, "T", "P") $fakehwid = StringReplace($fakehwid, "U", "Q") $fakehwid = StringReplace($fakehwid, "V", "J") $fakehwid = StringReplace($fakehwid, "W", "K") $fakehwid = StringReplace($fakehwid, "X", "N") $fakehwid = StringReplace($fakehwid, "Y", "9") $fakehwid = StringReplace($fakehwid, "Z", "X") $fakehwid = StringReplace($fakehwid, "1", "8") $fakehwid = StringReplace($fakehwid, "2", "G") $fakehwid = StringReplace($fakehwid, "3", "W") $fakehwid = StringReplace($fakehwid, "4", "R") $fakehwid = StringReplace($fakehwid, "5", "0") $fakehwid = StringReplace($fakehwid, "6", "B") $fakehwid = StringReplace($fakehwid, "7", "F") $fakehwid = StringReplace($fakehwid, "8", "S") $fakehwid = StringReplace($fakehwid, "9", "6") $fakehwid = StringReplace($fakehwid, "0", "T") $fakehwid = StringReplace($fakehwid, "-", "-") Until $num = 209 $num = 0 EndFunc The online list of HWiDs must be written like this : {start} {(Fake HWiD 1)} {(Fake HWiD 2)} {(Fake HWiD 3)} {(...etc)} {finish} if you like it . give me a "like" 🙏 sorry for bad English Edited October 31, 2018 by ibrahem ImStUPid and Skeletor 2 Link to comment Share on other sites More sharing options...
Bert Posted November 1, 2018 Share Posted November 1, 2018 never say "unhackable". I can think of several ways this concept can be defeated. You posted the script here so a user can get it memory reading google - researching on how to get around the problem Good idea on how to stop most of them though. ibrahem 1 The Vollatran project My blog: http://www.vollysinterestingshit.com/ Link to comment Share on other sites More sharing options...
ibrahem Posted November 1, 2018 Author Share Posted November 1, 2018 2 hours ago, Bert said: never say "unhackable". I can think of several ways this concept can be defeated. You posted the script here so a user can get it memory reading google - researching on how to get around the problem Good idea on how to stop most of them though. You also con change the way to modify hwid by StringReplace("","") For example : 19 hours ago, ibrahem said: $FAKEhwid = StringReplace($FAKEhwid, "A", "Z") You can replace "A" with "B" instead of "Z" ,but you should rewrite the script so that when you modify the (shown hwid) back to (fake hwid), the (shown hwid) doesn't become another (fake hwid) (( not the first one)) ... Also,you should not replace two different strings with the same string Link to comment Share on other sites More sharing options...
Arlen Posted November 6, 2018 Share Posted November 6, 2018 Or you can hash the HWID and not store it as plain text. So even if he gets the HWID list, it hashed. You can google on "how to hash password the right way" and apply the same concept to this. ibrahem 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now