首先,我不想注入一个DLL.我想使用WriteProcessMemory()注入代码(如果这是可能的话).我已经使用过ReadProcessMemory()所以我认为写作并不是什么大问题.
好吧,让我们说TargetProgram.exe + D78C612有一个功能,
让我们说它可以像这样调用:
push eax
push [esp+08]
push edx
push 00
push TargetProgram.exe+AF76235
push 04
call TargetProgram.exe+D78C612
Run Code Online (Sandbox Code Playgroud)
我将如何使用WriteProcessMemory()完成此操作?
我的意思是我在哪里可以找到一个部分,我可以在其中注入我的代码而不会覆盖重要的东西.最重要的是,我该如何调用该函数?
只需在活动例程中跳转到我的代码,然后跳回并删除它?但是我怎么能找到这个例程呢?
这么多问题,我不知道如何开始...我希望你能帮助我.:)
如果你有时间我真的想看一个函数调用注入的示例代码.
我想知道如何从C++端创建和注册一个函数,该函数在从Lua端调用时返回一个表.
我尝试过很多东西,但没有什么能真正起作用.:/
(对不起长代码)这个例子不起作用,因为Register()需要一个"luaCFunction"样式函数:
LuaPlus::LuaObject Test( LuaPlus::LuaState* state ) {
int top = state->GetTop();
std::string var( state->ToString(1) );
LuaPlus::LuaObject tableObj(state);
tableObj.AssignNewTable(state);
if (var == "aaa")
tableObj.SetString("x", "ABC");
else if (var == "bbb")
tableObj.SetString("x", "DEF");
tableObj.SetString("y", "XYZ");
return tableObj;
}
int main()
{
LuaPlus::LuaState* L = LuaPlus::LuaState::Create(true);
//without true I can't access the standard libraries like "math.","string."...
//with true, GetLastError returns 2 though (ERROR_FILE_NOT_FOUND)
//no side effects noticed though
LuaPlus::LuaObject globals = L->GetGlobals();
globals.Register("Test",Test);
char pPath[MAX_PATH];
GetCurrentDirectory(MAX_PATH,pPath);
strcat_s(pPath,MAX_PATH,"\\test.lua");
if(L->DoFile(pPath)) {
if( L->GetTop() …Run Code Online (Sandbox Code Playgroud) 我刚刚花了最后一个小时试图找出为什么我的 PATH 变量没有更新我的 cmd.exe。现在我发现它确实更新了,但仅限于某些条件......
我通过更新它Win+Break -> Change Settings -> Advanced -> Environment Variables...
现在,当我通过 PATH 变量打开一个新的命令行时,Win+R -> cmd -> Enter会显示我设置的内容。
但是当我通过打开新的命令行时Shift+Rightclick into folder -> Open command window here,PATH 变量显示过时的内容。

我的问题:为什么会发生这种情况,我该怎么办?
windows cmd path-variables contextmenu environment-variables
我正在使用 socat 创建一个虚拟串行端口。
socat -d -d pty,echo=0,raw pty,echo=0,raw
Run Code Online (Sandbox Code Playgroud)
到目前为止,效果符合预期。使用 echo/cat 我可以发送/接收文本等。
但是像 DTR 或 RTS 这样的信号线呢?我如何使用 pty 获取/设置这些行的状态?这可能吗?我在任何地方都找不到任何关于它的提及。
我想计算用不同的"指法"(例如开弦,和弦和弦)演奏一个特定的和弦进行是多么有趣.
例如,如果我们有和弦进行G D Em C.对于大多数人来说,最舒适的玩法可能就像开放式和弦一样:
如果我们的和弦进程包括一个在标准调音中无法作为开放和弦的和弦,那就不再那么简单了.
在那种情况下,我们有
C#m 这是在Am形状的第4个音品上演奏的. G# 在第一个G形的音品上.我选择的图表显示了一种非常不舒服的方式来"指"和弦:以G形状演奏的和弦通常非常不舒服; 许多"跳跃"(开=>第4个烦恼=>第1个烦恼=>打开)
A(在我看来)更舒适的方式是:
可以说,打开一个开放可能更容易A.特别是如果序列连续多次播放.
我想说的是,在计算最舒适的指法时,有很多因素需要考虑.并且有些情况归结为个人偏好.
但我认为在某些情况下,大多数吉他手会同意某些指法会更舒适.
我不确定我要求的是什么.我目前拥有的是一个包含手指位置的吉他和弦大库.
我会说我的问题是:我需要一种公式,我需要合理的数字来表示大多数吉他手可以达成一致的公式中的因素.(例如,G形barre比Em形状的barre舒适;超过15个音品的和弦开关不如弦乐开关超过2个音品;等等.)
我从来没有在c ++中做过任何多线程或异步的事情,到目前为止我只使用cURL来做单个同步请求.
为了更好地可视化我正在尝试做的事情,我编写了一个简单的Javascript,它可以用C++中的cURL做我想做的事情.
function AddRequest( method, url, data, id ) {
var httpObj = new ActiveXObject("Msxml2.XMLHTTP.6.0"); //new XMLHttpRequest();
httpObj.onreadystatechange = function() {
if (httpObj.readyState == 4)
ResponseCallback( httpObj, id );
};
httpObj.Open( method, url, true );
httpObj.Send( data );
}
function ResponseCallback( httpObj, id ) {
WScript.Echo( id ); //alert( id );
WScript.Echo( httpObj.ResponseText ); //alert( httpObj.ResponseText );
}
//It could now be used like this:
AddRequest("GET","http://example.com/","",1);
AddRequest("GET","https://www.facebook.com","",2);
WScript.Echo( "all requests sent" ); //alert( "all requests sent" );
//these requests …Run Code Online (Sandbox Code Playgroud) 好的,我一直在使用这段代码对整数进行选择排序:
public void selectSort(int [] arr)
{
//pos_min is short for position of min
int pos_min,temp;
for (int i=0; i < arr.Length-1; i++)
{
pos_min = i; //set pos_min to the current index of array
for (int j=i+1; j < arr.Length; j++)
{
if (arr[j] < arr[pos_min])
{
//pos_min will keep track of the index that min is in, this is needed when a swap happens
pos_min = j;
}
}
//if pos_min no longer equals i than a smaller …Run Code Online (Sandbox Code Playgroud) 我正试图让某个歌曲的LED闪烁.这首歌正好是125 bpm.
我写的代码似乎首先工作,但运行的时间越长,LED闪烁和下一个节拍之间的时间差就越大.LED似乎眨了一下太慢了.
我认为这是因为lastBlink有点依赖于之前发生的眨眼以保持同步,而不是使用一个静态初始值来同步...
unsigned int bpm = 125;
int flashDuration = 10;
unsigned int lastBlink = 0;
for(;;) {
if (getTickCount() >= lastBlink+1000/(bpm/60)) {
lastBlink = getTickCount();
printf("Blink!\r\n");
RS232_SendByte(cport_nr, 4); //LED ON
delay(flashDuration);
RS232_SendByte(cport_nr, 0); //LED OFF
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用的平台具有非常严格的内存限制,我正在尝试找到一种方法来解析大的 JSON 字符串,而无需最多将超过几百个字节加载到内存中。JSON 字符串存储在更大的芯片(闪存)上的文件中。
有两件事我真的找不到好的解决方案:
foo["bar"][2]. 所以基本上我需要函数,当调用时,逐步解析 json 并且只保存我们实际需要继续解析的部分。
对于界面,我认为不可能有类似的东西exampleJson["aa"].2.["gg],但我设法非常接近:exampleJson["aa"].2.["gg"]()。这将导致调用一个函数,然后该函数可以轻松访问 {'aa',2,'gg'} 并从文件中读取/解析 json。
到目前为止,这是我的代码,但我真的不知道如何继续:https :
//repl.it/HfwS/2
-- Looks complicated, but is pretty simple. Using meta tables we create a json interface that can almost be accessed as if it was a lua table.
-- E.g. example["aa"][2]["gg"]() ; the only difference is that we have to use parentheses at the end
-- The problematic part starts where it says `THIS …Run Code Online (Sandbox Code Playgroud) 我已经知道网址是https://spclient.wg.spotify.com/color-lyrics/v2/track/${TRACK_ID}?format=json&vocalRemoval=false
它需要两个标头。app-platform: WebPlayer和authorization: Bearer TOKEN。
因此,使用curl我可以获得这样的歌词信息:
$ TRACK_ID=3z8h0TU7ReDPLIbEnYhWZb
$ BEARER_TOKEN=xxxxxxxxxxxxxx
$ curl "https://spclient.wg.spotify.com/color-lyrics/v2/track/${TRACK_ID}?format=json&vocalRemoval=false" -H "app-platform: WebPlayer" -H "authorization: Bearer ${BEARER_TOKEN}"
{
"lyrics": {
"syncType": "LINE_SYNCED",
"lines": [
{
"startTimeMs": "110",
"words": "Is this the real life? Is this just fantasy?",
"syllables": [],
"endTimeMs": "0"
},
{
"startTimeMs": "6990",
"words": "Caught in a landslide, no escape from reality",
"syllables": [],
"endTimeMs": "0"
},
...
Run Code Online (Sandbox Code Playgroud)
实际的问题是如何以编程方式获取所需的不记名令牌?我已尝试使用此网站上的“获取令牌”按钮请求令牌:https://developer.spotify.com/console/get-track/
但该令牌似乎仅适用于官方 API。对于歌词 API,我总是收到该令牌的以下响应:
{
"error": {
"status": 403,
"message": "Client …Run Code Online (Sandbox Code Playgroud) c++ ×4
lua ×2
asynchronous ×1
c# ×1
cmd ×1
contextmenu ×1
curl ×1
function ×1
guitar ×1
httprequest ×1
javascript ×1
json ×1
libcurl ×1
linux ×1
list ×1
loops ×1
lua-5.1 ×1
lua-table ×1
luaplus ×1
memory ×1
node.js ×1
parsing ×1
pty ×1
serial-port ×1
sorting ×1
spotify ×1
string ×1
web-scraping ×1
windows ×1