返回列表 发帖
回复  523066680
是的 降低可读性并不能彻底阻断逆向 还需加密 有个矛盾在解读时就必然要提供个解密器 这 ...
smss 发表于 2019-5-23 16:26



    个人感觉这样混淆。 要破解也就是多搜索一下。还是把APK写好些。

TOP

回复 46# xczxczxcz 谷歌有混淆器的 这个大家都知道 也就不是什么秘密了 所以要写个不一样的

TOP

回复 47# smss


    做一简单版,和高级版。高级版要收费下载。简单版基本功能要好用。让人家想买高级版。APK加密唉。

TOP

回复 32# smss


    已修改,如果还有问题,请其他高手解答。

TOP

回复 49# WHY

谢谢你的注释 经过多次 修改调试 含数组的也可以正常工作了

现在只有一关联文本c中关联文本a中变量名,希望也同步替换,生成文本d
文本c特点如下 id="aper"  如果文本a中的 name="Paper"替换成了name="A" 那么文本c中id="Paper" 也需同步变更为id="A"
<Config>
<Group text="功能选项">
<CheckBox text="随机壁纸" summary="" id="Paper" default="1"/>
<CheckBox text="系统壁纸" summary="" id="Using" default="0"/>
</Group>
</Config>

希望得到你的答案

TOP

本帖最后由 WHY 于 2019-5-25 12:45 编辑

回复 50# smss


    在 echo 'Done' 上面,插入三行:
$str = [IO.File]::ReadAllText('c.txt', [Text.Encoding]::Default);
$str = [regex]::Replace($str, '(?<=\sid=")[^"]+(?=")', {param($m); if($Hash[$m.Value]){$Hash[$m.Value]}else{$m.Value}});
[IO.File]::WriteAllText('d.txt', $str, [Text.Encoding]::UTF8);COPY

TOP

本帖最后由 smss 于 2019-6-1 17:08 编辑

回复 51# WHY

测试了一下 没能成功 生成的文本d就是复制了一个文本c

文本a以前缀#bg或@QQNC调用文本c对应名称id="bg"、id="QQNC" default=""中的值
例如文本a中含<Var name="bg" const="true" expression="ifelse(isnull(#bg),0,#bg)"/>
<Text name="Qm" x="100" y="300" w="458" alignV="center" color="#ababab" size="30" textExp="@QQNC" marqueeSpeed="50" marqueeGap="2"/>
<Text name="Qm2" x="100" y="300" w="458" alignV="center" color="#ababab" size="30" textExp="@QQQM" marqueeSpeed="50" marqueeGap="2"/>文本c如下<Config>
<Group text="─=≡Σ(((?つ??ω??)つ超人">
<StringInput text="昵称" id="QQNC" default="smss" />
<StringInput text="签名" id="QQQM" default="百年江湖,谁人与共." />
<CheckBox text="重力壁纸"  id="bg" default="0"/>
</Group>
</Config> 文本c中 关联名较少 如果不行就换个思路 不替换文本c中涉及的id="变量名" 仅获取文本c中id="变量名"将其设为文本a替换前的过滤条件

还有如何把<Text x="100" y="300" marqueeGap="2"/>变成<Text x="100"y="300"marqueeGap="2"/>去除中间所有空格只保留第一个空格 应该怎样改

TOP

回复 52# smss

这两个比较容易实现,BAT也可以做到,关于需要过滤固定数组的地方有没有举例的文本?

TOP

