├── ReadMe.md
├── bin
└── Debug
│ └── lua.exe
├── lua.cbp
├── lua.depend
├── lua.layout
├── luatool.exe
├── main.cpp
├── main.o
├── obj
└── Debug
│ └── main.o
├── xxtea.cpp
└── xxtea.h
/ReadMe.md:
--------------------------------------------------------------------------------
1 | # LuaTools
2 |
3 | 制作人:Blacat Recycler
4 |
5 | ## 应用介绍
6 |
7 | 本小程序是为了学习目的开发,针对Cocos2dx-Lua开发的安卓游戏反编译设计。用于拆包得到的Lua文件加解密,仅仅为了获取源码学习开发。禁止用于修改游戏数据进行作弊
8 |
9 | ## 使用方法
10 |
11 | 在控制台中运行,输入以下
12 |
13 | |命令格式|作用|
14 | |:--|:---|
15 | |D(d) [fileName] \[sign] \[key]|根据输入的Sign和Key解密文件,解密文件为原文件名\+\'.lua\'|
16 | |B(b) [fileName] \[sign] \[key]|根据输入的Sign和Key加密文件,加密文件为原文件名去除\'.lua\'|
--------------------------------------------------------------------------------
/bin/Debug/lua.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackcatrecycler/LuaTools/d907a4d354698511e75df26c362a5f43fcfb0ebc/bin/Debug/lua.exe
--------------------------------------------------------------------------------
/lua.cbp:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/lua.depend:
--------------------------------------------------------------------------------
1 | # depslib dependency file v1.0
2 | 1516369324 source:f:\apk\lua\main.cpp
3 |
4 |
5 |
6 | "xxtea.cpp"
7 |
8 | 1516285460 f:\apk\lua\xxtea.cpp
9 | "xxtea.h"
10 |
11 |
12 |
13 | 1516369488 f:\apk\lua\xxtea.h
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/lua.layout:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/luatool.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackcatrecycler/LuaTools/d907a4d354698511e75df26c362a5f43fcfb0ebc/luatool.exe
--------------------------------------------------------------------------------
/main.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackcatrecycler/LuaTools/d907a4d354698511e75df26c362a5f43fcfb0ebc/main.cpp
--------------------------------------------------------------------------------
/main.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackcatrecycler/LuaTools/d907a4d354698511e75df26c362a5f43fcfb0ebc/main.o
--------------------------------------------------------------------------------
/obj/Debug/main.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blackcatrecycler/LuaTools/d907a4d354698511e75df26c362a5f43fcfb0ebc/obj/Debug/main.o
--------------------------------------------------------------------------------
/xxtea.cpp:
--------------------------------------------------------------------------------
1 | /***********************************************************************
2 |
3 | Copyright 2006-2009 Ma Bingyao
4 | Copyright 2013 Gao Chunhui, Liu Tao
5 |
6 | These sources is free software. Redistributions of source code must
7 | retain the above copyright notice. Redistributions in binary form
8 | must reproduce the above copyright notice. You can redistribute it
9 | freely. You can use it with any free or commercial software.
10 |
11 | These sources is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY. Without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14 |
15 | github: https://github.com/liut/pecl-xxtea
16 |
17 | *************************************************************************/
18 |
19 | #include "xxtea.h"
20 | #include
21 | #include
22 |
23 | static void xxtea_long_encrypt(xxtea_long *v, xxtea_long len, xxtea_long *k)
24 | {
25 | xxtea_long n = len - 1;
26 | xxtea_long z = v[n], y = v[0], p, q = 6 + 52 / (n + 1), sum = 0, e;
27 | if (n < 1) {
28 | return;
29 | }
30 | while (0 < q--) {
31 | sum += XXTEA_DELTA;
32 | e = sum >> 2 & 3;
33 | for (p = 0; p < n; p++) {
34 | y = v[p + 1];
35 | z = v[p] += XXTEA_MX;
36 | }
37 | y = v[0];
38 | z = v[n] += XXTEA_MX;
39 | }
40 | }
41 |
42 | static void xxtea_long_decrypt(xxtea_long *v, xxtea_long len, xxtea_long *k)
43 | {
44 | xxtea_long n = len - 1;
45 | xxtea_long z = v[n], y = v[0], p, q = 6 + 52 / (n + 1), sum = q * XXTEA_DELTA, e;
46 | if (n < 1) {
47 | return;
48 | }
49 | while (sum != 0) {
50 | e = sum >> 2 & 3;
51 | for (p = n; p > 0; p--) {
52 | z = v[p - 1];
53 | y = v[p] -= XXTEA_MX;
54 | }
55 | z = v[n];
56 | y = v[0] -= XXTEA_MX;
57 | sum -= XXTEA_DELTA;
58 | }
59 | }
60 |
61 | static unsigned char *fix_key_length(unsigned char *key, xxtea_long key_len)
62 | {
63 | unsigned char *tmp = (unsigned char *)malloc(16);
64 | memcpy(tmp, key, key_len);
65 | memset(tmp + key_len, '\0', 16 - key_len);
66 | return tmp;
67 | }
68 |
69 | static xxtea_long *xxtea_to_long_array(unsigned char *data, xxtea_long len, int include_length, xxtea_long *ret_len) {
70 | xxtea_long i, n, *result;
71 |
72 | n = len >> 2;
73 | n = (((len & 3) == 0) ? n : n + 1);
74 | if (include_length) {
75 | result = (xxtea_long *)malloc((n + 1) << 2);
76 | result[n] = len;
77 | *ret_len = n + 1;
78 | } else {
79 | result = (xxtea_long *)malloc(n << 2);
80 | *ret_len = n;
81 | }
82 | memset(result, 0, n << 2);
83 | for (i = 0; i < len; i++) {
84 | result[i >> 2] |= (xxtea_long)data[i] << ((i & 3) << 3);
85 | }
86 |
87 | return result;
88 | }
89 |
90 | static unsigned char *xxtea_to_byte_array(xxtea_long *data, xxtea_long len, int include_length, xxtea_long *ret_len) {
91 | xxtea_long i, n, m;
92 | unsigned char *result;
93 |
94 | n = len << 2;
95 | if (include_length) {
96 | m = data[len - 1];
97 | if ((m < n - 7) || (m > n - 4)) return NULL;
98 | n = m;
99 | }
100 | result = (unsigned char *)malloc(n + 1);
101 | for (i = 0; i < n; i++) {
102 | result[i] = (unsigned char)((data[i >> 2] >> ((i & 3) << 3)) & 0xff);
103 | }
104 | result[n] = '\0';
105 | *ret_len = n;
106 |
107 | return result;
108 | }
109 |
110 | static unsigned char *do_xxtea_encrypt(unsigned char *data, xxtea_long len, unsigned char *key, xxtea_long *ret_len) {
111 | unsigned char *result;
112 | xxtea_long *v, *k, v_len, k_len;
113 |
114 | v = xxtea_to_long_array(data, len, 1, &v_len);
115 | k = xxtea_to_long_array(key, 16, 0, &k_len);
116 | xxtea_long_encrypt(v, v_len, k);
117 | result = xxtea_to_byte_array(v, v_len, 0, ret_len);
118 | free(v);
119 | free(k);
120 |
121 | return result;
122 | }
123 |
124 | static unsigned char *do_xxtea_decrypt(unsigned char *data, xxtea_long len, unsigned char *key, xxtea_long *ret_len) {
125 | unsigned char *result;
126 | xxtea_long *v, *k, v_len, k_len;
127 |
128 | v = xxtea_to_long_array(data, len, 0, &v_len);
129 | k = xxtea_to_long_array(key, 16, 0, &k_len);
130 | xxtea_long_decrypt(v, v_len, k);
131 | result = xxtea_to_byte_array(v, v_len, 1, ret_len);
132 | free(v);
133 | free(k);
134 |
135 | return result;
136 | }
137 |
138 | unsigned char *xxtea_encrypt(unsigned char *data, xxtea_long data_len, unsigned char *key, xxtea_long key_len, xxtea_long *ret_length)
139 | {
140 | unsigned char *result;
141 |
142 | *ret_length = 0;
143 |
144 | if (key_len < 16) {
145 | unsigned char *key2 = fix_key_length(key, key_len);
146 | result = do_xxtea_encrypt(data, data_len, key2, ret_length);
147 | free(key2);
148 | }
149 | else
150 | {
151 | result = do_xxtea_encrypt(data, data_len, key, ret_length);
152 | }
153 |
154 | return result;
155 | }
156 |
157 | unsigned char *xxtea_decrypt(unsigned char *data, xxtea_long data_len, unsigned char *key, xxtea_long key_len, xxtea_long *ret_length)
158 | {
159 | unsigned char *result;
160 |
161 | *ret_length = 0;
162 |
163 | if (key_len < 16) {
164 | unsigned char *key2 = fix_key_length(key, key_len);
165 | result = do_xxtea_decrypt(data, data_len, key2, ret_length);
166 | free(key2);
167 | }
168 | else
169 | {
170 | result = do_xxtea_decrypt(data, data_len, key, ret_length);
171 | }
172 |
173 | return result;
174 | }
175 |
176 | /* }}} */
--------------------------------------------------------------------------------
/xxtea.h:
--------------------------------------------------------------------------------
1 | /***********************************************************************
2 |
3 | Copyright 2006-2009 Ma Bingyao
4 | Copyright 2013 Gao Chunhui, Liu Tao
5 |
6 | These sources is free software. Redistributions of source code must
7 | retain the above copyright notice. Redistributions in binary form
8 | must reproduce the above copyright notice. You can redistribute it
9 | freely. You can use it with any free or commercial software.
10 |
11 | These sources is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY. Without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14 |
15 | github: https://github.com/liut/pecl-xxtea
16 |
17 | *************************************************************************/
18 |
19 | #ifndef XXTEA_H
20 | #define XXTEA_H
21 |
22 | #include /* for size_t & NULL declarations */
23 |
24 | #if defined(_MSC_VER)
25 |
26 | typedef unsigned __int32 xxtea_long;
27 |
28 | #else
29 |
30 | #if defined(__FreeBSD__) && __FreeBSD__ < 5
31 | /* FreeBSD 4 doesn't have stdint.h file */
32 | #include
33 | #else
34 | #include
35 | #endif
36 |
37 | typedef uint32_t xxtea_long;
38 |
39 | #endif /* end of if defined(_MSC_VER) */
40 |
41 | #define XXTEA_MX (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z)
42 | #define XXTEA_DELTA 0x9e3779b9
43 |
44 | unsigned char *xxtea_encrypt(unsigned char *data, xxtea_long data_len, unsigned char *key, xxtea_long key_len, xxtea_long *ret_length);
45 | unsigned char *xxtea_decrypt(unsigned char *data, xxtea_long data_len, unsigned char *key, xxtea_long key_len, xxtea_long *ret_length);
46 |
47 | #endif
48 |
--------------------------------------------------------------------------------