海森游戏VIP客户端及其游戏破解

海森游戏VIP客户端及其游戏破解教程[]

海森游戏VIP客户端及其游戏破解

游戏破解方法一

发现游戏下载完安装后还需要再次激活抓包发现 联网获取游戏的 encodeKey 来解压游戏启动文件、而每次把客户端游戏启动程序一关闭又会删除原本的游戏启动文件(解压完的游戏文件默认是隐藏的需要电脑设置查看隐藏文件才看得见),获取游戏的encodeKeyapi为:http://yx.haisenyouxi8.com/hsgame/game/getById(post请求 id=hsgame.ini文件里面的id),通过hsgame_client.dll里面来判断是否登录或激活

游戏破解方法二【C#】

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.IO;  
  7. using System.Linq;  
  8. using System.Net;  
  9. using System.Runtime.InteropServices;  
  10. using System.Text;  
  11. using System.Web.Script.Serialization;  
  12. using System.Windows.Forms;  
  13.    
  14. namespace GameDLL  
  15. {  
  16.     public partial class Form1 : Form  
  17.     {  
  18.         public Form1()  
  19.         {  
  20.             InitializeComponent();  
  21.         }  
  22.    
  23.         private void button1_Click(object sender, EventArgs e)  
  24.         {  
  25.                         string id = ReadConfig<string>(".\\hsgame.ini""config""id");  
  26.                         string result = null;  
  27.                         try  
  28.                         {  
  29.                                 result = getGameData(id);  
  30.                                 analysis(result);  
  31.                         }  
  32.                         catch (Exception)  
  33.                         {  
  34.                                 MessageBox.Show("需要联网下载encodeKey和赠品地址");  
  35.                         }  
  36.                            
  37.                 }  
  38.                 private void getExe(string key) {  
  39.                         string exename = ReadConfig<string>(".\\hsgame.ini""config""exeName");  
  40.                         FileStream fileStream = new FileStream(".\\hsgame.dll", FileMode.Open, FileAccess.Read);  
  41.                         BinaryReader binaryReader = new BinaryReader(fileStream);  
  42.                         FileStream fileStream2 = new FileStream(".\\" + exename, FileMode.CreateNew); 
  43.                         bool flag = binaryReader.PeekChar() != -1; 
  44.                         if (flag) 
  45.                         { 
  46.                                 byte[] array; 
  47.                                 while ((array = binaryReader.ReadBytes(1024)).Length != 0) 
  48.                                 { 
  49.                                         fileStream2.Write(decodeByte(array, key), 0, array.Length); 
  50.                                 } 
  51.                         } 
  52.                         fileStream2.Close(); 
  53.                         binaryReader.Close(); 
  54.                         fileStream.Close(); 
  55.                 } 
  56.                 private static byte[] decodeByte(byte[] bytes, string key) 
  57.                 { 
  58.                         byte[] bytes2 = Encoding.UTF8.GetBytes(key); 
  59.                         for (int i = 0; i < bytes.Length; i++) 
  60.                         { 
  61.                                 foreach (byte b in bytes2) 
  62.                                 { 
  63.                                         bytes[i] ^= b; 
  64.                                 } 
  65.                         } 
  66.                         return bytes; 
  67.                 } 
  68.                 public static T ReadConfig<T>(string FileName, string section, string key) 
  69.                 { 
  70.                         bool flag = File.Exists(FileName); 
  71.                         T result; 
  72.                         if (flag) 
  73.                         { 
  74.                                 string text = ReadContentValue(section, key); 
  75.                                 bool flag2 = text == null || string.IsNullOrEmpty(text.Trim()); 
  76.                                 if (flag2) 
  77.                                 { 
  78.                                         result = default(T); 
  79.                                 } 
  80.                                 else 
  81.                                 { 
  82.                                         bool isEnum = typeof(T).IsEnum; 
  83.                                         if (isEnum) 
  84.                                         { 
  85.                                                 result = (T)((object)Enum.Parse(typeof(T), text, true)); 
  86.                                         } 
  87.                                         else 
  88.                                         { 
  89.                                                 result = (T)((object)Convert.ChangeType(text, typeof(T))); 
  90.                                         } 
  91.                                 } 
  92.                         } 
  93.                         else 
  94.                         { 
  95.                                 result = default(T); 
  96.                         } 
  97.                         return result; 
  98.                 } 
  99.                 [DllImport("kernel32")] 
  100.                 private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retval, int size, string filePath); 
  101.                 public static string ReadContentValue(string Section, string key) 
  102.                 { 
  103.                         StringBuilder stringBuilder = new StringBuilder(1024); 
  104.                         GetPrivateProfileString(Section, key, "", stringBuilder, 1024, ".\\hsgame.ini"); 
  105.                         return stringBuilder.ToString(); 
  106.                 } 
  107.                 private string getGameData(string id) { 
  108.                         string url = "http://yx.haisenyouxi8.com/hsgame/game/getById";  
  109.                         HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);  
  110.                         req.Method = "POST"; 
  111.                         req.ContentType = "application/x-www-form-urlencoded"; 
  112.                         byte[] data = Encoding.UTF8.GetBytes("id="+id); 
  113.                         req.ContentLength = data.Length; 
  114.                         using (Stream reqStream = req.GetRequestStream()) 
  115.                         { 
  116.                                 reqStream.Write(data, 0, data.Length); 
  117.                                 reqStream.Close(); 
  118.                         } 
  119.   
  120.                         HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 
  121.                         Stream stream = resp.GetResponseStream(); 
  122.                         string result = null; 
  123.                         //获取内容 
  124.                         using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) 
  125.                         { 
  126.                                 result = reader.ReadToEnd(); 
  127.                         } 
  128.                         Console.WriteLine(result); 
  129.                         return result; 
  130.                 } 
  131.                 private void analysis(string json) { 
  132.                         JavaScriptSerializer serializer = new JavaScriptSerializer(); 
  133.                         Dictionary<string, Object> o = (Dictionary<string, Object>)serializer.DeserializeObject(json); 
  134.                         Dictionary<string, Object> o2 = (Dictionary<string, Object>)o["json"]; 
  135.                         Object encodeKey = o2["encodeKey"]; 
  136.                         Object giftUrl = o2["giftUrl"]; 
  137.                         getExe(encodeKey.ToString()); 
  138.                         openBrowser(giftUrl.ToString()); 
  139.                           
  140.                 } 
  141.                 private void openBrowser(string url) { 
  142.                         if (url == null || url.Trim().Length <= 0) 
  143.                         { 
  144.                                 MessageBox.Show("没有赠品"); 
  145.                         } 
  146.                         else { 
  147.                                 System.Diagnostics.Process.Start(url); 
  148.                                 MessageBox.Show("赠品地址已经打开 记得保存哦");  
  149.                         }  
  150.                 }  
  151.         }  
  152. }  

客户端破解说明

客户端移除了每次启动强制更新以及账号登录功能 目前客户端有778个游戏,不过每次客户端启动贼慢要去服务器端获取数据通过抓包发现了获取游戏的api(http://yx.haisenyouxi8.com/hsgame/game/query/(POST请求 没有参数))获取到所有游戏 json格式,返回的数据有用的为::downloadUrl:游戏下载地址,giftUrl:赠品下载地址(修改器存档之类的东西)、encodeKey: 解密游戏的key

使用说明

以下文件自选其一使用

海森游戏VIP客户端:下载海森游戏VIP客户端解压后打开hsgame_query1.exe即可

hsgame_client.dll:复制到程序根目录替换即可

GameDLL.exe:拷贝到安装游戏后桌面创建的快捷方式文件所在目录运行直接解压就可以

附件下载

给TA买糖
共{{data.count}}人
人已赞赏
经验分享

通过JavaScript获取腾讯视频M3U8视频链接

2020-4-23 19:08:48

经验分享

使用Python下载PP视频(pptv聚力)蓝光画质及付费视频【转】

2020-5-10 14:07:33

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
搜索