File/Bytepatcher (suchen und ersetzen mit Patternmaske)

  • [Update 1.1a]
    die dll wurde per array in das script includiert.

    [Initial 1.0.a]
    So, nach anfänglichen Schwierigkeiten hier meine c++ dll als udf für Autoit.
    Mit Beispiel (Alles auch im rar - Archiv):

    Wozu das Ganze?:
    Wenn man eine Datei hat in der man einen/mehrere Bytestring/s sucht, der im String
    unbekannte oder sich ändernde Bytes enthält, dann kann dieser hiermit gesucht und ganz oder teilweise (auch mit einer Patternmaske) ersetzt werden. Das Ganze funktioniert auf Dateiebene mit jeglicher Art von Binärendateien;
    sowohl die Dateien, als auch die Suchstrings können dabei so groß sein, wie es der Buffer hergibt.
    Es funktioniert auch mit mehreren/verschiedenen Bytestrings beliebig oft hintereinander.

    Wir suchen z.B. "3BC3EB9529000000A1" wobei hier in hex umgewandelt wird.
    Die Maske ist z.B. "xxx?????x" d.h. die ersten 3 bytes und das letzte Byte des Strings müssen gefunden werden!
    ... tun sie das, wird nach gleichem Prinzip ersetzt ... alles was "x" beim Ersetzen ist, wird vom "replacestring" an die Stelle geschrieben, wo "searchstring" gefunden wurde!

    Vorteile: Wahnsinnige Geschwindigkeit... selbst bei großen Dateien... ...dank Dll (= neuer Thread) arbeitet es parallel zum autoit script. wer möchte, darf gerne mal Speedtests machen (würde mich freuen / z.B. im vergleich zu Autoit)


    Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <search_and_replace.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Suchen & ersetzen...", 250, 100, -1, -1)
    $Button1 = GUICtrlCreateButton("Search and Replace", 25, 50, 200, 25, $WS_GROUP)
    GUICtrlCreateLabel("Beispiel!", 100, 20)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    ; Example how so search and replace bytes unknown bytes
    ; in searchbytes and in replacebytes
    ; Note: This does not increase the filesize! It will replace
    ; the bytes at where the searchmask was found!
    ; pls give credit if you use my dll!
    ; Greetings - WhiteLion

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _Patch()
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Patch()
    MsgBox (0, "!!!", "Before continue, test -> PatchMe.exe")
    MsgBox (0,"_Fileread", "Filesize in bytes: "&_FileRead("PatchMe.exe"))
    MsgBox (0,"_FilePatch", "Count of replacements: "&_FilePatch("3BC30F8494000000a1", "xx??????x", "3BC3E99500000090a1", "??xxx??x?"))
    MsgBox (0, "_FileWrite", "Writing file went well: "&_FileWrite("Done.exe"))
    MsgBox (0, "Finished", "Now test -> Done.exe")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    udf:

    Spoiler anzeigen
    [autoit]

    #include-once
    #region Search_And_Replace

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $sPath = @TempDir & "\", $bData[3] = [1]
    ; String mit den Binärdaten von: sar.dll
    $bData[1] &= "0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000000100000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A240000000000000095C01DD1D1A17382D1A17382D1A1738242EFEB82D0A17382CA3CED82D2A17382CA3CD982DFA17382CA3CEF82D4A17382CA3CD882D7A17382D8D9E082D3A17382D1A172825BA17382CA3CDC82D2A17382CA3CE882D0A17382CA3CEE82D0A1738252696368D1A17382000000000000000000000000000000000000000000000000504500004C01030097C87A4F0000000000000000E00002210B010A00004000000010000000B00000D0EE000000C00000000001000000001000100000000200000500010000000000050001000000000000100100001000000000000002004001000010000010000000001000001000000000000010000000BC02010080000000B80101000401000000000100B8010000000000000000000000000000000000003C0301001800000000000000000000000000000000000000000000000000000000000000000000009CF000004800000000000000000000000000000000000000000000000000000000000000000000000000000000000000555058300000000000B00000001000000000000000040000000000000000000000000000800000E055505831000000000040000000C000000032000000040000000000000000000000000000400000E02E7273726300000000100000000001000004000000360000000000000000000000000000400000C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000332E303800555058210D090209D23FA2B0251D2E4F56C30000CE2E0000007A00002604001AFB776FFFC701000053F4FF25055188CC00558BEC568BF1C70615FFB1FF1915F6450801740A560C0483C4048BC65E5DFFE56DF6C20400CC002CF057B9520083FE0472168BBBD6B6FFFF8B023B01751283EE29C102261573ECF9B7DFFE85F674440FB60202392BC77531120176350FB6420134CD4B77790110200276240202FF4BF3D20F0376130349032BC1C1F81F5F83FD0BDBFEC8015EC35F33C004CC008B0885C97414B36FDFFE9C50BC85C0A78B108BC8836A01FFD0296DFFBF75CF8BC08B481481E1FFF9FFFF81C900082A89F6ED6FB60E5D1E1F6AFF6812417B64A105FE77BBBB4581ECD40653560D801833C5508D45F464A3FBEEEDF61908085086FF33DBEE85A8C745FC14DDDD7EE1E80818EC8D8D3859FF510B0B4CC6EEB7DFBE1701837D1C854D0873038D046A218DB5501DFEDF6F771C1A4C6A38C0751A8B952E8B4A046A028D8C0D2C633FF60BBE9CEB188B85194800B7FBDB816473395DA40F858D708B0D1085DDDD6FB48B16F051B75204525A1FCC9815C68E6DE4C82D988B8E8BACAFDDDEBFB1A88945F0C784150F195444A88AC63EDB75A202330D8C0E885DFC377882FB1BDBADA808A0BF720D8BEFF47F179A4BF8D108890DF4595E5BB1D9EDC68BE5031C00C05353FC38DB809D85800820127CCC086BEFC3DF030836862C412132C6BB0C533C27FBAEA30728881C02A1D1F45034EC26193336DA385008221CEFC28EECEC5381A15BE181DD0E2359535088848D75B0D8EC17510D0C719477094732424A4890527285F04E8B35345803564269144D57830C19935B9F2C51DBF153C656579A8B018D7170368975947BCB187B443190914EA2910E6CF6EC100C928BCE917CE42135075F5EC30F4203B52E9899DC72F5537FEE840C2113C475D40718BED3F60AAC8BF8090814157C12BE7D773B41F9BF1028397DE8720981D451FFD6780F131E0915958F52589F8491FC025451F98D5508522C3C7EE68D85181A0C0CD6A718F1DE2C9CF69B24060F8494BDC821239361F05C9CCB42B20053F588D07221933418303083D9261788E61CF42CE376D2D649E92D05F97ECB0E5976AA5152288CD5B60C331AAACB211B18926EB74DF788468955890DCC100099043789B709A1404DFD5B0DF03393B18CA7CDA2E4857F3F18607C906083EC2C5382F8C2D61A645DADD6F223E0895DEC6FB71EEB0B01163C3BC6B9E7020B3BC374AE7D9BE50885DBDB8B1DD556246EDB1C2ED606801690593CDC0D3658DBB63CFE8B3C100C30C84533F0DFE32CBE30F74DCC3975405A123C67A55BC83C520E2E45506B765B9B3A19DC4E5152D41F8C754B06204E1049C8E624CBB32410207DECB6ADC1B05792DD2CE09656B2DBC59659D01E1B"
    $bData[1] &= "833DBB2C006CA6DDDFE4F70F86BBE7F7DE7A78DC7360FE1BB4110FB6032BC2740CB3EDDB9A78737F01753C33D2042808CC5FFF17FE7FD48BCBF7D903F18BC303F98D49453C303F75058A08880C38139BDCED42403BD172EE2D138BD3500B1942E215904F47902339923827162D482F969ABF74CB77934BA652187FE0510B538C51090C3248090C9415A5132F1CFFBE817DE0FC6618180A87979E3B0FA5E10B85C27D643156EC2BFB2B1AFAFFD67855D88D6CE80778756E8A0E88080FBE16A123E98B45E4716AA474B183C1616AFCEE55F03147C9EFEC5103D63451A0A85046FB6D86FBFF4DD87583DD6FAFF003D840890E6099FE703B05C20F824AFE518F7361F274241E10E0240F522B9D05E7205B21C848DA26CF402C08E83FBF8544533540A0A752B872CC1A9252988FA77EF0FDCE9253CD0C56052888534061A96C4A50105BDB4CC420CF0063E08363837D5F11F00F54155707684832C2AD51492C52497C51D8E410060C0891072681333DE4BE5C202CCF752410D7547509B378EE891F6754C19690580FD515B77E6AF06D53758A85D8106EFC7356C9B5DE05BA13D289A66AD0EEDDED75160A391D12D40F95C00E076806BFFFFBB4EB0506C4895E10C7461487881EBD256250220DB38B25BE307A6E61837E14B27E6F496CD706B13AC2461025F14A452930AF13C82470022F087DBB81BFB50877B8F08D4F70C707C248C7474FE56E71AC54665060D37718D5183B0B2C5CCF47F0165C07EEE010540706C7040FF99118DB6ABA79EC1D540018DBFEA9CEBA5404885E5002491748616BDF462EA0F45489564C0531C761C9236B2BFDBF40ADD8730B6CBE9909C0B0688E16C0C10F99EC5558C532C0C746EE2C2464467754CBF889196C094479FA0383785463A366A8FF9322849B7A9B8A6C6A1050646703CFF2856C5262FBFA08CB2F0C4BFFAE8B750883C6DB66BBB5F0578BFE393675BCFFEB55DE9CD1B6E51B4C84020E8B841010080FE7CA76124575893F874C0D4E3BFB751323C3A46BEA10F75390C87F905742077DEF4049844357F25356F1E920FDFFDD4744FCA4741E8B4E108D5648391175148B563CFDED6DABA0E711112089010C302BC08902381216ECBB9A74382716C8C203A316CABC1C3C1F4823A3B0B1008B4154C21E8C0C0FE0A859C30F964C1665784FA87D17218C5CA88BD983FAFFC037542ABCCB3210B88B4324FB4BBC3DEE2008348B30423BCE7315FF0815C7B66F14FF01893088F1C228837B5178A2835492DA7A43704AFC1BBE8A4B483BC11643408B533C50505280DA8DE6C6C74C60294375221903671B140B95C2A49C548A15CE7683F8FF3F9AB251D38CAF3BCE8855D3251CD501FA06855BE81CD4900B5CF083FF10FD022DD780224052CC5203CE512BB4A3D6C4C803D98B4B9B37174EBA50DD434C18700C0F88925DA2B9395861818FDE47BD0BF735B3430332232BF17427CE5EA09B0E184BB5566A019A0C5DB2255E103BF0B9F8375CC65B0BB3FD4349013955C815CA1A07698625EE0CA79683F920F9CE477BBA44F983CAFF2BD17786B5AF71DD806BEF7EFEFE0F87A90B3BFE73475D6567D7DCFBC01E0C52CE0E45842605FEC2B3D08655D481890411894411007C6CC36D2310217FE49EC60430003DCCDD36200F353275D114B6C600B860789B16E603754D5E5D4DD395EB81D0CA5F740F432B75979E250B1C97EB320B83A60E830BC90E231A81EB16A41E0C1BE1BC40E017294B6A818CBE07CFD168C1469808D3F07DC1D4B137008B2D2881732683FBAA7D61A18313B6593BD375191CFD17BE5031527620FF0EAA01F7D81BC05E23C3C1D79922992633392C3464ECB6A30B2C135033C350C974C6B79BDA12688D4648547411881803E4CE5ABB831D3C5B3F5EA7D347B081E288C6129A05ADF15B8B04C103D03BC23E55BC00DFA0E1678B501C579CD28BF89E9C7D2B4A59055F0BC01510C75F41480B21014F2FB561A99C470233F69174268BA9B56DB54F0A1B57800A8A1C2DBF696B7315C2497F208B078D50173497FEA18CBE1434397754470E0247C9C8F2F34F118B4757CFCB48B7B72544751E3C54573F640454643323D648C0DB363A8EE9127921C61C0006FC44347D0F567E648BD830FB703C2EDFD88843C9AFC883F901350136FE8D6C7001291C55E83BD6D4BC5C9BBCF1E7B655D4521535A486A9A6142737E746F6DECAF8881C01AA5D2D1E4E2A44E0BB1046FAB7CEFA14E95DC85250ACC3F0567C066959BB4F47B774F300182D398E7E5DD566E5F1CD14B9FBE401727064395DE8A90561DA31A4D3AF5E7DD3B33B4F1196E60CA4519CBABDA417B13212EABCD339D23573B79A7547A5551345245C78F6C133C94619CC7D54523B0F73D422D4CA66EB5F6ED60A482F4F461C531B4AAD2B5A8D287E1D0FBEA9B58DBE8BE8E39A4416FF4E5120BD5BD7B1A9081C7FE9B49873DE0837153E0D4DD451474289A47B0F83A5D6D28DE4CBEC0C85D9CB26DBC2A5C643489228751A3914051483B635027E0E080CA58680734B7CC7FF83D668060A106C41C29DC2915F760C848185DF3FB2D70BD675063C741715141D260C67AD504F986C68F39D50EAAE616D8D5424C482700967B6EDD4154B7B10791D11799E6553434B53C5F6B63D994C338B371489480A4BC7E242AF5BD9E340046B500C7732486D1510E114F832B917B6B74349045F1A049A5E89103817B260AF022826FFAD76A9E10B580C064D9CD257E32BB5DCB6314472894C3999EA13760E649081C7608DED1B276BAA0BCF7415B654635C960FEC575652F8508B4B445051F585C2813AE4C4C389534C"
    $bData[1] &= "CCB550F6950CE7BBEAE7CE5E2B15A0A42EEC317B5B73C7E9305EEC22E7502826F535B206CC8FE24E614387AB0CE16108CB85D2E3FA9628B5C70BECC9B868EBC65AB5162EC0977ABD5C42ADDB4F498B7E54DBC6467DEFD94A0B4C857218806C46DF6EAD547208787E2002248946306D2D582C34A033944E413B281908980C00BC4D02CF25076F8325007424E883A50F440C6A24D27B1601C79149C0687905D25970027B505FCF4D080CD6165D122432F8F4B874A2602FA6740D5F79108A9D3570C31FB95F10A4969C10CF41AC4E76C416AF8D59480B6243703BB21405B5C30278A86D502C2045C50DA2C8879887D74B700AA94946A253C3E29144B159CF4DD82065152C00ED4ADC1A17100873480F506A55B71F60047FBAE6561472410EEBBB810B57812B424104321A5E18AC0818097CC64008A0C3E003E616DC08055F3BF77462B76EAF1263837F227312AD1041EA6FC0D95157B17C6EEB0A8B178916A33962F07EA12921D83B396B754E148A3E47077978A153C2CF8B794BFB730BF616441E2ACCAC3BC773C063028EFFF83BF1751C8D0C1F126E174B04616CC9085F2199FED0B581C0760B62AD382761879BF01357125FBD65B8196EB75D1D4114970939247228E3EB260EDA6ADC1875E729EEF80AB96D988106F556065F0D30A2C0830A5703CB92726CB335C320322F0E0438308EB381050DDF57A1DCE442B646D8C1C19306070B858C8F5372ACFE6FCE9A1EDE0A16D62BC703D95003DF03D15362CDB9B3577C487C167E8DB72DDC0B5B726E0E7101A860B9C0E2B0CE09CC8F286AB5320653ED6D8E151BB888B2BB366A40ABE0DAB3B150D4A06E93FE8501B35E390CC40BD616AE0E8404113A58A7DB42EA30023450791AB0C566C07EE23216C8B4BB920A1AB50520EB0BDA10A480AD53B33BCBA2801C8C4A3BC30305E940A45F4E3EE42434B2148F401818082D99248E45B7BB3DFBEA5E011C7B4909547BB98AF5E003A4A0A61329AB1366348A77452173529905B8D5579BBA20D051B703CA6D506EFBD6936A5883E8F61B48741C070243879E786D4CEE46D432935B25CCD51CE0384D7D55943C2037D02BF2535452C1EA2CC997B89377805C5693686E9FE7AC16C8936B2E28AB93000155E46E424B49731BADCE162BC0C35A6FE11A0BB001480B8B840CAAC5D9E20C08BF502748DAB76E700A7522484029703C893212CAE0E52D280A8B40C989081FA996DB5C2F25323234D097966A6D892E315236847820E18DB9ED03375F0E40383DD03F1557D26B71C24927422F3E7825419008ED7508B4056341FBA8DC82081B0C19A388BBC8DC08BADAC0519D3838AD094B02C731B94208B8A91358A919A0C529E060328EA4C3BF80BF1886123DC0B1896519C21235DC8008FDCE0FE2762B376EBFC0EB035F14B8ABAA00F7E6C3D1E9F7DF72FFD1EA3BCA7613B8FEA1828D34193BD87605BE0DDAADC185DF8D4E23BB3BC81E3A23F1A5E9FF7713518C14DB76E376A159EB4D09EC5103DCFAECEDADEE215184985B0455DC5215E0363880DCA1C73D04873DAB36B77F019036E8DB1F7CC5C6F7D642B8211EE1C3A275685D6EBA1EBC64DB741A46EE07C75350B4BD25E0386219CF0FE01DB865E41D3989078977373AA2DD525F10E15DF8801F000C0E57125B0CA3C50B83931C16526A00C70BA9D8836AC9B21FE4A1A1C2EC100F2D3C090E5916B60F75298DCF5004F0FCC792E5234DF051F0CCC8240F04BF3EFA241004D746B3E35F2CF42DDA41EB038F8A104084AEF9783B6428AE4C32584C3224170E6FDF2D322033FFA27C1F7F9FC7CF7C37E0F6F6157F053B21760E2B041BCF59D889BAD11DF17DDCEB078DDC8BFB5F32380B8E428531F76034CAA10BD67245CFC253401BE46EAA707C3032E644303C4E59A33018C2883B8A1BF759D1FA0F94C188082884C975A5778723B5E5E4213CE33A1425C0BA1BFC1047407437D77C2D99DBDFA244030122798A4C3040766B05683EE9020938525CB5073E306C4F85AC774D4A80466E17A9752E8BCE9ED476FB3D0C283138E1576C50685CD4BAE0DA1C3BD799CCDB5A63C17B9D33035220034D3517AC249C701E1C6AD214296E3503CED3AC044246DA487ED0AFCFAE1A6EEE174B733838F60746FC53C648ABC658C383C3FF83D7FF5B74A9335AF82041642483DCEC6DAAEE0F8C71427F4C84674CF3F41EDE837509EF37264C157F4FBD3AFFEBBCD608B3016A04E68DC18288CEB8192215C3490E8C08694FBA86DB25921C8D581090038D607485238A205F0B688D37C37C1CA2EE16894D2B86738D2D966A7659CB380ADEB3835660E8AD2613228B63591D85DA3CD89D3C238C3764D0E93C09E4321E583CDC0E0D4DC9237B351427DB5B40063236B40DB9DF0C8A41747094518C433E4E253F53C33E2BE305E4849F3E68D0466B557B3B5115F90019C23ED8078B488686A3A4394F5AE956C345849BFE8DA42487553EE843D9DE8EF1546E8855FA2B63EBB10C84C83623654FEBCBE410C60CB8302446C8C922C35D3F3E7906DA007214F9F4E0C02E08634AE4DD24859CFFC70C7D6FD02AF0C48BF08B073B700C7323A2F0762B820CB1EF751D80777CF91BDBD7171ED81A128B5034B2EB065B17A52E5CEBE3DA19528EF0C9A7B875064B6DF057A950CC8DC0F6C41CEFE478E049940A4CA0D90D5B6851425280B1EED03E4085F936C04000573E074CAB7A60022161E86D7D62AC9DAC6F56504962800396540449A20F470D24073FEEBEAD0CC046014C51B85DA8D3AE89EC0511BC0F68E668F7EDD5B88805A89D2BBCE4256492B12F33C427D8D4C90C4164C4842877"
    $bData[1] &= "91B1B1F01EE005E42343938564E421BFEC4086048600F024630F3902860C28203B0093DF1C91860C6D0565B4F71D2CC6263078AEA046005C610FFD7B3DCF58F4FE4E720FA1459804BE63037B6362351D682F046C49BC8D72950D9FB529A6F90D6C04BB2985D81506424BC8C4521726B14B8EFC8385BC85A85F29024207C2BC5E795B2FAA190EA4E1FCFCD2A57A1B174EC8572FF4BAE39770B7E8885DE09F8D9B0D5F1141848D1ACD3AD3CE62A0E02E15D8DE40518BCC8959A0C6445230566DB6419819575657BD2A97D3FC7B4BD214DBF421F088E00C141B1960FCFED05BEC3262807C7F7CA2CB0036E2C47378A251860AB5F4AFDE1C946A35C2F292039FD0FDDF0111545852897C2424895C242C302833801102E76C0A7BB28057365464512D918058406CFBC200C61AF66774438F9562B6A50231515152D85A21238400B8DF2E4B713B567470880360898C24AE6B9AB38012504C3C075C0F2EDE6C862C6E1128188D7801F65BA842CD3AD1C7E2C474136C233C42998BCE51858D246426680D22895F37860FDB656C9418488B4C0CF1C70BA61B73547F5C565CF38B90930D84FFEF56C6502EC125E4408BDB8DBA48B7DB14601D2C8C083C68100066E43E2CF46B58FB61DCDDC989646D1E8D515F194184DB6F0BD966A5CA6B333059A40B468C37443105F7034F942494A1B424B80674F7968B747E7C93A1BC24A015481F80338ED669061CC0D2E6B68D9B392850C4703CBF86090D03C01550957E0163AC731B2574EA60C64BFE300BA584CA5B33CC9A7A05495F040C6D260F3A249D6361B001DE213DD892FC2555E05287B194B4298532C087BF6BADC2922010F006B2606EC365457848605498A6CA5D4473B3AD5D4B25E0CCC0B12480B8394B5FD51D2D8DBCD8F74B8B4EDBDA7CB531F9DA06C63BEE390EBE37EA018B561063D3762513109A052C5D2BD8EEC7F318B1B0D6C81F0FDDAAA1251319314C936523C6ED20CF1EF2D073AF9D0950540806161932C212C50A268A80356C09AF5428405BC9DB0215E8F6DDBB0B9906DCF55598DC0D0590D9C0D9EE03569BF5FFDDEADFE0DDD9F6C4447A30240CCCA6AC8F755121E452DDD81AC0353CF10C70D9C1EA0C88DB356BD7BE02D8EADAE949477B15C86CFF0B97C65577EBB9D97DFE0FB745FE130CDD805F7066A2D96DF4DF7DF5F0500C3308B709FE414D9E4B8D9A033C98D864F1018583015DD9E8985AE8E1806D8B5783DA7C3937C460A54D8525FB7905486B40E31B89FE407507691D2AD517FE46430FBE0B83C1D0AB360F87D35D2DB43D42890430E1248B2F89770BC4C43CB8AD158A16DCC14F76F3FDBFC0E204881643EB95FE068A0E1A92C0E1041BCEBEA1EE880E1D43942D588006021C750239994003589309E464043B05404E26901E060172803C9907E40008C8C90472C709AA4C2027130A8D0B92912BFB7574180C5B912B19B90D420E2319B992290F10386B6E53C201460D140FA11F88C6C0B4ACAD554081FCC18551E90B51E35568526DEC5EABE708382CD37CFCD85AE8B6365E3189470C4FD5C19AEE16C5D32B2DB003C7E3344DD35C2E001D3A5774B9344DD391AECBE82F01E16F9AA61A334C750001020304059829E43F7B080910000A0B0C0D0E0F10432603661F1F4A8213AC901471AA512C606BC1FE2547E5ACDE9FE03BCBC204C98E007F00E1395C300CE03BC34DFEFF40500403D6395A0C0F94C08845E46FDB65532E0A014A2444204D7F0B7C650A168005A477B41FA0896FC4E8011BCBD2D9F652140013E0CF81E2FA4074490F067C038CD2BD19DB7C347F040D095C70C92EE81E50574D800907D0AF2F98055BD363BE4542BA2E1860266A605C5CF30B01465678E88B4DE8220186B05EC07B4230607331C2EB074E4F850D78865961588946230CD8BA200324CE535F203990015C3BCB0D216AC14076F1B175CDA29FC51215FF11088546CADDB6335E5919A08287A95A55A2085E3CFABB5D6BAFA3103FCEBF3DD92937B40B3CD2010CF08365FC051788B5A800F701299B787F1F663656500C59A110A9E0839E7D87B54DAB32E842E7795DE932B623FA78CCCF50A405A823BB7F3CAC3B0D917502F3C32137FB51919191B19805908C802FB554B1044B1F0213F9742515B73714993CF08D7772366A11ECA97E1A395F3B0795839CEC76B6EB14163CEC57C7DB3D66805FF451146A14445A803CC2517CF5DCFFA34878F6D0289618D68FF70C0278848FC408EF2859EB644039CE59CE586C760C2D270A44CC6D6A2D3D025CE450354800995F65402B39C8C9F66EAD44162CD6A33809E0A8F44CC344DFFE9C679BF0EC07673A21C369C2593E4D7B33059F1E64010359485D166D63A79AFD419A2CD3F0108BB5537D6E5B56778B0B4B6905D4405E3826005391EE9BDD66E83A903405C704240B5EA1AD9989598264E35305AD7FB1F43945E432D282687E233C3BF6FEBE18640D0D8B5804F7D610BF62E907B1A13CB2359004366DB07F8DE5720C01B301645A348B5904756C81662AF2502EEB118B42CDDE371768E803B651CCCE534761570437E7290C6147BC0367386A025E666A1FBC7DC0B7FB14EB39B951CC04C0DD381936C7EF281A0E59CA747A3DF580DFF71DBC04B01808596F013FB7DDCE59395DCE0866700839CFA677CB7F641C68060B3B4C0D62DD840B5E1056E616FFFA916422FBD36AAEFC466CB0B6260243AC59384986E176470CA684832F2954380A2D84E90F8FF06FBF220883EB043BA3724E833B0074F3CE343903C2B3AFD474E90438F8108903A0B7371BC6F870431B464DF85AFB42E1394D10E7B30874B7"
    $bData[1] &= "890902D9EF71EB54085CEBAAB83A305941DC29468C121CE8B4720459D832FC175027C8D325EA3DC9306A100FA0E178BBA0358B5D1CE38B3E944A22DB55802020B61663A1F13239154417E4EE0DE89FBB663BF07405E3752EA170A9B551EBF43BC17D9753A3477DB819F57DE48F11756AF19DECC1141280123C2027FE0C67372CA4245F205750135772DA6B88C52F52AA061153ED86FD35DB6A0375434F3403216187359868272C257FB42D38E8EB1B0C1709AAE06B6C3A164F1A595965E8CF2FB2BCA447D382377FE44907DA636BEC7A1F70FA0A8FE16A3D44DD5C74E7A06D5C0D3674596928D1E1B3B91850649EB7F126DA0D7C2B64037389288BE81104B6217738FCCE30B0802481133BC76727C3517081EC287B248378B9B979731F0574891570891D6C89359AEDBBB968893D64668C1890060D84B334DB57206014055C25AC3D374B582D549C8F88E356EECF9F6D7C0704808D45088C8B85E09C8176367EF882C8DE011CEDC6D876EC7C137009EEC00974FCB77CEE6ED48985D8320A1CDCDA0F0DBE8F512434C07B2DE03DF674D2596A40209FF80A1C833DD83BACF020004723685B1B9CC06385430614C9C39CC8830B11887273783AB06C159AA32BE605221AED40076130D8E03F00F4A8FFD27D8B813863736DE0740B892518BE1D10DCC360E6EDE526DFC685DDC210EA0C5DE82CDD15380804C60FAF9401C50E0F2B0D6D0B29E96AD8CBDE42ECE4F54539AA4AC0B5F063777511DC1449C6C6F8CD321E01C3131C05200F040146244F8C396CBB20182B3F896C038D1DED10DA2BE0A5316730890AE6686BB64DF85F76814CB261F639F0F0E0DD0D6C896932E86851EF03B0EC873CF2185E85940EC0DBF083F86056B80744BE0403D4E25BA63BC6730F6B3CEDAD16253BEC9BFE72F15B4821CF61254C4CF2ED2D017F869F08B84D5A410B0AC56682722F3416DEB5413C03C1A1507E2EEF33D213BCD1EFB90B011C481839C28BC23B3747B5B03F2131C80F0AC4CDD1B741BC057106A077104D97590818FF1B9D480C3BF6FFDF80F9DD580803D93BFB720A4283C0283BD672E86AD0217B860D4E4F6AFEC882267459087B06868CD4C270F819F08925E03D300940F042AF1B0118BC0754972D136F9865B25019FC089C4024C1858270E1E81FF712E001B0A089ED3592F08BC88163AC2D63ECC0F9C39CBA30236363AC3938053C40F97459234495124E51F4CBC0C16009C65028B596AD98ABDE23C9E1EE42F01D9CF8C6BF4EE640BBE8B6C106B7703BC7BB85E709B3A42DE0D3A3C3EB6508F88162D246E93C118275B05606195B4AF007343027BAB5DBC9F02CD1F4330C113BF7EDA7779726BE4F59EB1085F34D0D11471F7DEC31F8C1E0100BF03918F7D6071C5E5F5B91B11328DD3148054C91919191505458A00B3C5085A4BFDD34DC2D8BBF4063CE083BDD1C24F20F2CC9D6B7C35A481B111804D93C24EBCBD8B7857D7F03F87F74D32C20F04BB7A205A01BDF7C64DF1B4EAE302774B13CDE54BBBFFDE985D2791ED94C8B0C2481F1009D81C136DA44DCC683D0008E83D2F52C2D2767C11D17D8DA147AADF8FB08F7C21575B8D95903D00E44E8B50A156195EE3C35A38686142533A7477CE1088D421B4AEC33C834564009E3895840AEAFF292C97EE01DEC2EF85BB847314753CC772F7F097BBB88527CC31141D946F292DC5C289FEC52F2B221E0705C54904906D96FD8D8D8369201BBD440C43F854C32C8D0D0D00F2B79C9CC5D341F0080BC6492BCF45D6091CD113C752CE9750710960CC86437C4945BF292C91FD85E2047806C0B64D431FC9B356AC84CFA2F0719CB2E7B83C61C0A4845144CD9400E5E886FD0C1483281B46F80BC6492B0F05EE04355C835F0B391CEB16337F065F0FEBA83C17042A0C30C9B4DB691187858EC14BED9E401B20D8C5F245FBCECB01554E8DF5F60036CF68083E95832E2305958C85F8CFF084BD8EE01310A039C424E037668008AFB51D04086B0257FECBA092164FCC787182B19904BD0D0CB4E099314ED604863013A007613256C1F50D53B17E41BC30B551F29267C28ECAEA1B97364093276000041952DA2032E2F6B1E4241303734203DBBA8B3BB4A56333316FFFF0C65657D094572726F723A2046696C65203676FBFF6E6F7420666F756E64202F2043076C641162183747B0FD6F70656E650D215D000053B7D7B5FF6561726368696E6720037C003C016E74FFFEEDB76847004F757470023A0020284D61793B777269747BB72D6F0570726F630264126361757311BBCDB95B15732007102661676865B365EEBF72256772616D29537F405DB7ECBD66A0B0B3322076675BFB7F6B07A066206D61736B206469666647587435171BB06F1973AE67460BF67FAD1938127265706C61636513D7DCEC3DD912737472D93ED0F6A66CF61B411A4D72286D217B033C0348183ED8EC25CC1340123B0F7507A10D3E007B6174A1666BAD3BB631745330787F67A43D2ACD62867665626B2B173AB0DF96CEE8E96F000C76616C6964A3427B5BF8706F7335691800626113703ABA27B41539596C04100704D35C6E4F58EC0317F00E5060B3596E5D701EE00B32E21111C066D76C5DDC03D61F1415031650736FD775231786569D1760492C008273B3170CED89A90DB5C3DE0B0CB60F6DFD1F4B369B122B0E0028432932B8C335FC303132205768F94CC58F54656B686CFCDF0C676F64732E636F6D202DB065728D8FC356304D65EB4F62757CDBB60B276976086314643721203B29C2213C602B4865781A69F0B1C0B6C67A2334211B6CB418ADE83E4067D1617B38"
    $bData[1] &= "CE70E02328DFA111EEC3E3465E212932EB28492A5CD7F0D36861247477659D309A66AE68DD65FF0746203F218321114E55ED6FC151A5C892687369676E3EF2AC877B57B10427E03F1B4E947CF041488018EFF014FFFF3715C7534453D51BCB8675035440A7D1A28834BA412BC816618F01D7005F3B3964D76356440154033E73B6AC5C1F00FF23407427F94E441D70814C138C5DC749F703230A9C9BD007C8BAA6696E035778F0D4B80F1C17C8DF426B811008E415D8C9615709F453C34E49F3802803105738B923A4E94E443F485C10B20D90001BD4B1950DD9945BA4AB5BC36487BD6405F3043F5874B2B9B2738080011B489C02B3612743500C139759CC34DD581C03B42C6B57E4B0B7B2B3573B022B9B85EC5837AB3748B3258C803B339098602F811C00C31BB840764C0C074C098C2FE4F6C2BB81C4B7590059100279D67403501C83818801D912F65938B73348796117C8C401007F8238A46986A48090D09C0DC910F28200B8C83E43D88033387F80394A9A66B9DC03D94D084E4A79BA34CDB269FA284F6080A86C9A65D3EE185049AD0251B2364DB32C7BAC035271B9B37FB6733DD022059319875A391BE4B09500A3FECC0713F662D90FD31FD0DB053B25378307A53763471C58F7023928035147D4E440B6911FAED8842574273BDB03EE8B5325831DB90C330A1B1C9EED8E7C32FE025B4003240013F800BC92C14E5C37382550F2423883785F5B941B212F793E005BB02B2319C1063007171F7B27EC0B3E42403931A17F0376F29DEC032B5C046F05DC135E36840D146F709B5C4C4206194AA0A803C80B19B22425A04218E4255C78B00B19420619E0E8F24B5EC90B21F45D10C90BE4C95CE85D203F2036E922795D583F27335B2427CF58028407BDB0912DCFC71F47B301E485D71EC3D81BECC9376113E88B04B802EBF29221E4F8A05E4474E7D950D0133FD83BE3EC4572F203704010670119CA06AC2B40729B8592D877078D01D94B9E70990340A25F0443E4C9C142D740ED40F9967191BC5F48412B6D4628D92B842B07011B649058636FAB644086B2B06FA0F406D966A1D707D8E02E699041EBF7136003988D8C244B084203000204E701411451F04D01FFFF2E3F4156747970655F696E666F404000B7B13F890BF619BF44FF00273F24626173DFFE52F169635F6F3165616D4044551163686172DB5680B65F0E61D20F4018649DB0376B4305343B5F49B6CB92BD376240481D1B69185FB9952DEB596538732336390B856FAB693B590A6C41E8773E0B945C663A627566825696CA3D3BFA83B0672B39776578636570800298033157FF0698D9435FEB1B616C6C6F008445B3631CE40002040203001159020FFFFFCB73785001497350726F636573736F724665617475AD51D1CA72650D991ACE5171FB4465636F640E6F69A629807E017A06ED6B656445789FB0DFDE5B6E676514536C6565701B436F6D70AD6D97B561422254196D425ACC2D7FB0656800014765744372641219D0DB9D556E2D646C5A8C6B630DA05976532C1C6D40DB0ABD44EE6741B75FB66672B5697361622B546835A0DB2F44644C6962728C7943A66BDB76DB6451752779500366EB6D504AACED665BAA75DA905469BC0F803D1B589E444964B27DDB1E2C14537973416D3C6D65417308C885D794650939456EF4C2A7596C85483F5F28697440B97F1112E849414558585A3DDF3F20BBE074673C50414430304041677D146628A543514245B1B7AE04EE3861E04032408B0BB355D83F3088396373ECEDC3E1686966052463760944444868B3AE759F48414148AF31060540697513214490516850CA0E84104D314067B6C210D8CB63102240C6DEA5C0379A58485F4E6E73A91016822B6E8992C9DA6F405F4A50424404436384C684014859EE85A4C19D8942058E33422AACB1D333C21FC245C831555F74656C140261C96C67FE34A3E1530F66708D48AE6DB90AFB3A656B4841314091BD620B6C48C50B42C683600808B2666C75FE582264B2456FC94264A7A013403440F632393F364130543B51B629493D5036073B756D09EF100D327E5566B3B72A08054D243968072C26759D81913016B1AC2113240D78D24D8C11C96D44676564643BB891616F77E179634728E40412DF31CE4C4C420665AA12593246201C97D30C74E30DDC4368776179256E6F19C1BA148976406D34C5B330AC6EA8585F6A056DCDA5579B6659673266D08FA3F550AE3013B333967A28583F3BB2CFF342696419493C4F7366788BB3544874555F26F009049A526953414950DAA784352D5693A65634058D03E4046D6432E7442DDE642C41627A1CDB104CA7755355B6FB663D1DB1F148BD8667356EC26665623AE8433331EB16ED565F4C11BE704069AAB0503BA8205B68770EA12D2C20607B580A6A9188012041C21DE6E51C587350EC92287C516B199748180E82A5E4314F91A6ECD10B5D665F72394F631B8471E666143355394B2FC8DC57395F42544F286B29D846463C1B42A7B729E817FC00927C510046FA46E7D833DC4158356D637079858B2C506BE066078111BEAD5B5E652732D2587A91DADA1F5F5F43787846652F4812F84E15DC723313A87A1C6482B95668DC6EAE400C135C6984C90F6DF95F040C63D499883D1265A764E4A86B4B67751A0E699CD5DE8075B06D0A5F266DA9ED6EB6945F457F707058AA74810D52ED0D4F76845F1852276E776F6BB6F2C3AA2644BFDB65DB9C6B6C2D742C0924226C96252BB4469635261EB3168C25397754E9D06B5BB5346A5A6DCE84640D03F6776E526E107353E71C0DB421"
    $bData[1] &= "FC76FFE809E14C9D0B0808678506B3BFE8227F4266116936341925E115622246234F08DDE1544B997476886CE042D23008A87342A1D60A9B1FAB042781900D1E3177688ED6C85C1E1CE1F709A90A526A85C9AE2C65761E50733C3A6C611B726638B872B86175F154EBC10D011A34601303DBFF8F2D00060610060D1A833E141A531A110C11BBFBCBFF1A1E091029130B0D080809230F05060F1507110806DDFBFF5D182D0F1F1F081B12202B19060A1A30202E1CF9FF5B6B2211063D1240BCCD0A07051108080A3506E6EEDEBD060809060C0F0F0C50400509075D00EDFF76FB0805070B54080B135E090B130C073B2B121D192ECBF6B717710C0C0631111F0A1C0E3D52FFFFFFDF62201B0F17431306182A100C0F73175D3EC538068C8D0F6B0F2FA63660FFFFFFFF1D061B36991658701B164C5C192244381C15102220090D368B274C0632069B06FFFFEDF6373E0E24982D1400430F7251D806800D1C0C5B126220050BEDFF7FFB2237423F1B061712A05D2D3D0D0F6E2B0C16128D57363C0AF0FFBFFD66250C1511197B091F290D0905140819290614101109090A7BAF6CAD20B1040E0008044B76F7AE0B0A22070710060807090511F66FB74202357033451826050A051A06F7B5FF5FB603097457C526297226281721790686EEEC855FB82C1325099007F0CA01250B32040086EDFF8742124E842738280C310D0C3824811037FDDBEDB9185C6C5C3E077B13150B16180A437BDB6EBF6005160C210E9E260920159618050C2350F8DB720717182E1320110B08288F39F9FEBF6F0D111D0D18532D482F1C3B06000708DDBA37770C09CA7F0C0510DB16C05E6277FF17BE060D1D4D05B3052105BF05121E14066730110C14D8BDD6B523892E290240EC1C9116B6FF5FE1162F42191641402E3820323C340D2D34217FFB6F1B381614090C191816350C231437F05E0F040C046C23DBFE24040804F0F401D808E916987B4BBEBD5C041019181004100E0BCD966D210604080A58B264EF1904120E0ADCB6DB0E6C0CA0081E201C0C14015A7307D905080C2021A40466ED65C9080F0C48090A5EB2B3F7270130080A0601DBFBEF07F0B01F283C1C1C383C000700C1A27F07A54C01050097C87A4F32F5ACD9FEE00002210B010A0C4432138E477C6FB2005F10090B02D19B10B4055C07DEEFC843D7C0D7ED1E40012AB33D5BF602070650810B7D10B47C666C7014A0B4CAE53680A7B003DC06D06158D715D6AD00A020403AFC15D61C60012F2E74657874EC0B56C25A90EB04237605EE2E20452E7264167BCD21DC42BAC1FB2227487748738B3556264B4C0690B56E53366A27C04F7372F300D27483EBA04F026E343757891BFA275C08B0F84D49D30A70421B6C7200001F69A6BE83C100000400000000000080FF0000807C2408010F85B901000060BE00C000108DBE0050FFFF57EB109090909090908A064688074701DB75078B1E83EEFC11DB72EDB80100000001DB75078B1E83EEFC11DB11C001DB73EF75098B1E83EEFC11DB73E431C983E803720DC1E0088A064683F0FF747489C501DB75078B1E83EEFC11DB11C901DB75078B1E83EEFC11DB11C975204101DB75078B1E83EEFC11DB11C901DB73EF75098B1E83EEFC11DB73E483C10281FD00F3FFFF83D1018D142F83FDFC760F8A02428807474975F7E963FFFFFF908B0283C204890783C70483E90477F101CFE94CFFFFFF5E89F7B9330100008A07472CE83C0177F7803F0475F28B078A5F0466C1E808C1C01086C429F880EBE801F0890783C70588D8E2D98DBE00B000008B0709C0743C8B5F048D8430B8F1000001F35083C708FF9608F20000958A074708C074DC89F95748F2AE55FF960CF2000009C07407890383C304EBE16131C0C20C0083C7048D5EFC31C08A074709C074223CEF771101C38B0386C4C1C01086C401F08903EBE2240FC1E010668B0783C702EBE28BAE10F200008DBE00F0FFFFBB0010000050546A045357FFD58D871F02000080207F8060287F585054505357FFD558618D4424806A0039C475FA83EC80E9F556FFFF00000048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018900010F06900101400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000010018000000180000800000000000000000040000000000010002000000300000800000000000000000040000000000010009040000480000005C0001005A010000E40400000000000058A000003C617373656D626C7920786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E763122206D616E696665737456657273696F6E3D22312E30223E0D0A20203C7472757374"
    $bData[1] &= "496E666F20786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E7633223E0D0A202020203C73656375726974793E0D0A2020202020203C72657175657374656450726976696C656765733E0D0A20202020202020203C726571756573746564457865637574696F6E4C6576656C206C6576656C3D226173496E766F6B6572222075694163636573733D2266616C7365223E3C2F726571756573746564457865637574696F6E4C6576656C3E0D0A2020202020203C2F72657175657374656450726976696C656765733E0D0A202020203C2F73656375726974793E0D0A20203C2F7472757374496E666F3E0D0A3C2F617373656D626C793E504100000000000000000000000030020100080201000000000000000000000000003D020100200201000000000000000000000000004A020100280201000000000000000000000000000000000000000000560201006402010074020100840201009202010000000000A002010000000000B4020100000000004B45524E454C33322E444C4C004D535643503130302E646C6C004D535643523130302E646C6C00004C6F61644C69627261727941000047657450726F634164647265737300005669727475616C50726F7465637400005669727475616C416C6C6F6300005669727475616C467265650000003F5F4241444F4646407374644040335F4A4200006672656500000000000097C87A4F000000000C030100010000000400000004000000E4020100F402010004030100E037000040370000A03A0000603B000018030100220301002B030100350301000000010002000300444C4C746573742E646C6C0046696C6550617463680046696C65526561640046696C655772697465006E666F0000000000E000000C000000DD3E000000F000000C000000D830DC3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; erstellt im TEMPDIR die Datei/-en aus allen vorhandenen $bData Variablen
    Global $bDatanames[1] = ["sar.dll"]
    For $i = 1 To $bData[0]
    Local $sFile = $sPath & $bDatanames[$i -1]
    Local $hFileOut = FileOpen($sFile, 2+8+16)
    FileWrite($hFileOut, Binary($bData[$i]))
    FileClose($hFileOut)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; registriert die Funktion "_DelBinaryTempFiles()", damit die temporär erstellten Dateien bei Beendigung wieder gelöscht werden
    OnAutoItExitRegister("_DelBinaryTempFiles")

    [/autoit] [autoit][/autoit] [autoit]

    Func _DelBinaryTempFiles()
    For $i = 1 To $bData[0]
    FileDelete($sPath & $bDatanames[$i -1])
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;==================================================================================
    ; Description: Search And Replace
    ; UDF Version: 1.1b
    ; DLL Version: 1.0a
    ; Author(s): WhiteLion
    ;==================================================================================
    Global $OpenSRdll = DllOpen(@TempDir & "\sar.dll")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;==================================================================================
    ; Function: _FileRead([$input path /] file )
    ; Description: Reads an existing file into memory
    ; Parameter(s): $input - The path / filename to open
    ; Return Value(s): On Success - Returns filesize in bytes
    ; On Failure - Returns -1 on error
    ; @Error - 0 = No error.
    ; 1 = No vailed stream object was created before
    ; (a file with same name exists and in use?)
    ; Author(s): WhiteLion
    ;==================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FileRead($input)

    Local $return = DllCall ($OpenSRdll, "int:cdecl", "FileRead", "str" , $input)

    If Not IsArray($return) Then
    SetError(1)
    Return -1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    if $return[0] > -1 Then
    SetError(0)
    Return $return[0]
    EndIf

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;==================================================================================
    ; Function: _FileWrite([$output path /] file )
    ; Description: Writes an opened file to a specified place
    ; Parameter(s): $output - The path / filename to save.
    ; (ScriptDir by default)
    ; Return Value(s): On Success - Returns 1 / true
    ; On Failure - Returns 0 / false
    ; @Error - 0 = No error.
    ; 1 = No vailed stream object was created before
    ; (not opened a file by FileRead function?)
    ; 2 = Stream could not be written to file.
    ; (maybe file is locked or in use?)
    ; Author(s): WhiteLion
    ;==================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FileWrite($output)

    [/autoit] [autoit][/autoit] [autoit]

    Local $return = DllCall ($OpenSRdll, "BOOL:cdecl", "FileWrite", "str" ,$output)

    If Not IsArray($return) Then
    SetError(2)
    Return False
    EndIf

    if $return[0] = False Then
    SetError(1)
    Return False
    Else
    SetError(0)
    Return True
    EndIf

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;=====================================================================================================
    ; Function: _FilePatch($searchstring, $searchmask, $replacestring, $replacemask)
    ; Description: Searches for a bytestring (mask) and replaces it with another bytestring (mask).
    ; Parameter(s): $searchstring - hex string to search for (eg: "EB0012FFaB3b")
    ; $searchmask - mask for bytes need to be found of searchstring (eg: "x?x??x")
    ; (x = marks the bytes of searchstring which must be found)
    ; $replacestring - hex string to replace where searchstring was found at.
    ; $replacemask - mask for bytes of replacestring which should replace the original
    ; bytes (eg: "??xx?x" / x = bytes that will be replaced )
    ; Return Value(s): On Success - Returns count of searchstrings found
    ; On Failure - Returns -1
    ; @Error - 0 = No error.
    ; 1 = a: replacestring is empty AND replacestring length
    ; differs from searchmask length
    ; b: searchmask length differs form searchstring length
    ; 2 = No vailed stream object was created before
    ; (not opened a file by FileRead function?)
    ; Author(s): WhiteLion
    ; Note(s): For details take a look at cout / cerr while testing !
    ;==================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FilePatch($searchstring, $searchmask, $replacestring, $replacemask)
    ; for germans:
    ; parameter 1: "$searchstring" in hex z.B: "Eb20FF2100"
    ; parameter 2: "$searchmask" z.B. "xx?x?" (x = muss gefunden werden, alles andere platzhalter, anzahl muss == sein mit replacestring)
    ; parameter 3: "$replacestring" in hex z.B: "7433dd2110"
    ; parameter 4: "$replacemask" z.B. "xxx?x" (x = muss gefunden werden, alles andere platzhalter, anzahl muss == sein mit suchstring)

    Local $return = DllCall ($OpenSRdll, "int:cdecl", "FilePatch", "str", $searchstring, "str", $replacestring, "str" , $replacemask, "BOOL", "true", "str", $searchmask)

    [/autoit] [autoit][/autoit] [autoit]

    If Not IsArray($return) Then
    SetError(2)
    Return -1
    EndIf

    if $return[0] = -1 Then
    SetError(1)
    Return -1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    if $return[0] > -1 Then
    SetError(0)
    Return $return[0]
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #endregion Search_And_Replace

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Hi WhiteLion,

    das ist echt ein tolles Teil und funktioniert auch super, einzig das Format der Masken stört mich, die Bytest Search / Replace sind ja immer 2stellig, die Masken nur 1 stellig, hier ist es sehr schwer das ganze leicht abzugleichen, ich habe nun die Maske auch 2stellig gemacht, dadurch steht diese genau unter den anderen Masken und man kann wunderschön sehen was ausgelassen und was ersetzt wird
    Beispiel:

    Code
    $Search1          = "0345EC8B55F43B42587402B3018B45F8"
    $Replace1         = "0345EC8B55F43B42589090B3008B45F8"
    $SearchMask1      = "xxxx??xxxx??xxxx??xxxxxxxxxxxx??"
    $ReplaceMask1     = "??????????????????xxxx??xx??????"


    dazu habe ich in search_and_replace.au3 den Code geändert


    Gruß
    MrOuzo