|
[翻译]脱壳的艺术
感谢楼主这样造福大众的强人。 |
|
[原创]Kmd 教程中文整理版
我靠厉害 这个要收藏! |
|
[求助]这两个fopen函数的返回值为什么不同?
原来如此,感谢~ |
|
[求助]这两个fopen函数的返回值为什么不同?
但是汇编形式的fopen有问题,后面用fwrite往文件写入数据,文件大小还是为0,而第一种形式就没问题 我估计是这样,这两个fopen是不同的函数, stream = fopen( "c:\\update.exe", "wb" ); 并没有load msvcrt.dll 而第二个fopen是用的msvcrt.dll里的,那么第一个fopen是怎么来的呢 我用od看了下fopen( "c:\\test.exe", "wb" ); 004010E3 |. 68 10304200 push 00423010 ; /mode = "wb" 004010E8 |. 68 80204200 push 00422080 ; |path = "c:\test.exe" 004010ED |. E8 BE010000 call fopen ; \fopen 下面提示 4012B0=fopen, 并不是0x77c0f010 |
|
[求助]怎样学习好汇编
问题太大了,推荐发一些问题代码上来 有几个最基础的东西必须知道 1.堆栈,ebp esp这2个指针,推荐看the shellcode's handbook 2.函数返回值放在eax 3.函数的预处理代码 4 函数的传入的参数是 ebp+8 ebp+C之类,函数自己的变量通常是 ebp-XXX |
|
[求助]VC内联汇编中不识别QWORD关键字?
QWORD是啥 |
|
[求助]同样是 jge 指令,怎么差这么多。。
欧也 非常感谢~ |
|
[求助]同样是 jge 指令,怎么差这么多。。
把函数用汇编写的话,有个问题,怎么push数组的第 i 个元素 比如 hProcess = OpenProcess(1040, 0, processid[i]); 这句,要写成汇编的话怎么写? __asm{ push ?? //这里如何push? push 0 push 1040 mov eax, 0xYYYYYYYY //OpenProcess地址 call eax } |
|
[求助]同样是 jge 指令,怎么差这么多。。
这样啊,我再去研究下, 多谢版主~ |
|
[求助]同样是 jge 指令,怎么差这么多。。
哇哈哈 多谢版主,原来这样,我是在学写shellcode,代码里用到一个for循环,循环里的东西太长超过127字节就会用 jxx near指令,碰到jxx near的话就会有0x00导致shellcode中断,我把它改成这样了 __asm{ xxx: mov esi, i cmp esi, 100 jge aaaa } hProcess = OpenProcess(1040, 0, processid[i]); __asm{ aaaa: mov esi, i cmp esi, 100 jge bbb } if (hProcess){ EnumProcessModules(hProcess, &hModule, sizeof(hModule), pBytesReturned); __asm{ bbb: mov esi, i cmp esi, 100 jge ccc } GetModuleFileNameEx(hProcess, hModule, path, sizeof(path)); __asm{ ccc: mov esi, i cmp esi, 100 jge ddd } GetShortPathName(path, path, 256); __asm{ ddd: mov esi, i cmp esi, 100 jge eee } memcpy(aj+offset, path, strlen(path)); offset+=strlen(path); __asm{ eee: mov esi, i cmp esi, 100 jge yyy } } i++; __asm{ jmp xxx yyy: } 这么改只是为了避免jxx near指令带来的0x00,不知道有没有好点的办法,这样看起来别扭。。 |
|
[求助]如何改写某进程的数据(头疼※※)
内存默认只读,修改内存之前需要先用VirtualProtect 把要修改的内存块改成可写 |
|
[原创]在源代码中插入另一个程序,然后再输出为exe文件(C/C++、Win32Asm)
char filebuff[4] = {0x4d,0x5a,0x90,0x00}; // MZ , exe前4个字节 HANDLE file; DWORD bWritten =0; int main(int argc, char* argv[]) { file = CreateFile("aa.exe", GENERIC_WRITE, FILE_SHARE_READ, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); WriteFile(file, filebuff, sizeof(filebuff), &bWritten, 0); printf("%d bytes written\n",bWritten); return 0; } c++里是这样吧?用UltraEdit读取exe然后把整个exe的十六进制数据复制出来,放到 一个char数组里,然后用writefile写到新文件 |
|
如何才能读取计算机的唯一信息
......读硬件编号啊 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值