找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: smss

100元人民币 求bat或Powershell处理文本内容【已解决】

  [复制链接]
发表于 2019-5-23 20:49:48 | 显示全部楼层
回复  523066680
是的 降低可读性并不能彻底阻断逆向 还需加密 有个矛盾在解读时就必然要提供个解密器 这 ...
smss 发表于 2019-5-23 16:26



    个人感觉这样混淆。 要破解也就是多搜索一下。还是把APK写好些。
 楼主| 发表于 2019-5-23 20:54:18 | 显示全部楼层
回复 46# xczxczxcz 谷歌有混淆器的 这个大家都知道 也就不是什么秘密了 所以要写个不一样的
发表于 2019-5-23 21:01:34 | 显示全部楼层
回复 47# smss


    做一简单版,和高级版。高级版要收费下载。简单版基本功能要好用。让人家想买高级版。APK加密唉。
发表于 2019-5-23 23:09:39 | 显示全部楼层
回复 32# smss


    已修改,如果还有问题,请其他高手解答。
 楼主| 发表于 2019-5-24 18:58:38 | 显示全部楼层
回复 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>

希望得到你的答案
发表于 2019-5-25 12:38:00 | 显示全部楼层
本帖最后由 WHY 于 2019-5-25 12:45 编辑

回复 50# smss


    在 echo 'Done' 上面,插入三行:
  1. $str = [IO.File]::ReadAllText('c.txt', [Text.Encoding]::Default);
  2. $str = [regex]::Replace($str, '(?<=\sid=")[^"]+(?=")', {param($m); if($Hash[$m.Value]){$Hash[$m.Value]}else{$m.Value}});
  3. [IO.File]::WriteAllText('d.txt', $str, [Text.Encoding]::UTF8);
复制代码
 楼主| 发表于 2019-5-25 17:21:52 | 显示全部楼层
本帖最后由 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"/>去除中间所有空格只保留第一个空格 应该怎样改
发表于 2019-5-26 00:07:27 | 显示全部楼层
回复 52# smss

这两个比较容易实现,BAT也可以做到,关于需要过滤固定数组的地方有没有举例的文本?
发表于 2019-5-26 11:58:07 | 显示全部楼层
除了数组,其它的做解决了~~~
  1. goto :ansi
  2. rem UTF-8 编码支持
  3. chcp 65001
  4. cls

  5. :ansi
  6. @echo off


  7. setlocal enabledelayedexpansion


  8. set /p "strFile=请拖入处理文本:"
  9. if not exist !strFile! (
  10.         echo;"!strFile!" 文件不找不到!!
  11.         exit /b
  12. )

  13. rem 定义用于命名的字符表
  14. set ASC=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  15. set n=0

  16. rem 例外情况定义
  17. set exception=Extra Button

  18. (
  19. for /f "tokens=1* delims==" %%a in (!strFile!) do (
  20.         set s1=%%a
  21.         set s2=%%b
  22.         set z=
  23.         for %%k in (%exception%) do (if "!s1:%%k=!" neq "!s1!" (set z=y))
  24.         if "!z!!s1:~-5!" equ " name" (
  25.                 set s3=!s2:^"= !
  26.                 for /f "tokens=1 delims= " %%c in ("!s3!") do (
  27.                         if defined #%%~c (
  28.                                 echo;%%a=%%b
  29.                         ) else (
  30.                                
  31.                                 call        :getn !n! ss
  32.                                 set sa=%%~c
  33.                        
  34.                                 rem 保留"."后面的尾巴
  35.                                 if "!sa:.=!" neq "!sa!" set ss=!ss!.!sa:*.=!

  36.                                 echo;!s1!="!ss!" %%d
  37.                                 set $!n!=!ss!囧%%~c
  38.                                 set #%%~c=!ss!
  39.                                 set /a n+=1
  40.                         )
  41.                 )
  42.        
  43.         ) else (
  44.                 if defined s2 (echo;!s1!=%%b) else (echo;!s1!)
  45.         )

  46. )
  47. ) >temp.txt

  48. set/a n-=1

  49. (
  50. for /f "tokens=1,*" %%a in (temp.txt) do (

  51.         set str=%%b
  52.         if defined str (set str=%%a !str: =!) else set str=%%a

  53.         for /l %%1 in (0,1,!n!) do (
  54.                 for /f "tokens=1,2 delims=囧" %%b in ("!$%%1!") do (
  55.                         set str=!str:"%%c"="%%b"!
  56.                         set str=!str:@%%c=@%%b!
  57.                         set str=!str:#%%c=#%%b!
  58.                 )
  59.         )
  60.         echo;!str!
  61. )

  62. ) > 结果.txt

  63. start 结果.txt

  64. rem 查看有多少个更改

  65. set $

  66. pause

  67. exit /b

  68. rem 计算临名字,可加上前缀,A-Z,AA-ZZ,AAA-ZZZ,AAAA-ZZZZ ……
  69. :getn

  70. (set L=%1
  71. set M=%1
  72. set %2=)

  73. :loop
  74. set /a M=L %% 26
  75. set %2=!%2!!ASC:~%M%,1!
  76. if !M! neq !L! set /a L=L/26&goto :loop
  77. goto :eof
