|
[原创]汇编实现 类strrchr 函数功能,遇到迷惑
to mik. 试试这个,扫描单个字符如果考虑被搜索字符串较长的话,还是串指令速度快。测试了下这个,比你的速度快上很多。。 ; argc1 : char *, argc2: char __strrchr: push ebp mov ebp, esp push edi mov edi, [ebp+8h] xor eax, eax or ecx, -1 repne scasb not ecx sub edi, ecx xor edx, edx movzx eax, byte [ebp+0ch] .Loop: repnz scasb cmove edx, edi jecxz .Ret jmp .Loop .Ret: dec edx xchg eax, edx pop edi leave ret 4*2 |
|
[求助]请教RtlCopyMemory,RtlFillMemory,RtlZeroMemory这几个函数最终是调用哪个函数的呢?
RrlCopyMemory, RtlZeroMemory等再cl编译器中,因为编译器默认为了效率所以采用了自己的一些静态库函数来做了代替。例如RtlZeroMemory通过memset来做了代替。 但是这些函数再ntoskrnl(ring3 ntdll)都有导出,你也可以通过动态获得这些函数地址来调用。 |
|
[求助]OD中有不能被识别的汇编代码?
可能是代码加密了。。 |
|
如何统计子程序的调用次数?
通过call 后面的偏移差,计算出子程序的内存地址。然后通过此特征,从入口点开始匹配子程序来记录次数。 |
|
[求助]请问如何在win32汇编中实现向某网页提交POST请求,并返回结果。
; Post Data to URL proc PostData lpszHeader, szMethod, lpszFromData, szHostName, szFormAction pushad i InternetOpen, esi, esi, esi, esi, esi = 0 test eax, eax je .OverSession xchg eax, ebx ;ebx = hSession i InternetConnect, ebx, [szHostName], INTERNET_DEFAULT_HTTP_PORT, esi, esi, INTERNET_SERVICE_HTTP, esi, esi xchg eax, edi test edi, edi je .Over ;edi = hConnect i HttpOpenRequest, edi, [szMethod], [szFormAction], 'HTTP/1.1', esi, esi, esi, esi test eax, eax je .Over xchg eax, esi i lstrlen, [lpszFromData] i HttpSendRequest, esi, [lpszHeader], -1, [lpszFromData], eax .Over: i InternetCloseHandle, edi .OverSession: i InternetCloseHandle, ebx popad ret endp |
|
[翻译]The Svin 的OpCode教程(22楼提供doc和pdf版本下载)
不错的文章,感谢楼主的贡献。谢谢。 |
|
[原创]奇妙的shellcode
代码的技巧其实应该不在于这段combojiang构造的shellcode。在于combojiang如何去填充这些GetModuleHandleA, GetProcAddress函数的地址。combojiang好像没有说明啊。 这段shellcode其实很简单,将其恢复为汇编则为如下: call $+5 @@: pop eax add eax, pszWinExec - @b push eax add eax, pszKernel - pszWinExec push eax call dword [eax+ pGetModule-pszKernel] push eax call $+5 @@: pop eax call dword [eax+ pGetProc - @b] push 0 ;winexec参数 call $+5 @@: pop ecx add ecx, pszFile - @b push ecx ;winexec参数 call eax jmp 0012FF80h ;入口偏移 pszWinExec db 'WinExec',0 pszKernel db 'kernel32.dll', 0 pszFile db 'c:\windows\main.exe', 0 pGetModule rd 1 pGetProc rd 1 |
|
[原创]想抛开IDE,用神秘的MAKEFILE享受纯粹写代码的乐趣吗?——手把手与你搭建一个MASM开发环境学写Makefile
不错的文章。认真看下去收获不小。。 顶上去。。 |
|
[求助]请教一个fasm的问题
这些宏都是自己封装的。。。。 没有成套的。 哈哈这个是我的另一个号,郁闷没注意登陆错了。。。 我记得例子里有自带的资源相关的例子。。。 楼主也是fasm的热爱者??? 我QQ4159175,可以加我一起研讨。。 国内搞fasm的人忒少,相关资料也是甚少。。。。 很多都需要自己去不断的尝试和学习。。 |
|
[样章1]《加密与解密(第三版)》--18.2.4 DLL劫持技术(内存补丁技术)
期待新书的出版....... |
|
[求助]关于线程注入的奇怪问题
procedure Main; begin MessageBox(0, PChar(ExeFile),'测试',0); {如果这里换 Showmessage(Exefile)也会导致注入Explorer.exe失败,为什么?是不是一定要WinAPI函数才行?} end; 老弟, 如果不是DLL注入最好用动态获取地址的方式。因为ShowMessage是vcl类的库函数,Explorer.exe并没有加载相应的vcl的运行库。所以失败。 因为MessageBox是在user32.dll所以Explorer.exe默认加载了user32.dll,因为api函数的调用方式最终调用的是通过call iat地址表成员。所以注射后的函数会是这样的。 call [MessageBoxA] ,故而跳到真正的MessageBoxA的内存地址去执行。 |
|
[求助]关于变量在缓冲区的存储问题
楼上的。lz的说的是数组是全局变量在编译时候发生错误。 局部变量strcpy的时候拷贝至[ebp-28] 因为char b[4] ; 因为之前数组b是是4字节,所以此时拷贝过来的会覆盖 最后以一个00填充。 你可以看下ebp-8此时就是00。 全局变量拷贝的时候因为之前声明的数组4字节,那么往下就是存放的之前备份的ebp值。所以就直接覆盖之前备份的esp的值。故而发生错误。 其实遇到这种问题,脑海里应该勾勒出一副内存分配的图案。 |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值