diff --git a/RevokeMsgPatcher.Assistant/Data/0.9/patch.json b/RevokeMsgPatcher.Assistant/Data/0.9/patch.json
new file mode 100644
index 0000000..a8015b9
--- /dev/null
+++ b/RevokeMsgPatcher.Assistant/Data/0.9/patch.json
@@ -0,0 +1 @@
+{"Apps":{"Wechat":{"Name":"Wechat","FileTargetInfos":{"WeChatWin.dll":{"Name":"WeChatWin.dll","RelativePath":"WeChatWin.dll","Memo":null}},"FileModifyInfos":{"WeChatWin.dll":[{"Name":"WeChatWin.dll","Version":"2.8.0.112","SHA1Before":"7497fc006f061799138aa33419280e41891a7981","SHA1After":"07e681be40af32738d59a9332fe966c83c05e455","Changes":[{"Position":2682233,"Content":[235]},{"Position":8289040,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.8.0.106","SHA1Before":"e772c81c8a1b79cac77b22dbe67b375fa340ba30","SHA1After":"bcbc491910f07cb995ef154a281450f2d052e90b","Changes":[{"Position":2658457,"Content":[235]},{"Position":8280416,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.8.0.88","SHA1Before":"b34c73e38cfec186890b58caac5fc9962377cd9b","SHA1After":"8c108e92de0b6b4d9e61ce38ab8dd339a27e505b","Changes":[{"Position":2655369,"Content":[235]},{"Position":8273280,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.8.0.82","SHA1Before":"c359cc1a391441d261753f2844f9156638df8631","SHA1After":"d1b4dee8f7f91e34d68501987fd0675b33fe85da","Changes":[{"Position":2645961,"Content":[235]},{"Position":8263344,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.2.78","SHA1Before":"26a5c5503f1e176676da5657c12812da8aaa0243","SHA1After":"d338215a815c09755c04949995ec3e4eab8dce60","Changes":[{"Position":2645673,"Content":[235]},{"Position":8262528,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.2.76","SHA1Before":"0003c7b2c0136a0eb2a6cfc2c694cb57b04b5517","SHA1After":"88af6055a0f4d3bdaa6f717ec8b263d4418487b6","Changes":[{"Position":2644905,"Content":[235]},{"Position":8261024,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.88","SHA1Before":"034059bad50dd793140952391bfa7936133e69b4","SHA1After":"dd6d80c30ca9e0ea9f7d2f1add498fc9aa4bc7a0","Changes":[{"Position":2499465,"Content":[235]},{"Position":7952304,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.85","SHA1Before":"de0df4e138b72460450f66c029e33f4510f5e2df","SHA1After":"fbd35720aaff3cdcfd3ff18ea503dc06450e5c99","Changes":[{"Position":2499465,"Content":[235]},{"Position":7952000,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.82","SHA1Before":"20e111a18872bf6c7148a897c11da26c1ec95520","SHA1After":"1e0741d325ca6b1cd2402b829a3d13a2524af617","Changes":[{"Position":2499465,"Content":[235]},{"Position":7951952,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.74","SHA1Before":"b1eaf7edc074a88be5d0f89230436cc2084d24d2","SHA1After":"eb3d74ccd87a09059a005f4972861898fc3de463","Changes":[{"Position":2499465,"Content":[235]},{"Position":7951696,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.65","SHA1Before":"8346b97d264725da924d240c6eb77df3e693385e","SHA1After":"42bab2c9c79ef4f2088c00ea6d817973e14a5e6e","Changes":[{"Position":2495545,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.59","SHA1Before":"df954d403edaca89cd5394927a325a0023e93281","SHA1After":"6aa22460c91bb5c5e2f0ec1af99b8a5f6d4318c0","Changes":[{"Position":2496073,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.43","SHA1Before":"39cd9e09e1a3eac09e6808749bff525c9e3216ce","SHA1After":"7b829f1ff0217e346a80f9510fdd7634ddd49445","Changes":[{"Position":2494169,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.0.70","SHA1Before":"3b0601864aff3c1d792f812ad1ca05f02aa761e3","SHA1After":"1e8734d32b0a8c12758e30f99c77f729991fb071","Changes":[{"Position":2475657,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.0.65","SHA1Before":"063c2e05a0df1bdb8987c2d978d93499bd2052ba","SHA1After":"5ed4c09a4f18643b967f063a824d7e65d0567f8a","Changes":[{"Position":2475449,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.68","SHA1Before":"2e9417f4276b12fe32ca7b4fee49272a4a2af334","SHA1After":"699602ee3cbb9ae5714f6e6ebc658c875a6c66e6","Changes":[{"Position":2454006,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.65","SHA1Before":"e01f6855a96c12c30808960903ed199a33e4952c","SHA1After":"d9120569cfd0433aebea107d7b90805cbbac7518","Changes":[{"Position":2454265,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.52","SHA1Before":"88131302f664df6a657c9ca49d152da536fe5729","SHA1After":"8d1454b73831644181e962c1fa0ea4e2da4124a3","Changes":[{"Position":2453049,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.51","SHA1Before":"d0a5517b1292a751501b00b4b1f0702db2d9fc30","SHA1After":"53e7b1525d49bf2c3250a8131ff0ba2510779b78","Changes":[{"Position":2452614,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.37","SHA1Before":"7e01f8b04a158a4a50bc5a6e67c2fb8b02233170","SHA1After":"a1895004415fe9bcd7e690bd6e482b833b515599","Changes":[{"Position":2452614,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.57","SHA1Before":"80a91aaf941bcb1c24a7d672838ac73e9ebb2e40","SHA1After":"a0d3f9a45a835f97aef7fe0872387d8cfb5c25a4","Changes":[{"Position":2433413,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.40","SHA1Before":"04bd0cb28df6630b518f42a3f9c2caa4a9359fbc","SHA1After":"13c91cf1d4609959771fd137b9a86a5ca365e1b6","Changes":[{"Position":2432934,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.32","SHA1Before":"a02519c1007ee6723947c262c720d63c619f633e","SHA1After":"f3007471ca8734c29783c25f0bb49949a783a44","Changes":[{"Position":2432806,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.6.28","SHA1Before":"0b19cb17a62c3ea0efce0fb675a1d3b17845cba3","SHA1After":"260948656725446b818ea668273ceff02ddfb44d","Changes":[{"Position":2401678,"Content":[116]}]}]},"FileCommonModifyInfos":{"WeChatWin.dll":[{"Name":"WeChatWin.dll","StartVersion":"2.8.0.88","EndVersion":"","ReplacePatterns":[{"Search":[0,133,192,116,123,139,200,232],"Replace":[0,133,192,235,123,139,200,232],"Category":"防撤回"},{"Search":[192,195,204,204,204,204,204,204,204,204,204,204,204,204,204,204,85,139,236,131,236,20,83,86,87,106,255,15,87,192,199],"Replace":[192,195,204,204,204,204,204,204,204,204,204,204,204,204,204,204,195,139,236,131,236,20,83,86,87,106,255,15,87,192,199],"Category":"多开"}]},{"Name":"WeChatWin.dll","StartVersion":"2.7.0.00","EndVersion":"2.8.0.88","ReplacePatterns":[{"Search":[0,133,192,116,50,185],"Replace":[0,133,192,235,50,185],"Category":"防撤回"},{"Search":[192,195,204,204,204,204,204,204,204,204,204,204,204,204,204,204,85,139,236,131,236,20,83,86,87,106,255,15,87,192,199],"Replace":[192,195,204,204,204,204,204,204,204,204,204,204,204,204,204,204,195,139,236,131,236,20,83,86,87,106,255,15,87,192,199],"Category":"多开"}]}]}},"QQ":{"Name":"QQ","FileTargetInfos":{"IM.dll":{"Name":"IM.dll","RelativePath":"Bin\\IM.dll","Memo":null}},"FileModifyInfos":{"IM.dll":[{"Name":"IM.dll","Version":"9.2.3.26592","SHA1Before":"9114e7869572b4b868afcbc8b28eae932559ec60","SHA1After":"42e15175fd53768bb48772dc69fb07a4eac5a623","Changes":[{"Position":371605,"Content":[235,9,144,144,144]},{"Position":372146,"Content":[235,9,144,144,144]},{"Position":372576,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.2.2.26569","SHA1Before":"434254e76c520789558e075af677821258536311","SHA1After":"237c9e489a97858a175f0f7c72ade4ebcbac7a69","Changes":[{"Position":371146,"Content":[235,9,144,144,144]},{"Position":371687,"Content":[235,9,144,144,144]},{"Position":372117,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.2.1.26546","SHA1Before":"8d8ea2c2cbf43f5acf8d684b153e90035352d5f5","SHA1After":"7d194dd5be03982b533d7375c93d9a72587fe28d","Changes":[{"Position":369545,"Content":[235,9,144,144,144]},{"Position":370086,"Content":[235,9,144,144,144]},{"Position":370516,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.2.0.26453","SHA1Before":"c1935ca6347b0c2a7e6108a7f8ee0643d39deb66","SHA1After":"42811188a7e7b346a6a3c1066936b98c747acaf6","Changes":[{"Position":353794,"Content":[235,9,144,144,144]},{"Position":354335,"Content":[235,9,144,144,144]},{"Position":354767,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.2.0.26389","SHA1Before":"6f8855fb80acfa456f8f69989fe949308fe4d154","SHA1After":"f6b8e05a178b9b10ba17c597fa0a44b7a2a966a8","Changes":[{"Position":356808,"Content":[235,9,144,144,144]},{"Position":357349,"Content":[235,9,144,144,144]},{"Position":357781,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.1.9.26361","SHA1Before":"022d3433d13d07a354c38816f61cb0b7ac60d3fd","SHA1After":"873a57c1fb51cdd099c8cb7108b5ab5cb4459557","Changes":[{"Position":354270,"Content":[235,9,144,144,144]},{"Position":354811,"Content":[235,9,144,144,144]},{"Position":355243,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.1.9.26346","SHA1Before":"895eb70f707b8222e6460c91492b1281e525059b","SHA1After":"0bb83990e2b5b5f23b7b43249941ff638201af54","Changes":[{"Position":354270,"Content":[235,9,144,144,144]},{"Position":354811,"Content":[235,9,144,144,144]},{"Position":355243,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.1.8.26211","SHA1Before":"a950d3cf5e8925f7775624271105ef78d9c5cb57","SHA1After":"dffc1cb87b91e6467e13c935611f2f7fd76b9a8d","Changes":[{"Position":337135,"Content":[235,9,144,144,144]},{"Position":337676,"Content":[235,9,144,144,144]},{"Position":338108,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.1.7.25980","SHA1Before":"c6632339fbe675312a70ae4620e70699c258cd36","SHA1After":"e9ddc5cc681950796fc8fe4c55f580428c890b51","Changes":[{"Position":327839,"Content":[235,9,144,144,144]},{"Position":328380,"Content":[235,9,144,144,144]},{"Position":328812,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.0.4.23786","SHA1Before":"69a714f4eadb09f1453f6f022d4adbcd801cfab8","SHA1After":"b48e77a924076b3ebdffc4af514c868c551d2bca","Changes":[{"Position":318321,"Content":[235,7,144,144,144]},{"Position":318862,"Content":[235,7,144,144,144]},{"Position":319379,"Content":[235,7,144,144,144]}]}]},"FileCommonModifyInfos":{"IM.dll":[{"Name":"IM.dll","StartVersion":"9.1.7.00000","EndVersion":"","ReplacePatterns":[{"Search":[28,233,157,0,0,0,139,69,232,141,85,236,82,137,93,236,104,63,63,63,84,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Replace":[28,233,157,0,0,0,139,69,232,141,85,236,82,137,93,236,235,9,144,144,144,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Category":"防撤回"},{"Search":[28,233,157,0,0,0,139,69,240,141,85,236,82,137,93,236,104,63,63,63,84,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Replace":[28,233,157,0,0,0,139,69,240,141,85,236,82,137,93,236,235,9,144,144,144,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Category":"防撤回"},{"Search":[139,117,20,141,77,244,131,196,32,51,255,137,125,244,139,6,81,104,63,63,63,84,86,255,80,120,133,192,121,57,141,69,12,199,69,12],"Replace":[139,117,20,141,77,244,131,196,32,51,255,137,125,244,139,6,235,8,144,144,144,144,86,255,80,120,133,192,121,57,141,69,12,199,69,12],"Category":"防撤回"}]}]}},"TIM":{"Name":"TIM","FileTargetInfos":{"IM.dll":{"Name":"IM.dll","RelativePath":"Bin\\IM.dll","Memo":null}},"FileModifyInfos":{"IM.dll":[{"Name":"IM.dll","Version":"2.3.2.21173","SHA1Before":"ecf3e69f3fb100ffe2fee095ffded591b9781024","SHA1After":"0514d1304e7ac46b4d33386ec3313888f5ae7171","Changes":[{"Position":317322,"Content":[235,9,144,144,144]},{"Position":317863,"Content":[235,9,144,144,144]},{"Position":318295,"Content":[235,8,144,144,144,144]}]}]},"FileCommonModifyInfos":{"IM.dll":[{"Name":"IM.dll","StartVersion":"3.0.0.00000","EndVersion":"","ReplacePatterns":[{"Search":[28,233,157,0,0,0,139,69,232,141,85,236,82,137,93,236,104,63,63,63,84,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Replace":[28,233,157,0,0,0,139,69,232,141,85,236,82,137,93,236,235,9,144,144,144,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Category":"防撤回"},{"Search":[28,233,157,0,0,0,139,69,240,141,85,236,82,137,93,236,104,63,63,63,84,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Replace":[28,233,157,0,0,0,139,69,240,141,85,236,82,137,93,236,235,9,144,144,144,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Category":"防撤回"},{"Search":[139,117,20,141,77,244,131,196,32,51,255,137,125,244,139,6,81,104,63,63,63,84,86,255,80,120,133,192,121,57,141,69,12,199,69,12],"Replace":[139,117,20,141,77,244,131,196,32,51,255,137,125,244,139,6,235,8,144,144,144,144,86,255,80,120,133,192,121,57,141,69,12,199,69,12],"Category":"防撤回"}]}]}},"QQLite":{"Name":"QQLite","FileTargetInfos":{"IM.dll":{"Name":"IM.dll","RelativePath":"Bin\\IM.dll","Memo":null}},"FileModifyInfos":{"IM.dll":[{"Name":"IM.dll","Version":"7.9.14314.0","SHA1Before":"2e97d7671963fa148a1beeda6ce4964314310593","SHA1After":"723c008fb53435ead20fa6f2e951c9a4a8ff46da","Changes":[{"Position":148741,"Content":[235,2,144,144]},{"Position":149689,"Content":[235,2,144,144]}]},{"Name":"IM.dll","Version":"7.9.14308.0","SHA1Before":"b8a7a873178706b97be11c25f13bcf09e9e578a2","SHA1After":"c5bf533c7af6996b42d1fb2a0fb3f26dfd52f8bf","Changes":[{"Position":148741,"Content":[235,2,144,144]},{"Position":149689,"Content":[235,2,144,144]}]}]},"FileCommonModifyInfos":null}},"LatestVersion":"0.9","Notice":""}
\ No newline at end of file
diff --git a/RevokeMsgPatcher.Assistant/JsonData.cs b/RevokeMsgPatcher.Assistant/JsonData.cs
index 980fb5a..d0beb7b 100644
--- a/RevokeMsgPatcher.Assistant/JsonData.cs
+++ b/RevokeMsgPatcher.Assistant/JsonData.cs
@@ -16,7 +16,7 @@ namespace RevokeMsgPatcher
return new Bag
{
Apps = AppConfig(),
- LatestVersion = "0.8",
+ LatestVersion = "0.9",
Notice = ""
};
}
@@ -76,12 +76,14 @@ namespace RevokeMsgPatcher
new ReplacePattern
{
Search = ByteUtil.HexStringToByteArray("00 85 C0 74 7B 8B C8 E8"),
- Replace = ByteUtil.HexStringToByteArray("00 85 C0 EB 7B 8B C8 E8")
+ Replace = ByteUtil.HexStringToByteArray("00 85 C0 EB 7B 8B C8 E8"),
+ Category = "防撤回"
},
new ReplacePattern
{
Search = ByteUtil.HexStringToByteArray("C0 C3 CC CC CC CC CC CC CC CC CC CC CC CC CC CC 55 8B EC 83 EC 14 53 56 57 6A FF 0F 57 C0 C7"),
- Replace = ByteUtil.HexStringToByteArray("C0 C3 CC CC CC CC CC CC CC CC CC CC CC CC CC CC C3 8B EC 83 EC 14 53 56 57 6A FF 0F 57 C0 C7")
+ Replace = ByteUtil.HexStringToByteArray("C0 C3 CC CC CC CC CC CC CC CC CC CC CC CC CC CC C3 8B EC 83 EC 14 53 56 57 6A FF 0F 57 C0 C7"),
+ Category = "多开"
}
}
},
@@ -95,12 +97,14 @@ namespace RevokeMsgPatcher
new ReplacePattern
{
Search = ByteUtil.HexStringToByteArray("00 85 C0 74 32 B9"),
- Replace = ByteUtil.HexStringToByteArray("00 85 C0 EB 32 B9")
+ Replace = ByteUtil.HexStringToByteArray("00 85 C0 EB 32 B9"),
+ Category = "防撤回"
},
new ReplacePattern
{
Search = ByteUtil.HexStringToByteArray("C0 C3 CC CC CC CC CC CC CC CC CC CC CC CC CC CC 55 8B EC 83 EC 14 53 56 57 6A FF 0F 57 C0 C7"),
- Replace = ByteUtil.HexStringToByteArray("C0 C3 CC CC CC CC CC CC CC CC CC CC CC CC CC CC C3 8B EC 83 EC 14 53 56 57 6A FF 0F 57 C0 C7")
+ Replace = ByteUtil.HexStringToByteArray("C0 C3 CC CC CC CC CC CC CC CC CC CC CC CC CC CC C3 8B EC 83 EC 14 53 56 57 6A FF 0F 57 C0 C7"),
+ Category = "多开"
}
}
}
@@ -356,17 +360,20 @@ namespace RevokeMsgPatcher
new ReplacePattern
{
Search = ByteUtil.HexStringToByteArray("1C E9 9D 00 00 00 8B 45 E8 8D 55 EC 52 89 5D EC 68 3F 3F 3F 54 8B 08 50 FF 51 78 85 C0 79 2D 8D 45 0C C7 45 0C"),
- Replace = ByteUtil.HexStringToByteArray("1C E9 9D 00 00 00 8B 45 E8 8D 55 EC 52 89 5D EC EB 09 90 90 90 8B 08 50 FF 51 78 85 C0 79 2D 8D 45 0C C7 45 0C")
+ Replace = ByteUtil.HexStringToByteArray("1C E9 9D 00 00 00 8B 45 E8 8D 55 EC 52 89 5D EC EB 09 90 90 90 8B 08 50 FF 51 78 85 C0 79 2D 8D 45 0C C7 45 0C"),
+ Category = "防撤回"
},
new ReplacePattern
{
Search = ByteUtil.HexStringToByteArray("1C E9 9D 00 00 00 8B 45 F0 8D 55 EC 52 89 5D EC 68 3F 3F 3F 54 8B 08 50 FF 51 78 85 C0 79 2D 8D 45 0C C7 45 0C"),
- Replace = ByteUtil.HexStringToByteArray("1C E9 9D 00 00 00 8B 45 F0 8D 55 EC 52 89 5D EC EB 09 90 90 90 8B 08 50 FF 51 78 85 C0 79 2D 8D 45 0C C7 45 0C")
+ Replace = ByteUtil.HexStringToByteArray("1C E9 9D 00 00 00 8B 45 F0 8D 55 EC 52 89 5D EC EB 09 90 90 90 8B 08 50 FF 51 78 85 C0 79 2D 8D 45 0C C7 45 0C"),
+ Category = "防撤回"
},
new ReplacePattern
{
Search = ByteUtil.HexStringToByteArray("8B 75 14 8D 4D F4 83 C4 20 33 FF 89 7D F4 8B 06 51 68 3F 3F 3F 54 56 FF 50 78 85 C0 79 39 8D 45 0C C7 45 0C"),
- Replace = ByteUtil.HexStringToByteArray("8B 75 14 8D 4D F4 83 C4 20 33 FF 89 7D F4 8B 06 EB 08 90 90 90 90 56 FF 50 78 85 C0 79 39 8D 45 0C C7 45 0C")
+ Replace = ByteUtil.HexStringToByteArray("8B 75 14 8D 4D F4 83 C4 20 33 FF 89 7D F4 8B 06 EB 08 90 90 90 90 56 FF 50 78 85 C0 79 39 8D 45 0C C7 45 0C"),
+ Category = "防撤回"
}
}
}
@@ -667,17 +674,20 @@ namespace RevokeMsgPatcher
new ReplacePattern
{
Search = ByteUtil.HexStringToByteArray("1C E9 9D 00 00 00 8B 45 E8 8D 55 EC 52 89 5D EC 68 3F 3F 3F 54 8B 08 50 FF 51 78 85 C0 79 2D 8D 45 0C C7 45 0C"),
- Replace = ByteUtil.HexStringToByteArray("1C E9 9D 00 00 00 8B 45 E8 8D 55 EC 52 89 5D EC EB 09 90 90 90 8B 08 50 FF 51 78 85 C0 79 2D 8D 45 0C C7 45 0C")
+ Replace = ByteUtil.HexStringToByteArray("1C E9 9D 00 00 00 8B 45 E8 8D 55 EC 52 89 5D EC EB 09 90 90 90 8B 08 50 FF 51 78 85 C0 79 2D 8D 45 0C C7 45 0C"),
+ Category = "防撤回"
},
new ReplacePattern
{
Search = ByteUtil.HexStringToByteArray("1C E9 9D 00 00 00 8B 45 F0 8D 55 EC 52 89 5D EC 68 3F 3F 3F 54 8B 08 50 FF 51 78 85 C0 79 2D 8D 45 0C C7 45 0C"),
- Replace = ByteUtil.HexStringToByteArray("1C E9 9D 00 00 00 8B 45 F0 8D 55 EC 52 89 5D EC EB 09 90 90 90 8B 08 50 FF 51 78 85 C0 79 2D 8D 45 0C C7 45 0C")
+ Replace = ByteUtil.HexStringToByteArray("1C E9 9D 00 00 00 8B 45 F0 8D 55 EC 52 89 5D EC EB 09 90 90 90 8B 08 50 FF 51 78 85 C0 79 2D 8D 45 0C C7 45 0C"),
+ Category = "防撤回"
},
new ReplacePattern
{
Search = ByteUtil.HexStringToByteArray("8B 75 14 8D 4D F4 83 C4 20 33 FF 89 7D F4 8B 06 51 68 3F 3F 3F 54 56 FF 50 78 85 C0 79 39 8D 45 0C C7 45 0C"),
- Replace = ByteUtil.HexStringToByteArray("8B 75 14 8D 4D F4 83 C4 20 33 FF 89 7D F4 8B 06 EB 08 90 90 90 90 56 FF 50 78 85 C0 79 39 8D 45 0C C7 45 0C")
+ Replace = ByteUtil.HexStringToByteArray("8B 75 14 8D 4D F4 83 C4 20 33 FF 89 7D F4 8B 06 EB 08 90 90 90 90 56 FF 50 78 85 C0 79 39 8D 45 0C C7 45 0C"),
+ Category = "防撤回"
}
}
}
diff --git a/RevokeMsgPatcher.Assistant/RevokeMsgPatcher.Assistant.csproj b/RevokeMsgPatcher.Assistant/RevokeMsgPatcher.Assistant.csproj
index f534378..4303ce4 100644
--- a/RevokeMsgPatcher.Assistant/RevokeMsgPatcher.Assistant.csproj
+++ b/RevokeMsgPatcher.Assistant/RevokeMsgPatcher.Assistant.csproj
@@ -84,6 +84,7 @@
+
SettingsSingleFileGenerator
Settings.Designer.cs
diff --git a/RevokeMsgPatcher/FormMain.Designer.cs b/RevokeMsgPatcher/FormMain.Designer.cs
index b97b271..b638844 100644
--- a/RevokeMsgPatcher/FormMain.Designer.cs
+++ b/RevokeMsgPatcher/FormMain.Designer.cs
@@ -48,6 +48,7 @@
this.高级ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.特征码防撤回强制ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.手动输入补丁信息ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.通用微信多开工具ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.帮助ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.支持版本ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.常见问题ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -56,7 +57,8 @@
this.关于ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.作者ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.主页ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.通用微信多开工具ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.lblCategory = new System.Windows.Forms.Label();
+ this.panelCategories = new System.Windows.Forms.FlowLayoutPanel();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
@@ -72,11 +74,11 @@
// btnPatch
//
this.btnPatch.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.btnPatch.Location = new System.Drawing.Point(378, 85);
+ this.btnPatch.Location = new System.Drawing.Point(378, 108);
this.btnPatch.Name = "btnPatch";
this.btnPatch.Size = new System.Drawing.Size(98, 23);
this.btnPatch.TabIndex = 3;
- this.btnPatch.Text = "一键防撤回!";
+ this.btnPatch.Text = "安装补丁";
this.btnPatch.UseVisualStyleBackColor = true;
this.btnPatch.Click += new System.EventHandler(this.btnPatch_Click);
//
@@ -104,7 +106,7 @@
// label1
//
this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(14, 116);
+ this.label1.Location = new System.Drawing.Point(14, 139);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(101, 12);
this.label1.TabIndex = 6;
@@ -113,7 +115,7 @@
// linkLabel1
//
this.linkLabel1.AutoSize = true;
- this.linkLabel1.Location = new System.Drawing.Point(121, 116);
+ this.linkLabel1.Location = new System.Drawing.Point(121, 139);
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.Size = new System.Drawing.Size(41, 12);
this.linkLabel1.TabIndex = 7;
@@ -124,7 +126,7 @@
// btnRestore
//
this.btnRestore.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.btnRestore.Location = new System.Drawing.Point(290, 85);
+ this.btnRestore.Location = new System.Drawing.Point(290, 108);
this.btnRestore.Name = "btnRestore";
this.btnRestore.Size = new System.Drawing.Size(82, 23);
this.btnRestore.TabIndex = 8;
@@ -137,7 +139,7 @@
this.lblUpdatePachJson.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.lblUpdatePachJson.Cursor = System.Windows.Forms.Cursors.Hand;
this.lblUpdatePachJson.ForeColor = System.Drawing.Color.OrangeRed;
- this.lblUpdatePachJson.Location = new System.Drawing.Point(168, 118);
+ this.lblUpdatePachJson.Location = new System.Drawing.Point(168, 141);
this.lblUpdatePachJson.Name = "lblUpdatePachJson";
this.lblUpdatePachJson.Size = new System.Drawing.Size(308, 12);
this.lblUpdatePachJson.TabIndex = 9;
@@ -148,7 +150,7 @@
// lblVersion
//
this.lblVersion.AutoSize = true;
- this.lblVersion.Location = new System.Drawing.Point(85, 90);
+ this.lblVersion.Location = new System.Drawing.Point(85, 113);
this.lblVersion.Name = "lblVersion";
this.lblVersion.Size = new System.Drawing.Size(0, 12);
this.lblVersion.TabIndex = 10;
@@ -156,7 +158,7 @@
// lblVersionTag
//
this.lblVersionTag.AutoSize = true;
- this.lblVersionTag.Location = new System.Drawing.Point(14, 90);
+ this.lblVersionTag.Location = new System.Drawing.Point(14, 113);
this.lblVersionTag.Name = "lblVersionTag";
this.lblVersionTag.Size = new System.Drawing.Size(65, 12);
this.lblVersionTag.TabIndex = 9;
@@ -255,6 +257,13 @@
this.手动输入补丁信息ToolStripMenuItem.Visible = false;
this.手动输入补丁信息ToolStripMenuItem.Click += new System.EventHandler(this.手动输入补丁信息ToolStripMenuItem_Click);
//
+ // 通用微信多开工具ToolStripMenuItem
+ //
+ this.通用微信多开工具ToolStripMenuItem.Name = "通用微信多开工具ToolStripMenuItem";
+ this.通用微信多开工具ToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
+ this.通用微信多开工具ToolStripMenuItem.Text = "通用微信多开工具";
+ this.通用微信多开工具ToolStripMenuItem.Click += new System.EventHandler(this.通用微信多开工具ToolStripMenuItem_Click);
+ //
// 帮助ToolStripMenuItem
//
this.帮助ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -317,18 +326,29 @@
this.主页ToolStripMenuItem.Text = "软件主页";
this.主页ToolStripMenuItem.Click += new System.EventHandler(this.主页ToolStripMenuItem_Click);
//
- // 通用微信多开工具ToolStripMenuItem
+ // lblCategory
//
- this.通用微信多开工具ToolStripMenuItem.Name = "通用微信多开工具ToolStripMenuItem";
- this.通用微信多开工具ToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
- this.通用微信多开工具ToolStripMenuItem.Text = "通用微信多开工具";
- this.通用微信多开工具ToolStripMenuItem.Click += new System.EventHandler(this.通用微信多开工具ToolStripMenuItem_Click);
+ this.lblCategory.AutoSize = true;
+ this.lblCategory.Location = new System.Drawing.Point(14, 89);
+ this.lblCategory.Name = "lblCategory";
+ this.lblCategory.Size = new System.Drawing.Size(65, 12);
+ this.lblCategory.TabIndex = 20;
+ this.lblCategory.Text = "可选功能:";
+ //
+ // panelCategories
+ //
+ this.panelCategories.Location = new System.Drawing.Point(83, 85);
+ this.panelCategories.Name = "panelCategories";
+ this.panelCategories.Size = new System.Drawing.Size(201, 18);
+ this.panelCategories.TabIndex = 22;
//
// FormMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(490, 146);
+ this.ClientSize = new System.Drawing.Size(490, 169);
+ this.Controls.Add(this.panelCategories);
+ this.Controls.Add(this.lblCategory);
this.Controls.Add(this.rbtQQLite);
this.Controls.Add(this.lblUpdatePachJson);
this.Controls.Add(this.lblVersion);
@@ -388,6 +408,8 @@
private System.Windows.Forms.ToolStripMenuItem 手动输入补丁信息ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem 特征码防撤回强制ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem 通用微信多开工具ToolStripMenuItem;
+ private System.Windows.Forms.Label lblCategory;
+ private System.Windows.Forms.FlowLayoutPanel panelCategories;
}
}
diff --git a/RevokeMsgPatcher/FormMain.cs b/RevokeMsgPatcher/FormMain.cs
index e53d797..9bc6c0a 100644
--- a/RevokeMsgPatcher/FormMain.cs
+++ b/RevokeMsgPatcher/FormMain.cs
@@ -1,4 +1,5 @@
-using RevokeMsgPatcher.Model;
+using RevokeMsgPatcher.Forms;
+using RevokeMsgPatcher.Model;
using RevokeMsgPatcher.Modifier;
using RevokeMsgPatcher.Utils;
using System;
@@ -75,7 +76,7 @@ namespace RevokeMsgPatcher
if (!string.IsNullOrEmpty(txtPath.Text))
{
modifier.InitEditors(txtPath.Text);
- modifier.SetVersionLabel(lblVersion);
+ modifier.SetVersionLabelAndCategoryCategories(lblVersion, panelCategories);
btnRestore.Enabled = modifier.BackupExists();
}
}
@@ -96,10 +97,19 @@ namespace RevokeMsgPatcher
EnableAllButton(false);
// a.重新初始化编辑器
modifier.InitEditors(txtPath.Text);
- // b.计算SHA1,验证文件完整性,寻找对应的补丁信息(精确版本、通用特征码两种补丁信息)
+ // b.获取选择的功能
+ string[] categories = UIController.GetCategoriesFromPanel(panelCategories);
+ if (panelCategories.Controls.Count > 0 && (categories == null || categories.Length == 0))
+ {
+ MessageBox.Show("请至少选择一项功能");
+ EnableAllButton(true);
+ btnRestore.Enabled = modifier.BackupExists();
+ return;
+ }
+ // c.计算SHA1,验证文件完整性,寻找对应的补丁信息(精确版本、通用特征码两种补丁信息)
try
{
- modifier.ValidateAndFindModifyInfo();
+ modifier.ValidateAndFindModifyInfo(categories);
}
catch (BusinessException ex)
{
@@ -126,11 +136,11 @@ namespace RevokeMsgPatcher
return;
}
- // c.打补丁
+ // d.打补丁
try
{
modifier.Patch();
- ga.RequestPageView($"{enName}/{version}/patch/succ", "防撤回成功");
+ ga.RequestPageView($"{enName}/{version}/patch/succ", "补丁安装成功");
MessageBox.Show("补丁安装成功!");
}
catch (BusinessException ex)
@@ -185,7 +195,7 @@ namespace RevokeMsgPatcher
if (!string.IsNullOrEmpty(txtPath.Text))
{
modifier.InitEditors(txtPath.Text);
- modifier.SetVersionLabel(lblVersion);
+ modifier.SetVersionLabelAndCategoryCategories(lblVersion, panelCategories);
btnRestore.Enabled = modifier.BackupExists();
}
}
@@ -220,7 +230,8 @@ namespace RevokeMsgPatcher
private async void FormMain_Load(object sender, EventArgs e)
{
// 异步获取最新的补丁信息
- string json = await HttpUtil.GetPatchJsonAsync();
+ //string json = await HttpUtil.GetPatchJsonAsync();
+ string json = null; // local test
if (string.IsNullOrEmpty(json))
{
lblUpdatePachJson.Text = "[ 获取最新补丁信息失败 ]";
@@ -304,11 +315,12 @@ namespace RevokeMsgPatcher
EnableAllButton(true);
lblVersion.Text = "";
btnRestore.Enabled = false;
+ panelCategories.Controls.Clear();
// 显示是否能够备份还原
if (!string.IsNullOrEmpty(txtPath.Text))
{
modifier.InitEditors(txtPath.Text);
- modifier.SetVersionLabel(lblVersion);
+ modifier.SetVersionLabelAndCategoryCategories(lblVersion, panelCategories);
btnRestore.Enabled = modifier.BackupExists();
}
ga.RequestPageView($"{GetCheckedRadioButtonNameEn()}/{lblVersion.Text}/switch", "切换标签页");
diff --git a/RevokeMsgPatcher/Forms/UIController.cs b/RevokeMsgPatcher/Forms/UIController.cs
new file mode 100644
index 0000000..20b26f0
--- /dev/null
+++ b/RevokeMsgPatcher/Forms/UIController.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace RevokeMsgPatcher.Forms
+{
+ public class UIController
+ {
+ public static void AddCategoryCheckBoxToPanel(Panel panel, string[] categories = null)
+ {
+ if (categories != null && categories.Length != 0)
+ {
+ panel.Controls.Clear();
+ for (int i = 0; i < categories.Length; i++)
+ {
+ CheckBox chk = new CheckBox
+ {
+ Text = categories[i],
+ Name = "chkCategoriesIndex" + i,
+ Checked = true,
+ AutoSize = true
+ };
+ // 只有一个选项时,必选
+ if (categories.Length == 1)
+ {
+ chk.Enabled = false;
+ }
+ panel.Controls.Add(chk);
+ }
+ }
+ else
+ {
+ AddMsgToPanel(panel, "无功能选项");
+ }
+ }
+
+ public static void AddMsgToPanel(Panel panel, string msg)
+ {
+ panel.Controls.Clear();
+ Label label = new Label
+ {
+ Name = "lblCategoriesMsg",
+ Text = msg,
+ TextAlign = ContentAlignment.MiddleLeft
+ };
+ panel.Controls.Add(label);
+ }
+
+ public static string[] GetCategoriesFromPanel(Panel panel)
+ {
+ List categories = new List();
+ foreach (CheckBox checkBox in panel.Controls)
+ {
+ if (checkBox.Checked)
+ {
+ categories.Add(checkBox.Text);
+ }
+ }
+ return categories.ToArray();
+ }
+ }
+}
diff --git a/RevokeMsgPatcher/Matcher/ModifyFinder.cs b/RevokeMsgPatcher/Matcher/ModifyFinder.cs
index 29ffc27..dc4d8fc 100644
--- a/RevokeMsgPatcher/Matcher/ModifyFinder.cs
+++ b/RevokeMsgPatcher/Matcher/ModifyFinder.cs
@@ -35,7 +35,7 @@ namespace RevokeMsgPatcher.Matcher
{
if (IsAllReplaced(fileByteArray, replacePatterns))
{
- throw new BusinessException("match_already_replace", "特征比对:当前应用已经安装了防撤回补丁!");
+ throw new BusinessException("match_already_replace", "特征比对:当前应用已经安装了对应功能的补丁!");
}
else
{
@@ -64,7 +64,6 @@ namespace RevokeMsgPatcher.Matcher
return changes;
}
}
- return null;
}
private static bool IsAllReplaced(byte[] fileByteArray, List replacePatterns)
diff --git a/RevokeMsgPatcher/Model/CommonModifyInfo.cs b/RevokeMsgPatcher/Model/CommonModifyInfo.cs
index 327b521..2e4bfeb 100644
--- a/RevokeMsgPatcher/Model/CommonModifyInfo.cs
+++ b/RevokeMsgPatcher/Model/CommonModifyInfo.cs
@@ -24,12 +24,24 @@ namespace RevokeMsgPatcher.Model
o.StartVersion = StartVersion;
o.EndVersion = EndVersion;
List cs = new List();
- foreach(ReplacePattern c in ReplacePatterns)
+ foreach (ReplacePattern c in ReplacePatterns)
{
cs.Add(c.Clone());
}
o.ReplacePatterns = cs;
return o;
}
+
+ public List GetCategories()
+ {
+ if (ReplacePatterns != null && ReplacePatterns.Count > 0)
+ {
+ return ReplacePatterns.Select(p => p.Category).ToList();
+ }
+ else
+ {
+ return new List();
+ }
+ }
}
}
diff --git a/RevokeMsgPatcher/Model/ReplacePattern.cs b/RevokeMsgPatcher/Model/ReplacePattern.cs
index 0567449..38810f5 100644
--- a/RevokeMsgPatcher/Model/ReplacePattern.cs
+++ b/RevokeMsgPatcher/Model/ReplacePattern.cs
@@ -8,6 +8,8 @@ namespace RevokeMsgPatcher.Model
public byte[] Replace { get; set; }
+ public string Category { get; set; }
+
public ReplacePattern Clone()
{
ReplacePattern o = new ReplacePattern();
diff --git a/RevokeMsgPatcher/Modifier/AppModifier.cs b/RevokeMsgPatcher/Modifier/AppModifier.cs
index d8a1296..1b6c06f 100644
--- a/RevokeMsgPatcher/Modifier/AppModifier.cs
+++ b/RevokeMsgPatcher/Modifier/AppModifier.cs
@@ -1,10 +1,12 @@
-using RevokeMsgPatcher.Matcher;
+using RevokeMsgPatcher.Forms;
+using RevokeMsgPatcher.Matcher;
using RevokeMsgPatcher.Model;
using RevokeMsgPatcher.Utils;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
+using System.Linq;
using System.Windows.Forms;
namespace RevokeMsgPatcher.Modifier
@@ -44,11 +46,13 @@ namespace RevokeMsgPatcher.Modifier
/// 操作版本号显示控件的内容和样式
///
/// 显示版本的控件
- public void SetVersionLabel(System.Windows.Forms.Label label)
+ public void SetVersionLabelAndCategoryCategories(Label label, Panel panel)
{
string version = GetVersion();
// 补丁信息中是否都有对应的版本
int i = 0, j = 0;
+ // 特征码匹配的时候的可选功能项
+ SortedSet categories = new SortedSet();
foreach (FileHexEditor editor in editors) // 多种文件
{
// 精确版本匹配
@@ -75,6 +79,14 @@ namespace RevokeMsgPatcher.Modifier
// editor.FileVersion 在 StartVersion 和 EndVersion 之间
if (IsInVersionRange(editor.FileVersion, commonModifyInfo.StartVersion, commonModifyInfo.EndVersion))
{
+ // 取出特征码的功能类型
+ foreach (string c in commonModifyInfo.GetCategories())
+ {
+ if (c != null)
+ {
+ categories.Add(c);
+ }
+ }
inRange = true;
break;
}
@@ -91,16 +103,19 @@ namespace RevokeMsgPatcher.Modifier
{
label.Text = version + "(已支持)";
label.ForeColor = Color.Green;
+ UIController.AddMsgToPanel(panel, "只有基于特征的补丁才能选择功能");
}
else if (j == editors.Count)
{
label.Text = version + "(支持特征防撤回)";
label.ForeColor = Color.LimeGreen;
+ UIController.AddCategoryCheckBoxToPanel(panel, categories.ToArray());
}
else
{
label.Text = version + "(不支持)";
label.ForeColor = Color.Red;
+ UIController.AddMsgToPanel(panel, "无功能选项");
}
}
@@ -220,7 +235,8 @@ namespace RevokeMsgPatcher.Modifier
///
/// b.验证文件完整性,寻找对应的补丁信息
///
- public void ValidateAndFindModifyInfo()
+ /// 操作类型(防撤回或者多开等),为空则是所有操作
+ public void ValidateAndFindModifyInfo(string[] categories)
{
// 寻找对应文件版本与SHA1的修改信息
foreach (FileHexEditor editor in editors) // 多种文件
@@ -263,6 +279,7 @@ namespace RevokeMsgPatcher.Modifier
// SHA1不匹配说明精准替换肯定不支持
if (matchingSHA1Before == null && matchingSHA1After == null)
{
+ // 尝试使用特征码替换
// 多个版本范围,匹配出对应版本可以使用的特征
if (config.FileCommonModifyInfos != null)
{
@@ -272,8 +289,14 @@ namespace RevokeMsgPatcher.Modifier
// 存在对应的特征时不报错
if (editor.FileCommonModifyInfo != null && editor.FileCommonModifyInfo.ReplacePatterns != null)
{
+ List replacePatterns = editor.FileCommonModifyInfo.ReplacePatterns;
+ // 根据需要操作的功能类型(防撤回或者多开等)筛选特征码
+ if (categories.Length > 0)
+ {
+ replacePatterns = editor.FileCommonModifyInfo.ReplacePatterns.Where(info => categories.Contains(info.Category)).ToList();
+ }
// 如果能顺利得到 TargetChanges 不报错则可以使用特征替换方式
- editor.TargetChanges = ModifyFinder.FindChanges(editor.FilePath, editor.FileCommonModifyInfo.ReplacePatterns);
+ editor.TargetChanges = ModifyFinder.FindChanges(editor.FilePath, replacePatterns);
continue;
}
else
diff --git a/RevokeMsgPatcher/Properties/Resources.resx b/RevokeMsgPatcher/Properties/Resources.resx
index 19950f5..45c2530 100644
--- a/RevokeMsgPatcher/Properties/Resources.resx
+++ b/RevokeMsgPatcher/Properties/Resources.resx
@@ -118,6 +118,6 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- {"Apps":{"Wechat":{"Name":"Wechat","FileTargetInfos":{"WeChatWin.dll":{"Name":"WeChatWin.dll","RelativePath":"WeChatWin.dll","Memo":null}},"FileModifyInfos":{"WeChatWin.dll":[{"Name":"WeChatWin.dll","Version":"2.8.0.112","SHA1Before":"7497fc006f061799138aa33419280e41891a7981","SHA1After":"07e681be40af32738d59a9332fe966c83c05e455","Changes":[{"Position":2682233,"Content":[235]},{"Position":8289040,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.8.0.106","SHA1Before":"e772c81c8a1b79cac77b22dbe67b375fa340ba30","SHA1After":"bcbc491910f07cb995ef154a281450f2d052e90b","Changes":[{"Position":2658457,"Content":[235]},{"Position":8280416,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.8.0.88","SHA1Before":"b34c73e38cfec186890b58caac5fc9962377cd9b","SHA1After":"8c108e92de0b6b4d9e61ce38ab8dd339a27e505b","Changes":[{"Position":2655369,"Content":[235]},{"Position":8273280,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.8.0.82","SHA1Before":"c359cc1a391441d261753f2844f9156638df8631","SHA1After":"d1b4dee8f7f91e34d68501987fd0675b33fe85da","Changes":[{"Position":2645961,"Content":[235]},{"Position":8263344,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.2.78","SHA1Before":"26a5c5503f1e176676da5657c12812da8aaa0243","SHA1After":"d338215a815c09755c04949995ec3e4eab8dce60","Changes":[{"Position":2645673,"Content":[235]},{"Position":8262528,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.2.76","SHA1Before":"0003c7b2c0136a0eb2a6cfc2c694cb57b04b5517","SHA1After":"88af6055a0f4d3bdaa6f717ec8b263d4418487b6","Changes":[{"Position":2644905,"Content":[235]},{"Position":8261024,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.88","SHA1Before":"034059bad50dd793140952391bfa7936133e69b4","SHA1After":"dd6d80c30ca9e0ea9f7d2f1add498fc9aa4bc7a0","Changes":[{"Position":2499465,"Content":[235]},{"Position":7952304,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.85","SHA1Before":"de0df4e138b72460450f66c029e33f4510f5e2df","SHA1After":"fbd35720aaff3cdcfd3ff18ea503dc06450e5c99","Changes":[{"Position":2499465,"Content":[235]},{"Position":7952000,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.82","SHA1Before":"20e111a18872bf6c7148a897c11da26c1ec95520","SHA1After":"1e0741d325ca6b1cd2402b829a3d13a2524af617","Changes":[{"Position":2499465,"Content":[235]},{"Position":7951952,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.74","SHA1Before":"b1eaf7edc074a88be5d0f89230436cc2084d24d2","SHA1After":"eb3d74ccd87a09059a005f4972861898fc3de463","Changes":[{"Position":2499465,"Content":[235]},{"Position":7951696,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.65","SHA1Before":"8346b97d264725da924d240c6eb77df3e693385e","SHA1After":"42bab2c9c79ef4f2088c00ea6d817973e14a5e6e","Changes":[{"Position":2495545,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.59","SHA1Before":"df954d403edaca89cd5394927a325a0023e93281","SHA1After":"6aa22460c91bb5c5e2f0ec1af99b8a5f6d4318c0","Changes":[{"Position":2496073,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.43","SHA1Before":"39cd9e09e1a3eac09e6808749bff525c9e3216ce","SHA1After":"7b829f1ff0217e346a80f9510fdd7634ddd49445","Changes":[{"Position":2494169,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.0.70","SHA1Before":"3b0601864aff3c1d792f812ad1ca05f02aa761e3","SHA1After":"1e8734d32b0a8c12758e30f99c77f729991fb071","Changes":[{"Position":2475657,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.0.65","SHA1Before":"063c2e05a0df1bdb8987c2d978d93499bd2052ba","SHA1After":"5ed4c09a4f18643b967f063a824d7e65d0567f8a","Changes":[{"Position":2475449,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.68","SHA1Before":"2e9417f4276b12fe32ca7b4fee49272a4a2af334","SHA1After":"699602ee3cbb9ae5714f6e6ebc658c875a6c66e6","Changes":[{"Position":2454006,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.65","SHA1Before":"e01f6855a96c12c30808960903ed199a33e4952c","SHA1After":"d9120569cfd0433aebea107d7b90805cbbac7518","Changes":[{"Position":2454265,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.52","SHA1Before":"88131302f664df6a657c9ca49d152da536fe5729","SHA1After":"8d1454b73831644181e962c1fa0ea4e2da4124a3","Changes":[{"Position":2453049,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.51","SHA1Before":"d0a5517b1292a751501b00b4b1f0702db2d9fc30","SHA1After":"53e7b1525d49bf2c3250a8131ff0ba2510779b78","Changes":[{"Position":2452614,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.37","SHA1Before":"7e01f8b04a158a4a50bc5a6e67c2fb8b02233170","SHA1After":"a1895004415fe9bcd7e690bd6e482b833b515599","Changes":[{"Position":2452614,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.57","SHA1Before":"80a91aaf941bcb1c24a7d672838ac73e9ebb2e40","SHA1After":"a0d3f9a45a835f97aef7fe0872387d8cfb5c25a4","Changes":[{"Position":2433413,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.40","SHA1Before":"04bd0cb28df6630b518f42a3f9c2caa4a9359fbc","SHA1After":"13c91cf1d4609959771fd137b9a86a5ca365e1b6","Changes":[{"Position":2432934,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.32","SHA1Before":"a02519c1007ee6723947c262c720d63c619f633e","SHA1After":"f3007471ca8734c29783c25f0bb49949a783a44","Changes":[{"Position":2432806,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.6.28","SHA1Before":"0b19cb17a62c3ea0efce0fb675a1d3b17845cba3","SHA1After":"260948656725446b818ea668273ceff02ddfb44d","Changes":[{"Position":2401678,"Content":[116]}]}]},"FileCommonModifyInfos":{"WeChatWin.dll":[{"Name":"WeChatWin.dll","StartVersion":"2.8.0.88","EndVersion":"","ReplacePatterns":[{"Search":[0,133,192,116,123,139,200,232],"Replace":[0,133,192,235,123,139,200,232]},{"Search":[192,195,204,204,204,204,204,204,204,204,204,204,204,204,204,204,85,139,236,131,236,20,83,86,87,106,255,15,87,192,199],"Replace":[192,195,204,204,204,204,204,204,204,204,204,204,204,204,204,204,195,139,236,131,236,20,83,86,87,106,255,15,87,192,199]}]},{"Name":"WeChatWin.dll","StartVersion":"2.7.0.00","EndVersion":"2.8.0.88","ReplacePatterns":[{"Search":[0,133,192,116,50,185],"Replace":[0,133,192,235,50,185]},{"Search":[192,195,204,204,204,204,204,204,204,204,204,204,204,204,204,204,85,139,236,131,236,20,83,86,87,106,255,15,87,192,199],"Replace":[192,195,204,204,204,204,204,204,204,204,204,204,204,204,204,204,195,139,236,131,236,20,83,86,87,106,255,15,87,192,199]}]}]}},"QQ":{"Name":"QQ","FileTargetInfos":{"IM.dll":{"Name":"IM.dll","RelativePath":"Bin\\IM.dll","Memo":null}},"FileModifyInfos":{"IM.dll":[{"Name":"IM.dll","Version":"9.2.3.26592","SHA1Before":"9114e7869572b4b868afcbc8b28eae932559ec60","SHA1After":"42e15175fd53768bb48772dc69fb07a4eac5a623","Changes":[{"Position":371605,"Content":[235,9,144,144,144]},{"Position":372146,"Content":[235,9,144,144,144]},{"Position":372576,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.2.2.26569","SHA1Before":"434254e76c520789558e075af677821258536311","SHA1After":"237c9e489a97858a175f0f7c72ade4ebcbac7a69","Changes":[{"Position":371146,"Content":[235,9,144,144,144]},{"Position":371687,"Content":[235,9,144,144,144]},{"Position":372117,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.2.1.26546","SHA1Before":"8d8ea2c2cbf43f5acf8d684b153e90035352d5f5","SHA1After":"7d194dd5be03982b533d7375c93d9a72587fe28d","Changes":[{"Position":369545,"Content":[235,9,144,144,144]},{"Position":370086,"Content":[235,9,144,144,144]},{"Position":370516,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.2.0.26453","SHA1Before":"c1935ca6347b0c2a7e6108a7f8ee0643d39deb66","SHA1After":"42811188a7e7b346a6a3c1066936b98c747acaf6","Changes":[{"Position":353794,"Content":[235,9,144,144,144]},{"Position":354335,"Content":[235,9,144,144,144]},{"Position":354767,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.2.0.26389","SHA1Before":"6f8855fb80acfa456f8f69989fe949308fe4d154","SHA1After":"f6b8e05a178b9b10ba17c597fa0a44b7a2a966a8","Changes":[{"Position":356808,"Content":[235,9,144,144,144]},{"Position":357349,"Content":[235,9,144,144,144]},{"Position":357781,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.1.9.26361","SHA1Before":"022d3433d13d07a354c38816f61cb0b7ac60d3fd","SHA1After":"873a57c1fb51cdd099c8cb7108b5ab5cb4459557","Changes":[{"Position":354270,"Content":[235,9,144,144,144]},{"Position":354811,"Content":[235,9,144,144,144]},{"Position":355243,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.1.9.26346","SHA1Before":"895eb70f707b8222e6460c91492b1281e525059b","SHA1After":"0bb83990e2b5b5f23b7b43249941ff638201af54","Changes":[{"Position":354270,"Content":[235,9,144,144,144]},{"Position":354811,"Content":[235,9,144,144,144]},{"Position":355243,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.1.8.26211","SHA1Before":"a950d3cf5e8925f7775624271105ef78d9c5cb57","SHA1After":"dffc1cb87b91e6467e13c935611f2f7fd76b9a8d","Changes":[{"Position":337135,"Content":[235,9,144,144,144]},{"Position":337676,"Content":[235,9,144,144,144]},{"Position":338108,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.1.7.25980","SHA1Before":"c6632339fbe675312a70ae4620e70699c258cd36","SHA1After":"e9ddc5cc681950796fc8fe4c55f580428c890b51","Changes":[{"Position":327839,"Content":[235,9,144,144,144]},{"Position":328380,"Content":[235,9,144,144,144]},{"Position":328812,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.0.4.23786","SHA1Before":"69a714f4eadb09f1453f6f022d4adbcd801cfab8","SHA1After":"b48e77a924076b3ebdffc4af514c868c551d2bca","Changes":[{"Position":318321,"Content":[235,7,144,144,144]},{"Position":318862,"Content":[235,7,144,144,144]},{"Position":319379,"Content":[235,7,144,144,144]}]}]},"FileCommonModifyInfos":{"IM.dll":[{"Name":"IM.dll","StartVersion":"9.1.7.00000","EndVersion":"","ReplacePatterns":[{"Search":[28,233,157,0,0,0,139,69,232,141,85,236,82,137,93,236,104,63,63,63,84,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Replace":[28,233,157,0,0,0,139,69,232,141,85,236,82,137,93,236,235,9,144,144,144,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12]},{"Search":[28,233,157,0,0,0,139,69,240,141,85,236,82,137,93,236,104,63,63,63,84,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Replace":[28,233,157,0,0,0,139,69,240,141,85,236,82,137,93,236,235,9,144,144,144,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12]},{"Search":[139,117,20,141,77,244,131,196,32,51,255,137,125,244,139,6,81,104,63,63,63,84,86,255,80,120,133,192,121,57,141,69,12,199,69,12],"Replace":[139,117,20,141,77,244,131,196,32,51,255,137,125,244,139,6,235,8,144,144,144,144,86,255,80,120,133,192,121,57,141,69,12,199,69,12]}]}]}},"TIM":{"Name":"TIM","FileTargetInfos":{"IM.dll":{"Name":"IM.dll","RelativePath":"Bin\\IM.dll","Memo":null}},"FileModifyInfos":{"IM.dll":[{"Name":"IM.dll","Version":"2.3.2.21173","SHA1Before":"ecf3e69f3fb100ffe2fee095ffded591b9781024","SHA1After":"0514d1304e7ac46b4d33386ec3313888f5ae7171","Changes":[{"Position":317322,"Content":[235,9,144,144,144]},{"Position":317863,"Content":[235,9,144,144,144]},{"Position":318295,"Content":[235,8,144,144,144,144]}]}]},"FileCommonModifyInfos":{"IM.dll":[{"Name":"IM.dll","StartVersion":"3.0.0.00000","EndVersion":"","ReplacePatterns":[{"Search":[28,233,157,0,0,0,139,69,232,141,85,236,82,137,93,236,104,63,63,63,84,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Replace":[28,233,157,0,0,0,139,69,232,141,85,236,82,137,93,236,235,9,144,144,144,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12]},{"Search":[28,233,157,0,0,0,139,69,240,141,85,236,82,137,93,236,104,63,63,63,84,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Replace":[28,233,157,0,0,0,139,69,240,141,85,236,82,137,93,236,235,9,144,144,144,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12]},{"Search":[139,117,20,141,77,244,131,196,32,51,255,137,125,244,139,6,81,104,63,63,63,84,86,255,80,120,133,192,121,57,141,69,12,199,69,12],"Replace":[139,117,20,141,77,244,131,196,32,51,255,137,125,244,139,6,235,8,144,144,144,144,86,255,80,120,133,192,121,57,141,69,12,199,69,12]}]}]}},"QQLite":{"Name":"QQLite","FileTargetInfos":{"IM.dll":{"Name":"IM.dll","RelativePath":"Bin\\IM.dll","Memo":null}},"FileModifyInfos":{"IM.dll":[{"Name":"IM.dll","Version":"7.9.14314.0","SHA1Before":"2e97d7671963fa148a1beeda6ce4964314310593","SHA1After":"723c008fb53435ead20fa6f2e951c9a4a8ff46da","Changes":[{"Position":148741,"Content":[235,2,144,144]},{"Position":149689,"Content":[235,2,144,144]}]},{"Name":"IM.dll","Version":"7.9.14308.0","SHA1Before":"b8a7a873178706b97be11c25f13bcf09e9e578a2","SHA1After":"c5bf533c7af6996b42d1fb2a0fb3f26dfd52f8bf","Changes":[{"Position":148741,"Content":[235,2,144,144]},{"Position":149689,"Content":[235,2,144,144]}]}]},"FileCommonModifyInfos":null}},"LatestVersion":"0.8","Notice":""}
+ {"Apps":{"Wechat":{"Name":"Wechat","FileTargetInfos":{"WeChatWin.dll":{"Name":"WeChatWin.dll","RelativePath":"WeChatWin.dll","Memo":null}},"FileModifyInfos":{"WeChatWin.dll":[{"Name":"WeChatWin.dll","Version":"2.8.0.112","SHA1Before":"7497fc006f061799138aa33419280e41891a7981","SHA1After":"07e681be40af32738d59a9332fe966c83c05e455","Changes":[{"Position":2682233,"Content":[235]},{"Position":8289040,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.8.0.106","SHA1Before":"e772c81c8a1b79cac77b22dbe67b375fa340ba30","SHA1After":"bcbc491910f07cb995ef154a281450f2d052e90b","Changes":[{"Position":2658457,"Content":[235]},{"Position":8280416,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.8.0.88","SHA1Before":"b34c73e38cfec186890b58caac5fc9962377cd9b","SHA1After":"8c108e92de0b6b4d9e61ce38ab8dd339a27e505b","Changes":[{"Position":2655369,"Content":[235]},{"Position":8273280,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.8.0.82","SHA1Before":"c359cc1a391441d261753f2844f9156638df8631","SHA1After":"d1b4dee8f7f91e34d68501987fd0675b33fe85da","Changes":[{"Position":2645961,"Content":[235]},{"Position":8263344,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.2.78","SHA1Before":"26a5c5503f1e176676da5657c12812da8aaa0243","SHA1After":"d338215a815c09755c04949995ec3e4eab8dce60","Changes":[{"Position":2645673,"Content":[235]},{"Position":8262528,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.2.76","SHA1Before":"0003c7b2c0136a0eb2a6cfc2c694cb57b04b5517","SHA1After":"88af6055a0f4d3bdaa6f717ec8b263d4418487b6","Changes":[{"Position":2644905,"Content":[235]},{"Position":8261024,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.88","SHA1Before":"034059bad50dd793140952391bfa7936133e69b4","SHA1After":"dd6d80c30ca9e0ea9f7d2f1add498fc9aa4bc7a0","Changes":[{"Position":2499465,"Content":[235]},{"Position":7952304,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.85","SHA1Before":"de0df4e138b72460450f66c029e33f4510f5e2df","SHA1After":"fbd35720aaff3cdcfd3ff18ea503dc06450e5c99","Changes":[{"Position":2499465,"Content":[235]},{"Position":7952000,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.82","SHA1Before":"20e111a18872bf6c7148a897c11da26c1ec95520","SHA1After":"1e0741d325ca6b1cd2402b829a3d13a2524af617","Changes":[{"Position":2499465,"Content":[235]},{"Position":7951952,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.74","SHA1Before":"b1eaf7edc074a88be5d0f89230436cc2084d24d2","SHA1After":"eb3d74ccd87a09059a005f4972861898fc3de463","Changes":[{"Position":2499465,"Content":[235]},{"Position":7951696,"Content":[195]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.65","SHA1Before":"8346b97d264725da924d240c6eb77df3e693385e","SHA1After":"42bab2c9c79ef4f2088c00ea6d817973e14a5e6e","Changes":[{"Position":2495545,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.59","SHA1Before":"df954d403edaca89cd5394927a325a0023e93281","SHA1After":"6aa22460c91bb5c5e2f0ec1af99b8a5f6d4318c0","Changes":[{"Position":2496073,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.1.43","SHA1Before":"39cd9e09e1a3eac09e6808749bff525c9e3216ce","SHA1After":"7b829f1ff0217e346a80f9510fdd7634ddd49445","Changes":[{"Position":2494169,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.0.70","SHA1Before":"3b0601864aff3c1d792f812ad1ca05f02aa761e3","SHA1After":"1e8734d32b0a8c12758e30f99c77f729991fb071","Changes":[{"Position":2475657,"Content":[235]}]},{"Name":"WeChatWin.dll","Version":"2.7.0.65","SHA1Before":"063c2e05a0df1bdb8987c2d978d93499bd2052ba","SHA1After":"5ed4c09a4f18643b967f063a824d7e65d0567f8a","Changes":[{"Position":2475449,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.68","SHA1Before":"2e9417f4276b12fe32ca7b4fee49272a4a2af334","SHA1After":"699602ee3cbb9ae5714f6e6ebc658c875a6c66e6","Changes":[{"Position":2454006,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.65","SHA1Before":"e01f6855a96c12c30808960903ed199a33e4952c","SHA1After":"d9120569cfd0433aebea107d7b90805cbbac7518","Changes":[{"Position":2454265,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.52","SHA1Before":"88131302f664df6a657c9ca49d152da536fe5729","SHA1After":"8d1454b73831644181e962c1fa0ea4e2da4124a3","Changes":[{"Position":2453049,"Content":[117]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.51","SHA1Before":"d0a5517b1292a751501b00b4b1f0702db2d9fc30","SHA1After":"53e7b1525d49bf2c3250a8131ff0ba2510779b78","Changes":[{"Position":2452614,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.8.37","SHA1Before":"7e01f8b04a158a4a50bc5a6e67c2fb8b02233170","SHA1After":"a1895004415fe9bcd7e690bd6e482b833b515599","Changes":[{"Position":2452614,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.57","SHA1Before":"80a91aaf941bcb1c24a7d672838ac73e9ebb2e40","SHA1After":"a0d3f9a45a835f97aef7fe0872387d8cfb5c25a4","Changes":[{"Position":2433413,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.40","SHA1Before":"04bd0cb28df6630b518f42a3f9c2caa4a9359fbc","SHA1After":"13c91cf1d4609959771fd137b9a86a5ca365e1b6","Changes":[{"Position":2432934,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.7.32","SHA1Before":"a02519c1007ee6723947c262c720d63c619f633e","SHA1After":"f3007471ca8734c29783c25f0bb49949a783a44","Changes":[{"Position":2432806,"Content":[116]}]},{"Name":"WeChatWin.dll","Version":"2.6.6.28","SHA1Before":"0b19cb17a62c3ea0efce0fb675a1d3b17845cba3","SHA1After":"260948656725446b818ea668273ceff02ddfb44d","Changes":[{"Position":2401678,"Content":[116]}]}]},"FileCommonModifyInfos":{"WeChatWin.dll":[{"Name":"WeChatWin.dll","StartVersion":"2.8.0.88","EndVersion":"","ReplacePatterns":[{"Search":[0,133,192,116,123,139,200,232],"Replace":[0,133,192,235,123,139,200,232],"Category":"防撤回"},{"Search":[192,195,204,204,204,204,204,204,204,204,204,204,204,204,204,204,85,139,236,131,236,20,83,86,87,106,255,15,87,192,199],"Replace":[192,195,204,204,204,204,204,204,204,204,204,204,204,204,204,204,195,139,236,131,236,20,83,86,87,106,255,15,87,192,199],"Category":"多开"}]},{"Name":"WeChatWin.dll","StartVersion":"2.7.0.00","EndVersion":"2.8.0.88","ReplacePatterns":[{"Search":[0,133,192,116,50,185],"Replace":[0,133,192,235,50,185],"Category":"防撤回"},{"Search":[192,195,204,204,204,204,204,204,204,204,204,204,204,204,204,204,85,139,236,131,236,20,83,86,87,106,255,15,87,192,199],"Replace":[192,195,204,204,204,204,204,204,204,204,204,204,204,204,204,204,195,139,236,131,236,20,83,86,87,106,255,15,87,192,199],"Category":"多开"}]}]}},"QQ":{"Name":"QQ","FileTargetInfos":{"IM.dll":{"Name":"IM.dll","RelativePath":"Bin\\IM.dll","Memo":null}},"FileModifyInfos":{"IM.dll":[{"Name":"IM.dll","Version":"9.2.3.26592","SHA1Before":"9114e7869572b4b868afcbc8b28eae932559ec60","SHA1After":"42e15175fd53768bb48772dc69fb07a4eac5a623","Changes":[{"Position":371605,"Content":[235,9,144,144,144]},{"Position":372146,"Content":[235,9,144,144,144]},{"Position":372576,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.2.2.26569","SHA1Before":"434254e76c520789558e075af677821258536311","SHA1After":"237c9e489a97858a175f0f7c72ade4ebcbac7a69","Changes":[{"Position":371146,"Content":[235,9,144,144,144]},{"Position":371687,"Content":[235,9,144,144,144]},{"Position":372117,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.2.1.26546","SHA1Before":"8d8ea2c2cbf43f5acf8d684b153e90035352d5f5","SHA1After":"7d194dd5be03982b533d7375c93d9a72587fe28d","Changes":[{"Position":369545,"Content":[235,9,144,144,144]},{"Position":370086,"Content":[235,9,144,144,144]},{"Position":370516,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.2.0.26453","SHA1Before":"c1935ca6347b0c2a7e6108a7f8ee0643d39deb66","SHA1After":"42811188a7e7b346a6a3c1066936b98c747acaf6","Changes":[{"Position":353794,"Content":[235,9,144,144,144]},{"Position":354335,"Content":[235,9,144,144,144]},{"Position":354767,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.2.0.26389","SHA1Before":"6f8855fb80acfa456f8f69989fe949308fe4d154","SHA1After":"f6b8e05a178b9b10ba17c597fa0a44b7a2a966a8","Changes":[{"Position":356808,"Content":[235,9,144,144,144]},{"Position":357349,"Content":[235,9,144,144,144]},{"Position":357781,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.1.9.26361","SHA1Before":"022d3433d13d07a354c38816f61cb0b7ac60d3fd","SHA1After":"873a57c1fb51cdd099c8cb7108b5ab5cb4459557","Changes":[{"Position":354270,"Content":[235,9,144,144,144]},{"Position":354811,"Content":[235,9,144,144,144]},{"Position":355243,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.1.9.26346","SHA1Before":"895eb70f707b8222e6460c91492b1281e525059b","SHA1After":"0bb83990e2b5b5f23b7b43249941ff638201af54","Changes":[{"Position":354270,"Content":[235,9,144,144,144]},{"Position":354811,"Content":[235,9,144,144,144]},{"Position":355243,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.1.8.26211","SHA1Before":"a950d3cf5e8925f7775624271105ef78d9c5cb57","SHA1After":"dffc1cb87b91e6467e13c935611f2f7fd76b9a8d","Changes":[{"Position":337135,"Content":[235,9,144,144,144]},{"Position":337676,"Content":[235,9,144,144,144]},{"Position":338108,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.1.7.25980","SHA1Before":"c6632339fbe675312a70ae4620e70699c258cd36","SHA1After":"e9ddc5cc681950796fc8fe4c55f580428c890b51","Changes":[{"Position":327839,"Content":[235,9,144,144,144]},{"Position":328380,"Content":[235,9,144,144,144]},{"Position":328812,"Content":[235,8,144,144,144,144]}]},{"Name":"IM.dll","Version":"9.0.4.23786","SHA1Before":"69a714f4eadb09f1453f6f022d4adbcd801cfab8","SHA1After":"b48e77a924076b3ebdffc4af514c868c551d2bca","Changes":[{"Position":318321,"Content":[235,7,144,144,144]},{"Position":318862,"Content":[235,7,144,144,144]},{"Position":319379,"Content":[235,7,144,144,144]}]}]},"FileCommonModifyInfos":{"IM.dll":[{"Name":"IM.dll","StartVersion":"9.1.7.00000","EndVersion":"","ReplacePatterns":[{"Search":[28,233,157,0,0,0,139,69,232,141,85,236,82,137,93,236,104,63,63,63,84,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Replace":[28,233,157,0,0,0,139,69,232,141,85,236,82,137,93,236,235,9,144,144,144,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Category":"防撤回"},{"Search":[28,233,157,0,0,0,139,69,240,141,85,236,82,137,93,236,104,63,63,63,84,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Replace":[28,233,157,0,0,0,139,69,240,141,85,236,82,137,93,236,235,9,144,144,144,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Category":"防撤回"},{"Search":[139,117,20,141,77,244,131,196,32,51,255,137,125,244,139,6,81,104,63,63,63,84,86,255,80,120,133,192,121,57,141,69,12,199,69,12],"Replace":[139,117,20,141,77,244,131,196,32,51,255,137,125,244,139,6,235,8,144,144,144,144,86,255,80,120,133,192,121,57,141,69,12,199,69,12],"Category":"防撤回"}]}]}},"TIM":{"Name":"TIM","FileTargetInfos":{"IM.dll":{"Name":"IM.dll","RelativePath":"Bin\\IM.dll","Memo":null}},"FileModifyInfos":{"IM.dll":[{"Name":"IM.dll","Version":"2.3.2.21173","SHA1Before":"ecf3e69f3fb100ffe2fee095ffded591b9781024","SHA1After":"0514d1304e7ac46b4d33386ec3313888f5ae7171","Changes":[{"Position":317322,"Content":[235,9,144,144,144]},{"Position":317863,"Content":[235,9,144,144,144]},{"Position":318295,"Content":[235,8,144,144,144,144]}]}]},"FileCommonModifyInfos":{"IM.dll":[{"Name":"IM.dll","StartVersion":"3.0.0.00000","EndVersion":"","ReplacePatterns":[{"Search":[28,233,157,0,0,0,139,69,232,141,85,236,82,137,93,236,104,63,63,63,84,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Replace":[28,233,157,0,0,0,139,69,232,141,85,236,82,137,93,236,235,9,144,144,144,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Category":"防撤回"},{"Search":[28,233,157,0,0,0,139,69,240,141,85,236,82,137,93,236,104,63,63,63,84,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Replace":[28,233,157,0,0,0,139,69,240,141,85,236,82,137,93,236,235,9,144,144,144,139,8,80,255,81,120,133,192,121,45,141,69,12,199,69,12],"Category":"防撤回"},{"Search":[139,117,20,141,77,244,131,196,32,51,255,137,125,244,139,6,81,104,63,63,63,84,86,255,80,120,133,192,121,57,141,69,12,199,69,12],"Replace":[139,117,20,141,77,244,131,196,32,51,255,137,125,244,139,6,235,8,144,144,144,144,86,255,80,120,133,192,121,57,141,69,12,199,69,12],"Category":"防撤回"}]}]}},"QQLite":{"Name":"QQLite","FileTargetInfos":{"IM.dll":{"Name":"IM.dll","RelativePath":"Bin\\IM.dll","Memo":null}},"FileModifyInfos":{"IM.dll":[{"Name":"IM.dll","Version":"7.9.14314.0","SHA1Before":"2e97d7671963fa148a1beeda6ce4964314310593","SHA1After":"723c008fb53435ead20fa6f2e951c9a4a8ff46da","Changes":[{"Position":148741,"Content":[235,2,144,144]},{"Position":149689,"Content":[235,2,144,144]}]},{"Name":"IM.dll","Version":"7.9.14308.0","SHA1Before":"b8a7a873178706b97be11c25f13bcf09e9e578a2","SHA1After":"c5bf533c7af6996b42d1fb2a0fb3f26dfd52f8bf","Changes":[{"Position":148741,"Content":[235,2,144,144]},{"Position":149689,"Content":[235,2,144,144]}]}]},"FileCommonModifyInfos":null}},"LatestVersion":"0.9","Notice":""}
\ No newline at end of file
diff --git a/RevokeMsgPatcher/RevokeMsgPatcher.csproj b/RevokeMsgPatcher/RevokeMsgPatcher.csproj
index 7532fdc..3601ce4 100644
--- a/RevokeMsgPatcher/RevokeMsgPatcher.csproj
+++ b/RevokeMsgPatcher/RevokeMsgPatcher.csproj
@@ -63,6 +63,7 @@
FormPatchInfo.cs
+