复制代码
发表于 2019-5-26 21:15:35 | 显示全部楼层
回复 54# netbenton


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

----------现在看到用纯P写长脚本时就有一种莫明恐惧感!
发表于 2019-5-27 00:03:11 | 显示全部楼层
数组也可以处理了。
终于全部搞好了,连特殊符号“!”号也处理好了!!!
  1. goto :ansi
  2. rem UTF-8 编码支持
  3. chcp 65001
  4. cls

  5. :ansi
  6. @echo off




  7. set /p "strFile=请拖入处理文本:"

  8. setlocal enabledelayedexpansion

  9. if not exist !strFile! (
  10.         echo;"!strFile!" 文件不找不到!!
  11.         exit /b
  12. )


  13. endlocal

  14. rem 定义用于命名的字符表
  15. set ASC=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  16. set n=0

  17. rem 例外情况定义
  18. set exception=Extra Button
  19. set z=
  20. set o=

  21. setlocal enabledelayedexpansion

  22. for /f "tokens=1* delims==" %%a in (!strFile!) do (


  23.         for /f "tokens=1,2 delims= " %%K in ("1 !z!") do (
  24. endlocal
  25.         set z=%%L
  26.         set s1=%%a
  27.         set s2=%%b
  28. setlocal enabledelayedexpansion

  29.         )


  30.         if defined z for %%k in (%exception%) do (
  31.                 if "#!s1:</%%k>=!" neq "#!s1!" (
  32.                         set z=!z:~1!
  33.                 )
  34.         )

  35.         for %%k in (%exception%) do (
  36.                 if "!s1:<%%k=!" neq "!s1!" (
  37.                         if "#!s2:/>=!" equ "#!s2!" (
  38.                                 set z=!z!y
  39.                         ) else (
  40.                                 set o=o
  41.                         )
  42.                 )
  43.         )



  44.         if "!o!!z!!s1:~-5!" equ " name" (
  45.        
  46.                 set s3=!s2:^"= !
  47.                
  48.                 for /f "tokens=1 delims= " %%c in ("!s3!") do (
  49.                
  50.                         if not defined #%%~c (

  51.                                 call        :getn !n! ss
  52.                                 set sa=%%~c
  53.                        
  54.                                 rem 保留"."后面的尾巴
  55.                                 if "!sa:.=!" neq "!sa!" set ss=!ss!.!sa:*.=!


  56.                                 for /f "tokens=1,2,3 delims= " %%x in ("!n! !ss! !z!") do (
  57.                                         endlocal
  58.                                         set $%%x=%%y囧%%~c
  59.                                         set #%%~c=%%y
  60.                                         set /a n+=1
  61.                                         set z=%%z
  62.                                         setlocal enabledelayedexpansion
  63.                        
  64.                                 )
  65.                         )
  66.                 )
  67.        
  68.         )



  69. )

  70. set/a n-=1

  71. (
  72. for /f "tokens=1,*" %%a in (!strFile!) do (

  73. endlocal
  74.         set stra=%%a
  75.         set str=%%b
  76. setlocal enabledelayedexpansion

  77.         if defined str (
  78.                 set "str=!stra! !str: =!"
  79.                 for /l %%1 in (0,1,%n%) do (
  80.                         for /f "tokens=1,2 delims=囧" %%b in ("!$%%1!") do (
  81.                                 set str=!str:"%%c"="%%b"!
  82.                                 set str=!str:@%%c=@%%b!
  83.                                 set str=!str:#%%c=#%%b!
  84.                         )
  85.                 )

  86.         ) else (

  87.                 set str=%%a

  88.         )       

  89.         echo;!str!

  90. )

  91. ) > 结果.txt

  92. start 结果.txt

  93. rem 查看有多少个更改

  94. set $

  95. pause

  96. exit /b

  97. rem 计算临名字,可加上前缀,多个,A 到 ZZZZ 多个
  98. :getn

  99. (set L=%1
  100. set M=%1
  101. set %2=)

  102. :loop
  103. set /a M=L %% 26
  104. set %2=!%2!!ASC:~%M%,1!
  105. if !M! neq !L! set /a L=L/26&goto :loop
  106. goto :eof
复制代码
发表于 2019-5-27 00:04:53 | 显示全部楼层
回复 55# xczxczxcz


    我觉得批处理也可以做得到
发表于 2019-5-27 01:05:18 | 显示全部楼层
回复 56# netbenton


    代码风格看着舒服…
 楼主| 发表于 2019-5-27 01:48:05 | 显示全部楼层
本帖最后由 smss 于 2019-5-27 01:58 编辑

回复 56# netbenton

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