除了数组,其它的做解决了~~~
goto :ansi
rem UTF-8 编码支持
chcp 65001
cls
:ansi
@echo off
setlocal enabledelayedexpansion
set /p "strFile=请拖入处理文本:"
if not exist !strFile! (
echo;"!strFile!" 文件不找不到!!
exit /b
)
rem 定义用于命名的字符表
set ASC=ABCDEFGHIJKLMNOPQRSTUVWXYZ
set n=0
rem 例外情况定义
set exception=Extra Button
(
for /f "tokens=1* delims==" %%a in (!strFile!) do (
set s1=%%a
set s2=%%b
set z=
for %%k in (%exception%) do (if "!s1:%%k=!" neq "!s1!" (set z=y))
if "!z!!s1:~-5!" equ " name" (
set s3=!s2:^"= !
for /f "tokens=1 delims= " %%c in ("!s3!") do (
if defined #%%~c (
echo;%%a=%%b
) else (
call :getn !n! ss
set sa=%%~c
rem 保留"."后面的尾巴
if "!sa:.=!" neq "!sa!" set ss=!ss!.!sa:*.=!
echo;!s1!="!ss!" %%d
set $!n!=!ss!%%~c
set #%%~c=!ss!
set /a n+=1
)
)
) else (
if defined s2 (echo;!s1!=%%b) else (echo;!s1!)
)
)
) >temp.txt
set/a n-=1
(
for /f "tokens=1,*" %%a in (temp.txt) do (
set str=%%b
if defined str (set str=%%a !str: =!) else set str=%%a
for /l %%1 in (0,1,!n!) do (
for /f "tokens=1,2 delims=囧" %%b in ("!$%%1!") do (
set str=!str:"%%c"="%%b"!
set str=!str:@%%c=@%%b!
set str=!str:#%%c=#%%b!
)
)
echo;!str!
)
) > 结果.txt
start 结果.txt
rem 查看有多少个更改
set $
pause
exit /b
rem 计算临名字,可加上前缀,A-Z,AA-ZZ,AAA-ZZZ,AAAA-ZZZZ ……
:getn
(set L=%1
set M=%1
set %2=)
:loop
set /a M=L %% 26
set %2=!%2!!ASC:~%M%,1!
if !M! neq !L! set /a L=L/26&goto :loop
goto :eofCOPY

TOP

回复 54# netbenton


    以前偶用纯P写的时候,经常前面设好的坑到后面忘记填坑。唉。现在一些旧的脚本还保留着原P外,新的一律用PS写。用P写的时候经常要用硬盘做临时存储交换。特别是有特殊符号时。现在基本只用内存交换。
《题外话。自从用了win10后,我已经坏了两块机械硬盘。因为读盘比以前的系统更利害了。SSD倒是5年了还正常。Windows Defender 已禁止它随意乱动。》

----------现在看到用纯P写长脚本时就有一种莫明恐惧感!

TOP

数组也可以处理了。
终于全部搞好了,连特殊符号“!”号也处理好了!!!
goto :ansi
rem UTF-8 编码支持
chcp 65001
cls
:ansi
@echo off
set /p "strFile=请拖入处理文本:"
setlocal enabledelayedexpansion
if not exist !strFile! (
echo;"!strFile!" 文件不找不到!!
exit /b
)
endlocal
rem 定义用于命名的字符表
set ASC=ABCDEFGHIJKLMNOPQRSTUVWXYZ
set n=0
rem 例外情况定义
set exception=Extra Button
set z=
set o=
setlocal enabledelayedexpansion
for /f "tokens=1* delims==" %%a in (!strFile!) do (
for /f "tokens=1,2 delims= " %%K in ("1 !z!") do (
endlocal
set z=%%L
set s1=%%a
set s2=%%b
setlocal enabledelayedexpansion
)
if defined z for %%k in (%exception%) do (
if "#!s1:</%%k>=!" neq "#!s1!" (
set z=!z:~1!
)
)
for %%k in (%exception%) do (
if "!s1:<%%k=!" neq "!s1!" (
if "#!s2:/>=!" equ "#!s2!" (
set z=!z!y
) else (
set o=o
)
)
)
if "!o!!z!!s1:~-5!" equ " name" (
set s3=!s2:^"= !
for /f "tokens=1 delims= " %%c in ("!s3!") do (
if not defined #%%~c (
call :getn !n! ss
set sa=%%~c
rem 保留"."后面的尾巴
if "!sa:.=!" neq "!sa!" set ss=!ss!.!sa:*.=!
for /f "tokens=1,2,3 delims= " %%x in ("!n! !ss! !z!") do (
endlocal
set $%%x=%%y%%~c
set #%%~c=%%y
set /a n+=1
set z=%%z
setlocal enabledelayedexpansion
)
)
)
)
)
set/a n-=1
(
for /f "tokens=1,*" %%a in (!strFile!) do (
endlocal
set stra=%%a
set str=%%b
setlocal enabledelayedexpansion
if defined str (
set "str=!stra! !str: =!"
for /l %%1 in (0,1,%n%) do (
for /f "tokens=1,2 delims=囧" %%b in ("!$%%1!") do (
set str=!str:"%%c"="%%b"!
set str=!str:@%%c=@%%b!
set str=!str:#%%c=#%%b!
)
)
) else (
set str=%%a
)
echo;!str!
)
) > 结果.txt
start 结果.txt
rem 查看有多少个更改
set $
pause
exit /b
rem 计算临名字,可加上前缀,多个,A 到 ZZZZ 多个
:getn
(set L=%1
set M=%1
set %2=)
:loop
set /a M=L %% 26
set %2=!%2!!ASC:~%M%,1!
if !M! neq !L! set /a L=L/26&goto :loop
goto :eofCOPY

