看板 C_and_CPP 關於我們 聯絡資訊
我想用C++寫一個 bat 轉 exe 的程式 目的就是隱藏批次檔的code 但是 system() 執行完結果就沒了 不能模擬bat 例如以下程式不能work system("set a=hello world"); system("echo %a%"); //忘掉上一行 system("cd .."); system("dir"); //忘掉上一行 用換行符號包成一個也不行 system("set a=hello world\necho %a%\ncd ..\ndir"); 頂多創一個temp.bat再 system("temp.bat") 這樣就沒達到目的了 是否有函式可以連續執行不會忘 或是達成目的 隱藏批次檔的code 的方法?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.25.118.138
loveme00835:attrib 指令 09/30 01:28
xxxx9659:attrib 指令?? 09/30 01:34
loveme00835:你用的 dir、cd 都是在DOS 命令提示字元的指令阿, 其 09/30 01:35
xxxx9659:喔~可是我想說隱藏批次檔的code 不是指隱藏屬性 09/30 01:35
loveme00835:中有一個指令可以設定檔案屬性 09/30 01:35
loveme00835:整個批次檔變不見你的code不就沒了= = 再下個 REM 把 09/30 01:37
loveme00835:他刪掉也好阿 09/30 01:38
xxxx9659:是指影藏在exe讓別人看不到 除非他反組譯我的程式 09/30 01:38
xxxx9659:或是他看的董機器碼 09/30 01:39
xxxx9659:一直穿插= = 09/30 01:39
james732:你可以把temp.bat加密 用你的程式解密後system執行 XD 09/30 01:41
loveme00835:那就用 && 把指令串起來吧 09/30 01:41
xxxx9659:&&好像可行 就走&&路線好了 謝啦 09/30 01:45
xxxx9659:解密後用system執行 還是不連貫... 09/30 01:46
loveme00835:不過變數的問題好像沒辦法解決就是 XD 09/30 01:47
loveme00835:原因可能在每一次呼叫system給完指令他就關掉的關係 09/30 01:49
xxxx9659:想說會不會有人推說 用內建函數system2()就好啦 09/30 01:49
xxxx9659:果然沒有這麼好康的事 09/30 01:49
visor:1. fopen 一個 bat 檔 09/30 01:51
visor:2. 將指令用 fputs 寫到 bat 檔內 09/30 01:51
visor:3. system 那個 bat 檔 09/30 01:51
visor:4. system 完 unlink 那個 bat 檔 09/30 01:51
loveme00835:原po就是不想用bat檔去跑... Orz 09/30 01:55
visor:跑完就刪掉咩 XD 他是不想存在一個現成的 bat 檔吧 09/30 01:57
visor:動態產生 跑完刪掉 不知道可不可以接受 XD 09/30 01:58
loveme00835:這我也提過呀 0.0 好像硬要把他燒在程式碼裡, 上一篇 09/30 01:58
loveme00835:也是醬 0.0 09/30 01:59
xxxx9659:沒錯 我就是想硬燒在程式碼裡...@@ 09/30 02:01
xxxx9659:因為產生檔案就沒辦法完全影藏 有心人還是可以把code抓出 09/30 02:03
xxxx9659:假如我就是那個有心人 我會用開RegShot軟體 09/30 02:04
xxxx9659:看這個exe有在哪裡產生哪些檔案 做了什麼改變 09/30 02:04
visor:其實我用文字編輯器也可以大概看出你的執行檔做了啥 lol 09/30 02:05
loveme00835:有這個必要嗎 = =|| 09/30 02:05
xxxx9659:可能發現在某處瞬間產生temp.bat 之後再想辦法留住那bat 09/30 02:05
xxxx9659:真的假的 可以用文字編輯器 看執行檔做什麼?? 怎麼做的?? 09/30 02:07
visor:不知道 win32 有沒有 popen 的功能啦 09/30 02:07
visor:不然 linux 可以用 popen 去開一個 sh 09/30 02:08
visor:然後指令一個一個 fputs 過去 09/30 02:08
visor:因為你 system 裡面是字串呀 字串在 exe 裡面是明碼的 -.- 09/30 02:09
visor:試試看這個 http://ppt.cc/-C~v 09/30 02:13
visor:win32 似乎也有 _popen http://ppt.cc/jYB4 09/30 02:15
xxxx9659:popen for windows 好像有希望!! 又要研究pipe了... 09/30 02:16
xxxx9659:謝謝 假如之後測試成功的話 我在PO上來 好累先睡覺= = 09/30 02:19
loveflames:之前有寫過一個算總和的 10/01 00:34
loveflames: system("cmd/v:on/c\"echo off&set sum=0&\ 10/01 00:34
loveflames:(for /l %i in (1,1,10) do (set/a sum=!sum!+%i)>nul) 10/01 00:35
loveflames:&echo SCRIPT=!sum!\""); 跟上面同一行 10/01 00:36
loveflames:對exe加上shell可以解決字串明碼的問題 10/01 00:39