当出现@shqwfwdwe或@Shqwfwdwe这种将被替换@QHAqwfwdwe 它不判断大小写和完整字符
发表于 2019-5-28 00:59:27 | 显示全部楼层
回复 59# smss
1,加入了区分大小写
2,加入了完整词检查
3,加入了多种位置变量的替换,自己可以根据情况添加
  1. goto :ansi
  2. rem UTF-8 编码支持
  3. chcp 65001
  4. cls

  5. :ansi
  6. @echo off
  7. set /p "strFile=请拖入处理文本:"


  8. setlocal enabledelayedexpansion

  9. if not exist !strFile! (
  10.         echo;"!strFile!" 文件不找不到!!
  11.         exit /b
  12. )


  13. endlocal

  14. rem 定义用于命名的字符表
  15. set ASC=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  16. set n=0

  17. rem 定义可用于命名的字符表
  18. set tab="." [ + - ^"

  19. rem 例外情况定义
  20. set exception=Extra Button
  21. set z=
  22. set o=

  23. setlocal enabledelayedexpansion

  24. for /f "tokens=1* delims==" %%a in (!strFile!) do (


  25.         for /f "tokens=1,2 delims= " %%K in ("1 !z!") do (
  26. endlocal
  27.         set z=%%L
  28.         set s1=%%a
  29.         set s2=%%b
  30. setlocal enabledelayedexpansion

  31.         )


  32.         if defined z for %%k in (%exception%) do (
  33.                 if "#!s1:</%%k>=!" neq "#!s1!" (
  34.                         set z=!z:~1!
  35.                 )
  36.         )

  37.         for %%k in (%exception%) do (
  38.                 if "!s1:<%%k=!" neq "!s1!" (
  39.                         if "#!s2:/>=!" equ "#!s2!" (
  40.                                 set z=!z!y
  41.                         ) else (
  42.                                 set o=o
  43.                         )
  44.                 )
  45.         )



  46.         if "!o!!z!!s1:~-5!" equ " name" (
  47.        
  48.                 set s3=!s2:^"= !
  49.                
  50.                 for /f "tokens=1 delims= " %%c in ("!s3!") do (
  51.                
  52.                         if not defined #%%~c (

  53.                                 call        :getn !n! ss
  54.                                 set sa=%%~c
  55.                        
  56.                                 rem 保留"."后面的尾巴
  57.                                 if "!sa:.=!" neq "!sa!" set ss=!ss!.!sa:*.=!


  58.                                 for /f "tokens=1,2,3 delims= " %%x in ("!n! !ss! !z!") do (
  59.                                         endlocal
  60.                                         set $%%x=%%y囧%%~c
  61.                                         set #%%~c=%%y
  62.                                         set /a n+=1
  63.                                         set z=%%z
  64.                                         setlocal enabledelayedexpansion
  65.                        
  66.                                 )
  67.                         )
  68.                 )
  69.        
  70.         )



  71. )

  72. set/a n-=1

  73. (
  74. for /f "tokens=1,*" %%a in (!strFile!) do (

  75. endlocal
  76.         set stra=%%a
  77.         set str=%%b
  78. setlocal enabledelayedexpansion

  79.         if defined str (
  80.                 set "str=!stra! !str: =!"
  81.                 for /l %%1 in (0,1,%n%) do (
  82.                         for /f "tokens=1,2 delims=囧" %%b in ("!$%%1!") do (
  83.                                 if "!str:%%c=!" neq "!str!" (
  84.                                 if "!str:%%c=%%c!" equ "!str!" (
  85.                                         set str=!str:"%%c"="%%b"!
  86.                                         set str=!str:"@%%c"="@%%b"!
  87.                                         set str=!str:"#%%c"="#%%b"!
  88.                                         if "!str:*%%c=!" neq "!str!" (
  89.                                                 call        :parti %%c %%b
  90.                                         )
  91.                                 ))
  92.                         )
  93.                 )

  94.         ) else (

  95.                 set str=%%a

  96.         )       

  97.         echo;!str!

  98. )

  99. ) >结果.txt

  100. start 结果.txt

  101. rem 查看有多少个更改

  102. set $

  103. pause

  104. exit /b

  105. rem 计算临名字,可加上前缀,多个,A 到 ZZZZ 多个
  106. :getn

  107. (set L=%1
  108. set M=%1
  109. set %2=)

  110. :loop
  111. set /a M=L %% 26
  112. set %2=!%2!!ASC:~%M%,1!
  113. if !M! neq !L! set /a L=L/26&goto :loop
  114. goto :eof

  115. rem 非双引号位置处理 如:#xxxx+  #xxxx[  ]  #xxxx.dir  
  116. :parti
  117. for %%a in (!tab!) do (
  118.         if "!str:%1%%~a=!" neq "!str!" (
  119.                 if "!str:%1%%~a=%1%%~a!" equ "!str!" (
  120.                         set str=!str:@%1%%~a=@%2%%~a!
  121.                         set str=!str:#%1%%~a=#%2%%~a!
  122.                         if "!str:*%1=!" equ "!str!" (
  123.                                 goto :partiE
  124.                         )
  125.                 )
  126.         )
  127. )
  128. :partiE

  129. goto :eof











复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:05 , Processed in 0.023337 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表