TOP

回复 55# xczxczxcz


    我觉得批处理也可以做得到

TOP

回复 56# netbenton


    代码风格看着舒服…
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

本帖最后由 smss 于 2019-5-27 01:58 编辑

回复 56# netbenton

放弃吧
比对一下 会出现如下错误 如 name="sh" expression="#screen_height" 被替换成name="QHA" expression="#screen_height"

当出现@shqwfwdwe或@Shqwfwdwe这种将被替换@QHAqwfwdwe 它不判断大小写和完整字符

TOP

回复 59# smss
1,加入了区分大小写
2,加入了完整词检查
3,加入了多种位置变量的替换,自己可以根据情况添加
goto :ansi
rem UTF-8 编码支持
chcp 65001
cls
:ansi
@echo off
set /p "strFile=请拖入处理文本:"
setlocal enabledelayedexpansion
if not exist !strFile! (
echo;"!strFile!" 文件不找不到!!
exit /b
)
endlocal
rem 定义用于命名的字符表
set ASC=ABCDEFGHIJKLMNOPQRSTUVWXYZ
set n=0
rem 定义可用于命名的字符表
set tab="." [ + - ^"
rem 例外情况定义
set exception=Extra Button
set z=
set o=
setlocal enabledelayedexpansion
for /f "tokens=1* delims==" %%a in (!strFile!) do (
for /f "tokens=1,2 delims= " %%K in ("1 !z!") do (
endlocal
set z=%%L
set s1=%%a
set s2=%%b
setlocal enabledelayedexpansion
)
if defined z for %%k in (%exception%) do (
if "#!s1:</%%k>=!" neq "#!s1!" (
set z=!z:~1!
)
)
for %%k in (%exception%) do (
if "!s1:<%%k=!" neq "!s1!" (
if "#!s2:/>=!" equ "#!s2!" (
set z=!z!y
) else (
set o=o
)
)
)
if "!o!!z!!s1:~-5!" equ " name" (
set s3=!s2:^"= !
for /f "tokens=1 delims= " %%c in ("!s3!") do (
if not defined #%%~c (
call :getn !n! ss
set sa=%%~c
rem 保留"."后面的尾巴
if "!sa:.=!" neq "!sa!" set ss=!ss!.!sa:*.=!
for /f "tokens=1,2,3 delims= " %%x in ("!n! !ss! !z!") do (
endlocal
set $%%x=%%y%%~c
set #%%~c=%%y
set /a n+=1
set z=%%z
setlocal enabledelayedexpansion
)
)
)
)
)
set/a n-=1
(
for /f "tokens=1,*" %%a in (!strFile!) do (
endlocal
set stra=%%a
set str=%%b
setlocal enabledelayedexpansion
if defined str (
set "str=!stra! !str: =!"
for /l %%1 in (0,1,%n%) do (
for /f "tokens=1,2 delims=囧" %%b in ("!$%%1!") do (
if "!str:%%c=!" neq "!str!" (
if "!str:%%c=%%c!" equ "!str!" (
set str=!str:"%%c"="%%b"!
set str=!str:"@%%c"="@%%b"!
set str=!str:"#%%c"="#%%b"!
if "!str:*%%c=!" neq "!str!" (
call :parti %%c %%b
)
))
)
)
) else (
set str=%%a
)
echo;!str!
)
) >结果.txt
start 结果.txt
rem 查看有多少个更改
set $
pause
exit /b
rem 计算临名字,可加上前缀,多个,A 到 ZZZZ 多个
:getn
(set L=%1
set M=%1
set %2=)
:loop
set /a M=L %% 26
set %2=!%2!!ASC:~%M%,1!
if !M! neq !L! set /a L=L/26&goto :loop
goto :eof
rem 非双引号位置处理 如:#xxxx+  #xxxx[  ]  #xxxx.dir  
:parti
for %%a in (!tab!) do (
if "!str:%1%%~a=!" neq "!str!" (
if "!str:%1%%~a=%1%%~a!" equ "!str!" (
set str=!str:@%1%%~a=@%2%%~a!
set str=!str:#%1%%~a=#%2%%~a!
if "!str:*%1=!" equ "!str!" (
goto :partiE
)
)
)
)
:partiE
goto :eofCOPY

TOP

返回列表