JsonData.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
  1. using RevokeMsgPatcher.Model;
  2. using System.Collections.Generic;
  3. using System.Web.Script.Serialization;
  4. namespace RevokeMsgPatcher
  5. {
  6. /// <summary>
  7. /// 补丁信息
  8. /// </summary>
  9. public class JsonData
  10. {
  11. public Bag Bag()
  12. {
  13. return new Bag
  14. {
  15. Apps = AppConfig(),
  16. LatestVersion = "0.6",
  17. Notice = "公告"
  18. };
  19. }
  20. public string BagJson()
  21. {
  22. JavaScriptSerializer serializer = new JavaScriptSerializer();
  23. return serializer.Serialize(Bag());
  24. }
  25. public Dictionary<string, App> AppConfig()
  26. {
  27. return new Dictionary<string, App>
  28. {
  29. { "Wechat" , Wechat() },
  30. { "QQ" , QQ() },
  31. { "TIM" , TIM() },
  32. { "QQLite" , QQLite() }
  33. };
  34. }
  35. public string AppConfigJson()
  36. {
  37. JavaScriptSerializer serializer = new JavaScriptSerializer();
  38. return serializer.Serialize(AppConfig());
  39. }
  40. public App Wechat()
  41. {
  42. return new App
  43. {
  44. Name = "Wechat",
  45. FileTargetInfos = new Dictionary<string, TargetInfo>
  46. {
  47. {
  48. "WeChatWin.dll",
  49. new TargetInfo
  50. {
  51. Name = "WeChatWin.dll",
  52. RelativePath = "WeChatWin.dll"
  53. }
  54. }
  55. },
  56. FileModifyInfos = new Dictionary<string, List<ModifyInfo>>
  57. {
  58. {
  59. "WeChatWin.dll",
  60. new List<ModifyInfo>
  61. {
  62. new ModifyInfo {
  63. Name="WeChatWin.dll",
  64. Version="2.7.1.85",
  65. SHA1Before="de0df4e138b72460450f66c029e33f4510f5e2df",
  66. SHA1After="fbd35720aaff3cdcfd3ff18ea503dc06450e5c99",
  67. Changes = new List<Change>
  68. {
  69. new Change
  70. {
  71. Position =0x00262389,
  72. Content =new byte[] { 0xEB }
  73. },
  74. new Change
  75. {
  76. Position =0x00795680,
  77. Content =new byte[] { 0xC3 }
  78. }
  79. }
  80. },
  81. new ModifyInfo {
  82. Name="WeChatWin.dll",
  83. Version="2.7.1.82",
  84. SHA1Before="20e111a18872bf6c7148a897c11da26c1ec95520",
  85. SHA1After="1e0741d325ca6b1cd2402b829a3d13a2524af617",
  86. Changes = new List<Change>
  87. {
  88. new Change
  89. {
  90. Position =0x00262389,
  91. Content =new byte[] { 0xEB }
  92. },
  93. new Change
  94. {
  95. Position =0x00795650,
  96. Content =new byte[] { 0xC3 }
  97. }
  98. }
  99. },
  100. new ModifyInfo {
  101. Name="WeChatWin.dll",
  102. Version="2.7.1.74",
  103. SHA1Before="b1eaf7edc074a88be5d0f89230436cc2084d24d2",
  104. SHA1After="eb3d74ccd87a09059a005f4972861898fc3de463",
  105. Changes = new List<Change>
  106. {
  107. new Change
  108. {
  109. Position =0x00262389,
  110. Content =new byte[] { 0xEB }
  111. },
  112. new Change
  113. {
  114. Position =0x00795550,
  115. Content =new byte[] { 0xC3 }
  116. }
  117. }
  118. },
  119. new ModifyInfo {
  120. Name="WeChatWin.dll",
  121. Version="2.7.1.65",
  122. SHA1Before="8346b97d264725da924d240c6eb77df3e693385e",
  123. SHA1After="42bab2c9c79ef4f2088c00ea6d817973e14a5e6e",
  124. Changes = new List<Change>
  125. {
  126. new Change
  127. {
  128. Position =2495545,
  129. Content =new byte[] { 235}
  130. }
  131. }
  132. },
  133. new ModifyInfo {Name="WeChatWin.dll",Version="2.7.1.59",SHA1Before="df954d403edaca89cd5394927a325a0023e93281",SHA1After="6aa22460c91bb5c5e2f0ec1af99b8a5f6d4318c0",Changes = new List<Change> { new Change {Position=2496073,Content=new byte[] { 235} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.7.1.43",SHA1Before="39cd9e09e1a3eac09e6808749bff525c9e3216ce",SHA1After="7b829f1ff0217e346a80f9510fdd7634ddd49445",Changes = new List<Change> { new Change {Position=2494169,Content=new byte[] { 235} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.7.0.70",SHA1Before="3b0601864aff3c1d792f812ad1ca05f02aa761e3",SHA1After="1e8734d32b0a8c12758e30f99c77f729991fb071",Changes = new List<Change> { new Change {Position=2475657,Content=new byte[] { 235} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.7.0.65",SHA1Before="063c2e05a0df1bdb8987c2d978d93499bd2052ba",SHA1After="5ed4c09a4f18643b967f063a824d7e65d0567f8a",Changes = new List<Change> { new Change {Position=2475449,Content=new byte[] { 117} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.68",SHA1Before="2e9417f4276b12fe32ca7b4fee49272a4a2af334",SHA1After="699602ee3cbb9ae5714f6e6ebc658c875a6c66e6",Changes = new List<Change> { new Change {Position=2454006,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.65",SHA1Before="e01f6855a96c12c30808960903ed199a33e4952c",SHA1After="d9120569cfd0433aebea107d7b90805cbbac7518",Changes = new List<Change> { new Change {Position=2454265,Content=new byte[] { 117} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.52",SHA1Before="88131302f664df6a657c9ca49d152da536fe5729",SHA1After="8d1454b73831644181e962c1fa0ea4e2da4124a3",Changes = new List<Change> { new Change {Position=2453049,Content=new byte[] { 117} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.51",SHA1Before="d0a5517b1292a751501b00b4b1f0702db2d9fc30",SHA1After="53e7b1525d49bf2c3250a8131ff0ba2510779b78",Changes = new List<Change> { new Change {Position=2452614,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.8.37",SHA1Before="7e01f8b04a158a4a50bc5a6e67c2fb8b02233170",SHA1After="a1895004415fe9bcd7e690bd6e482b833b515599",Changes = new List<Change> { new Change {Position=2452614,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.7.57",SHA1Before="80a91aaf941bcb1c24a7d672838ac73e9ebb2e40",SHA1After="a0d3f9a45a835f97aef7fe0872387d8cfb5c25a4",Changes = new List<Change> { new Change {Position=2433413,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.7.40",SHA1Before="04bd0cb28df6630b518f42a3f9c2caa4a9359fbc",SHA1After="13c91cf1d4609959771fd137b9a86a5ca365e1b6",Changes = new List<Change> { new Change {Position=2432934,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.7.32",SHA1Before="a02519c1007ee6723947c262c720d63c619f633e",SHA1After="f3007471ca8734c29783c25f0bb49949a783a44",Changes = new List<Change> { new Change {Position=2432806,Content=new byte[] { 116} } } },new ModifyInfo {Name="WeChatWin.dll",Version="2.6.6.28",SHA1Before="0b19cb17a62c3ea0efce0fb675a1d3b17845cba3",SHA1After="260948656725446b818ea668273ceff02ddfb44d",Changes = new List<Change> { new Change {Position=2401678,Content=new byte[] { 116} } } }
  134. }
  135. }
  136. }
  137. };
  138. }
  139. public App QQ()
  140. {
  141. return new App
  142. {
  143. Name = "QQ",
  144. FileTargetInfos = new Dictionary<string, TargetInfo>
  145. {
  146. {
  147. "IM.dll",
  148. new TargetInfo
  149. {
  150. Name = "IM.dll",
  151. RelativePath = @"Bin\IM.dll"
  152. }
  153. }
  154. },
  155. FileModifyInfos = new Dictionary<string, List<ModifyInfo>>
  156. {
  157. {
  158. "IM.dll",
  159. new List<ModifyInfo>
  160. {
  161. new ModifyInfo
  162. {
  163. Name = "IM.dll",
  164. Version = "9.2.0.26389",
  165. SHA1Before = "6f8855fb80acfa456f8f69989fe949308fe4d154",
  166. SHA1After = "f6b8e05a178b9b10ba17c597fa0a44b7a2a966a8",
  167. Changes = new List<Change>
  168. {
  169. new Change
  170. {
  171. Position = 0x000571C8,
  172. Content = new byte[] { 0xEB, 0x09, 0x90, 0x90, 0x90 }
  173. },
  174. new Change
  175. {
  176. Position = 0x000573E5,
  177. Content = new byte[] { 0xEB, 0x09, 0x90, 0x90, 0x90 }
  178. },
  179. new Change
  180. {
  181. Position = 0x00057595,
  182. Content = new byte[] { 0xEB, 0x08, 0x90, 0x90, 0x90, 0x90 }
  183. }
  184. }
  185. },
  186. new ModifyInfo
  187. {
  188. Name = "IM.dll",
  189. Version = "9.1.9.26361",
  190. SHA1Before = "022d3433d13d07a354c38816f61cb0b7ac60d3fd",
  191. SHA1After = "873a57c1fb51cdd099c8cb7108b5ab5cb4459557",
  192. Changes = new List<Change>
  193. {
  194. new Change
  195. {
  196. Position = 0x000567DE,
  197. Content = new byte[] { 0xEB, 0x09, 0x90, 0x90, 0x90 }
  198. },
  199. new Change
  200. {
  201. Position = 0x000569FB,
  202. Content = new byte[] { 0xEB, 0x09, 0x90, 0x90, 0x90 }
  203. },
  204. new Change
  205. {
  206. Position = 0x00056BAB,
  207. Content = new byte[] { 0xEB, 0x08, 0x90, 0x90, 0x90, 0x90 }
  208. }
  209. }
  210. },
  211. new ModifyInfo
  212. {
  213. Name = "IM.dll",
  214. Version = "9.1.9.26346",
  215. SHA1Before = "895eb70f707b8222e6460c91492b1281e525059b",
  216. SHA1After = "0bb83990e2b5b5f23b7b43249941ff638201af54",
  217. Changes = new List<Change>
  218. {
  219. new Change
  220. {
  221. Position = 0x000567DE,
  222. Content = new byte[] { 0xEB, 0x09, 0x90, 0x90, 0x90 }
  223. },
  224. new Change
  225. {
  226. Position = 0x000569FB,
  227. Content = new byte[] { 0xEB, 0x09, 0x90, 0x90, 0x90 }
  228. },
  229. new Change
  230. {
  231. Position = 0x00056BAB,
  232. Content = new byte[] { 0xEB, 0x08, 0x90, 0x90, 0x90, 0x90 }
  233. }
  234. }
  235. },
  236. new ModifyInfo
  237. {
  238. Name = "IM.dll",
  239. Version = "9.1.8.26211",
  240. SHA1Before = "a950d3cf5e8925f7775624271105ef78d9c5cb57",
  241. SHA1After = "dffc1cb87b91e6467e13c935611f2f7fd76b9a8d",
  242. Changes = new List<Change>
  243. {
  244. new Change
  245. {
  246. Position = 0x000524EF,
  247. Content = new byte[] { 0xEB, 0x09, 0x90, 0x90, 0x90 }
  248. },
  249. new Change
  250. {
  251. Position = 0x0005270C,
  252. Content = new byte[] { 0xEB, 0x09, 0x90, 0x90, 0x90 }
  253. },
  254. new Change
  255. {
  256. Position = 0x000528BC,
  257. Content = new byte[] { 0xEB, 0x08, 0x90, 0x90, 0x90, 0x90 }
  258. }
  259. }
  260. },
  261. new ModifyInfo
  262. {
  263. Name = "IM.dll",
  264. Version = "9.1.7.25980",
  265. SHA1Before = "c6632339fbe675312a70ae4620e70699c258cd36",
  266. SHA1After = "e9ddc5cc681950796fc8fe4c55f580428c890b51",
  267. Changes = new List<Change>
  268. {
  269. new Change
  270. {
  271. Position = 0x0005009F,
  272. Content = new byte[] { 0xEB, 0x09, 0x90, 0x90, 0x90 }
  273. },
  274. new Change
  275. {
  276. Position = 0x000502BC,
  277. Content = new byte[] { 0xEB, 0x09, 0x90, 0x90, 0x90 }
  278. },
  279. new Change
  280. {
  281. Position = 0x0005046C,
  282. Content = new byte[] { 0xEB, 0x08, 0x90, 0x90, 0x90, 0x90 }
  283. }
  284. }
  285. }
  286. }
  287. }
  288. }
  289. };
  290. }
  291. public App TIM()
  292. {
  293. return new App
  294. {
  295. Name = "TIM",
  296. FileTargetInfos = new Dictionary<string, TargetInfo>
  297. {
  298. {
  299. "IM.dll",
  300. new TargetInfo
  301. {
  302. Name = "IM.dll",
  303. RelativePath = @"Bin\IM.dll"
  304. }
  305. }
  306. },
  307. FileModifyInfos = new Dictionary<string, List<ModifyInfo>>
  308. {
  309. {
  310. "IM.dll",
  311. new List<ModifyInfo>
  312. {
  313. new ModifyInfo
  314. {
  315. Name = "IM.dll",
  316. Version = "2.3.2.21173",
  317. SHA1Before = "ecf3e69f3fb100ffe2fee095ffded591b9781024",
  318. SHA1After = "0514d1304e7ac46b4d33386ec3313888f5ae7171",
  319. Changes = new List<Change>
  320. {
  321. new Change
  322. {
  323. Position = 0x0004D78A,
  324. Content = new byte[] { 0xEB, 0x09, 0x90, 0x90, 0x90 }
  325. },
  326. new Change
  327. {
  328. Position = 0x0004D9A7,
  329. Content = new byte[] { 0xEB, 0x09, 0x90, 0x90, 0x90 }
  330. },
  331. new Change
  332. {
  333. Position = 0x0004DB57,
  334. Content = new byte[] { 0xEB, 0x08, 0x90, 0x90, 0x90, 0x90 }
  335. }
  336. }
  337. }
  338. }
  339. }
  340. }
  341. };
  342. }
  343. public App QQLite()
  344. {
  345. return new App
  346. {
  347. Name = "QQLite",
  348. FileTargetInfos = new Dictionary<string, TargetInfo>
  349. {
  350. {
  351. "IM.dll",
  352. new TargetInfo
  353. {
  354. Name = "IM.dll",
  355. RelativePath = @"Bin\IM.dll"
  356. }
  357. }
  358. },
  359. FileModifyInfos = new Dictionary<string, List<ModifyInfo>>
  360. {
  361. {
  362. "IM.dll",
  363. new List<ModifyInfo>
  364. {
  365. new ModifyInfo
  366. {
  367. Name = "IM.dll",
  368. Version = "7.9.14314.0",
  369. SHA1Before = "2e97d7671963fa148a1beeda6ce4964314310593",
  370. SHA1After = "723c008fb53435ead20fa6f2e951c9a4a8ff46da",
  371. Changes = new List<Change>
  372. {
  373. new Change
  374. {
  375. Position = 0x00024505,
  376. Content = new byte[] { 0xEB, 0x02, 0x90, 0x90 }
  377. },
  378. new Change
  379. {
  380. Position = 0x000248B9,
  381. Content = new byte[] { 0xEB, 0x02, 0x90, 0x90 }
  382. }
  383. }
  384. },
  385. new ModifyInfo
  386. {
  387. Name = "IM.dll",
  388. Version = "7.9.14308.0",
  389. SHA1Before = "b8a7a873178706b97be11c25f13bcf09e9e578a2",
  390. SHA1After = "c5bf533c7af6996b42d1fb2a0fb3f26dfd52f8bf",
  391. Changes = new List<Change>
  392. {
  393. new Change
  394. {
  395. Position = 0x00024505,
  396. Content = new byte[] { 0xEB, 0x02, 0x90, 0x90 }
  397. },
  398. new Change
  399. {
  400. Position = 0x000248B9,
  401. Content = new byte[] { 0xEB, 0x02, 0x90, 0x90 }
  402. }
  403. }
  404. }
  405. }
  406. }
  407. }
  408. };
  409. }
  410. }
  411. }