mov eax, dword ptr [ebp+Str1] 和 lea eax, [ebp+Str1] 是不是一样的
不是一样的。
mov eax, dword ptr [ebp+Str1] 是取Str1字符串中的4个连续的字符值到eax中lea eax, [ebp+Str1] 是取Str1字符串的地址到eax中.用C表示的话,有char Str1[] = "1234";mov eax, dword ptr [ebp+Str1] ; eax = '1234', 即0x34333231lea eax, [ebp+Str1] ; eax = Str1, 是Str1的地址,类似c的&取地址操作
MOV EAX,DWORD PTR SS:[EBP+8]
展开全部 是从ss段的ebp+8这里开始,复制4个字节到eax寄存器。
在32位环境下,这一句一般是将函数第一个参数的值放到eax寄存器中。
楼上的写法应该是错误的,lea只负责加减乘除运算,没有取内容的用法。
你说的那句用nasm来写可以写成mov eax,dword ptr [ebp + 8]理由:ebp和esp默认是ss段,所以根本不用显式说明。
eax,ebx,ecx,edx,edi,esi默认是ds段,eip默认是cs段。
...
mov dword ptr [eax], 005A5B90是什么意思
立即数005A5B90 存入 eax所指的内存,把eax存的数据看作地址edi内的数据 存入 eax存的数据+4作为目的地址,后面两个同理。
地址是32位的,指向一个字节,第一个语句,如果eax寄存器存的是2,那么执行完这条语句后内存就是上图这样的
00402EE6 mov dword ptr [ebp
展开全部 汇编不是太了解!但也知道点mov 可以看成一个FU值的命令,把后面的数据传送到前面的位置 DWORD PTR 表示传送的长度 分为 byte ptr;word ptr dword ptr 分别为 byte ,integer ,long 也就是1,2,4字节其意应该就是把 EAX(寄存器) 的值传到 以DS(数据段)开始,长度为ESI(变址寄存器)+&HAC0 的地址里 长度为4字节!...
怎么编写随机数函数
这个也简单,先用GetTickCount()获取一个时间,然后把这个数加减乘除位运算,随便怎么算,最后出来的值就是随机数了.还可以逆向一下系统中的rand.77C071D3 >/$ E8 4D2D0000 call 77C09F2577C071D8 |. 8B48 14 mov ecx, dword ptr [eax+14]77C071DB |. 69C9 FD430300 imul ecx, ecx, 343FD77C071E1 |. 81C1 C39E2600 add ecx, 269EC3 ; ASCII 02,"漓"77C071E7 |. 8948 14 mov dword ptr [eax+14], ecx77C071EA |. 8BC1 mov eax, ecx77C071EC |. C1E8 10 shr eax, 1077C071EF |. 25 FF7F0000 and eax, 7FFF77C071F4 \. C3 retn77C09F25 /$ 8BFF mov edi, edi77C09F27 |. 56 push esi77C09F28 |. 57 push edi77C09F29 |. FF15 0410BE77 call dword ptr [; [GetLastError77C09F2F |. FF35 CCFAC277 push dword ptr [77C2FACC] ; /TlsIndex = 377C09F35 |. 8BF8 mov edi, eax ; |77C09F37 |. FF15 4410BE77 call dword ptr [; \TlsGetValue77C09F3D |. 8BF0 mov esi, eax77C09F3F |. 85F6 test esi, esi77C09F41 |. 75 44 jnz short 77C09F8777C09F43 |. 68 88000000 push 88 ; /size = 88 (136.)77C09F48 |. 6A 01 push 1 ; |nitems = 177C09F4A |. E8 7421FFFF call calloc ; \calloc77C09F4F |. 8BF0 mov esi, eax77C09F51 |. 85F6 test esi, esi77C09F53 |. 59 pop ecx77C09F54 |. 59 pop ecx77C09F55 |. 74 28 je short 77C09F7F77C09F57 |. 56 push esi ; /pValue77C09F58 |. FF35 CCFAC277 push dword ptr [77C2FACC] ; |TlsIndex = 377C09F5E |. FF15 4010BE77 call dword ptr [; \TlsSetValue77C09F64 |. 85C0 test eax, eax77C09F66 |. 74 17 je short 77C09F7F77C09F68 |. 56 push esi77C09F69 |. E8 9AFFFFFF call 77C09F0877C09F6E |. 83C4 04 add esp, 477C09F71 |. FF15 3C10BE77 call dword ptr [; [GetCurrentThreadId77C09F77 |. 834E 04 FF or dword ptr [esi+4], FFFFFFFF77C09F7B |. 8906 mov dword ptr [esi], eax77C09F7D |. EB 08 jmp short 77C09F8777C09F7F |> 6A 10 push 1077C09F81 |. E8 9F51FEFF call _amsg_exit77C09F86 |. 59 pop ecx77C09F87 |> 57 push edi ; /Error77C09F88 |. FF15 0412BE77 call dword ptr [; \SetLastError77C09F8E |. 5F pop edi77C09F8F |. 8BC6 mov eax, esi77C09F91 |. 5E pop esi77C09F92 \. C3 retn77C09F08 /$ 8BFF mov edi, edi77C09F0A |. 55 push ebp77C09F0B |. 8BEC mov ebp, esp77C09F0D |. 8B45 08 mov eax, dword ptr [ebp+8]77C09F10 |. C740 54 10F7C>mov dword ptr [eax+54], 77C2F71077C09F17 |. C740 14 01000>mov dword ptr [eax+14], 177C09F1E |. 5D pop ebp77C09F1F \. C3 retn
下面两段汇编代码哪个效率更高? 第一段是我写的, 第二段是Visual ...
一、个性化,用鼠标右击桌面空白处,选“个性化”。
二、主题,在“个性化”中。
三、任务栏没有预览窗口的功能(一)设置Windows7主题最简单的方法莫过于设置Windows7的主题模式,在桌面任意位置点击鼠标右键,键入菜单项“个性化(R)”,这个功能是设置Windows7主题模式的,家庭高级版、专业版或旗舰版都有这一功能,默认情况下windows7使用的是Aero主题,这种主题都是有任务栏窗口预览功能的。
(二)设置启用任务栏窗口预览功能方法一:1、依次展开“开始”→“运行”(或使用Win+R)→键入“GPedit.msc”→“确定”。
2、展开到:“User Configuration”(用户配置)→“Administrative Templates”(管理模板)→“Start Menu and Taskbar”(任务栏和开始菜单)。
3、在右侧面板中找到Turn off taskbar thumbnails(关闭任务栏窗口预览)→双击选择“D……”(禁用)。
4、完成以上设置后,重新启动系统,任务栏窗口预览功能即被启用。
方法二:1、依次展开“开始”→“运行”(或使用Win+R)→键入“regedit”→“确定”后→启动注册表编辑器。
2、展开到[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]→如果没有“Explorer”键则新建一个即可。
3、在右侧面板中→右键→新建DWORD键值→命名为“TaskbarNoThumbnail”→将键值设置为“0”。
4、完成以上设置后,重新启动系统,任务栏窗口预览功能即被启用
shellcode怎么用?
一般的ShellCode都是~ASM和C写的~Delphi作的到是很少有具体例子 其实使用Delphi写不是不可能~就是麻烦~(Delphi的~BASM也不太灵活~至少我感觉没有直接使用TASM爽) 不过还是写一个玩玩吧~这里仅仅作个演示代码~ 以下ShellCode源代码: 代码:procedure ShellCode; asm push ebp mov ebp,esp sub esp, 80h//标题'By DNA32r'->esi mov byte ptr[ebp-19h],42h//B mov byte ptr[ebp-18h],79h//y mov byte ptr[ebp-17h],20h// mov byte ptr[ebp-16h],44h//D mov byte ptr[ebp-15h],4Eh//N mov byte ptr[ebp-14h],41h//A mov byte ptr[ebp-13h],33h//3 mov byte ptr[ebp-12h],32h//2 mov byte ptr[ebp-11h],72h//r mov byte ptr[ebp-10h],0h//0x00 lea esi,[ebp-19h]//内容'Hello World!'->edi mov byte ptr[ebp-0Dh],68h//h mov byte ptr[ebp-0Ch],65h//e mov byte ptr[ebp-0Bh],6Ch//l mov byte ptr[ebp-0Ah],6Ch//l mov byte ptr[ebp-09h],6Fh//o mov byte ptr[ebp-08h],20h// mov byte ptr[ebp-07h],77h//w mov byte ptr[ebp-06h],6Fh//o mov byte ptr[ebp-05h],72h//r mov byte ptr[ebp-04h],6Ch//l mov byte ptr[ebp-03h],64h//d mov byte ptr[ebp-02h],21h//!mov byte ptr[ebp-01h],0h//0x00 lea edi,[ebp-0Dh] push 0 //0 push esi //标题 push edi //内容 push 0 //0//Win2k Sp4下MessageBoxA地址~懒得写搜索引擎~不好意思就自己获取一下吧-下面有代码//ShowMessage(IntToHex(DWORD(GetProcAddress(GetModuleHandle('user32.dll'),'MessageBoxA')),8)); mov eax,77DF3D81h //以上获取MessageBoxA地址~填写在这里就可以了 call eax leave end;有了源代码我们需要转换成16进制的 代码:program Project2; const ShellCodeSize = $00000079; ShellCode : Array[0..ShellCodeSize-1] of byte =($55,$8B,$EC,$81,$EC,$80,$00,$00,$00,$C6,$45,$E7,$42,$C6,$45,$E8,$79,$C6,$45,$E9,$20,$C6,$45,$EA,$44,$C6,$45,$EB,$4E,$C6,$45,$EC,$41,$C6,$45,$ED,$33,$C6,$45,$EE,$32,$C6,$45,$EF,$72,$C6,$45,$F0,$00,$8D,$75,$E7,$C6,$45,$F3,$68,$C6,$45,$F4,$65,$C6,$45,$F5,$6C,$C6,$45,$F6,$6C,$C6,$45,$F7,$6F,$C6,$45,$F8,$20,$C6,$45,$F9,$77,$C6,$45,$FA,$6F,$C6,$45,$FB,$72,$C6,$45,$FC,$6C,$C6,$45,$FD,$64,$C6,$45,$FE,$21,$C6,$45,$FF,$00,$8D,$7D,$F3,$6A,$00,$56,$57,$6A,$00,$B8,$81,$3D,$DF,$77,$FF,$D0,$C9); begin asm lea,eax,ShellCode call eax end; end.这个演示代码只能在Win2k SP4上跑~ 如果大家需要测试的话~请修改~MessageBoxA的地址
转载请注明出处51数据库 » mov eaxdword ptr [ea
神奇的小江游