汇编
shixueli
这个作者很懒,什么都没留下…
展开
-
各种开发语言的入口方法
1.Borland Delphi 6.0 - 7.0PUSH EBPMOV EBP,ESPADD ESP,-14PUSH EBXPUSH ESIPUSH EDIXOR EAX,EAXMOV DWORD PTR SS:[EBP-14],EAXMOV EAX,unpack.00509720CALL unpack.0040694C2.Microsoft Visual C++ 6.0PUSH EBP ; (初始 cpu 选择)MOV...转载 2020-12-31 17:08:43 · 620 阅读 · 0 评论 -
DLL巧妙的绕过被VMP壳HOOK的ZwProtectVirtualMemory
被VMP HOOK的ZwProtectVirtualMemory介绍ZwProtectVirtualMemory,是一个修改内存输入的API函数,VirtualProtect和VirtualProtectEx修改内存属性都会通过ZwProtectVirtualMemory这个API函数.在VMP壳的程序中,注入DLL进行一定的内存修改,但会发现,对WINAPI或者程序的代码段等进行WriteProcessMemory操作,会发现修改错误,错误提示是没有修改权限.而WriteProcessMemo转载 2020-11-24 06:48:58 · 4475 阅读 · 1 评论 -
获取当前指令地址汇编指令2
call addressaaddressa pop eax ret这种方法利用了call指令会在栈上保存ip值,之后pop就可以使某寄存器获取为该ip值了。转载 2019-06-18 10:42:34 · 2704 阅读 · 0 评论 -
OD搜索指令中的const
不确定值的常量可以用const代替,例如push 0x13300998可以用push const代替原创 2019-06-18 10:18:27 · 459 阅读 · 0 评论 -
OD鲜为人知的小技巧--搜索通配符(关键字)
我看过一些OD教程,关于通配符这一点很少有人讲解(大概是我看的教程少吧) 近日通过看《黑客反汇编揭秘(第二版)》第165页了解到,原来OD还有这样方便的功能,那就是搜索通配符: OllyDbg所支持的用于指定断点的关键字(以正则表达式形式给出) 关键字 描述 R8...转载 2018-12-23 08:34:09 · 3543 阅读 · 0 评论 -
脱壳工具
Quick Unpack 3.4 releasedASPACK ATRIPPER原创 2017-11-19 08:31:56 · 1771 阅读 · 0 评论 -
获取当前指令地址汇编指令
获取当前指令地址汇编指令00424A35 D9EE fldz00424A37 D97424 F4 fstenv [esp-C]00424A3B 5B pop ebx执行后ebx的值为0x00424a35fstenv[esp-C] 这句执行之后会把当前堆栈的4个值改掉,...转载 2014-04-16 07:16:34 · 5280 阅读 · 0 评论 -
Ida windbg笔记
编辑ida目录下cfg/pdb.cfg,把PDBSYM_DOWNLOAD_PATH指向你的符号安装目录,打开idb后选择 文件...载入文件...PDB文件原创 2015-03-21 07:07:40 · 1036 阅读 · 0 评论 -
OD的数据窗口有4大列,每大列中又有4小列,一个小列表示一个字节,一大列表示4个字节
<br />所以一行存放16个字节。原创 2011-02-20 14:58:00 · 827 阅读 · 0 评论 -
Delphi反汇编笔记
<br />TField<br />取字段名:mov eax, dword ptr [eax+38],这里的eax是self指针。<br /> <br />原创 2010-12-22 11:10:00 · 1692 阅读 · 0 评论 -
在OllyDbg中如何找出B模块中所有调用了A模块的C方法的地方
首先我们要知道如果是调用本模块方法,知道该方法在本模块的输出地址后,按下ctrl+s,输入call 函数地址,即可找到。但如果是调用其他模块方法的话必须多做一些事情。 下面以寻找xx模块所有调用了bdertl60模块的FlushBuffers方法地方为例。 首先找到FlushBuffers方法在xx模块中的地址:0133A49C xx .idata 输入原创 2010-04-18 18:02:00 · 2451 阅读 · 0 评论 -
郁闷的几天
从14日下午开始,我就尝试在虚拟机上装softice想调试系统。我一开始选择virtual pc作为虚拟机,装了3-4个小时把xp和softice装上后,一启动softice,vpc立刻提示要重启。无奈之下我把vpc卸掉,装上了VMware 6.5,装好后,启动softice,按下ctrl+d,softice的界面没有出来,鼠标键盘不能动了!把SoftICE Initialization/Gene原创 2009-06-16 10:14:00 · 509 阅读 · 0 评论 -
在OD中如果知道对象指针,如何找该对象的ClassName
我们知道,Obj.ClassName是一个函数而不是一个属性,而该函数的代码是:class function TObject.ClassName: ShortString;begin Result := PShortString(PPointer(Integer(Self) + vmtClassName)^)^;end;对应的汇编代码优化之后非常简单:mov ebx,原创 2009-05-29 14:44:00 · 994 阅读 · 0 评论 -
在OD中如何找delphi写的程序的name属性?
我们知道,调用对象方法时,eax保存了self指针,知道了self指针后就可以找该对象的一些属性,例如name属性。找这个name属性的方法有两个:在CPU窗口,点击EAX寄存器,右键,选择在数据窗口中跟随,把数据窗口的垂直滚动条网上拉一点,如果顺利,这样就可以看到name的值了。如果上面这个方法找不到,试试这个方法,还是在CPU窗口,点击EAX寄存器,右键,选择在数据窗口中跟随,原创 2009-05-25 11:05:00 · 1021 阅读 · 0 评论 -
在别人的程序的任意位置加上调用自己函数的代码,且不影响原程序执行的方法
原理和HOOK是一样的,都是通过WriteProcessMemory写入代码,但这里我们想任意位置加入代码,为了不影响原程序的执行,执行完我们的函数后,必须恢复原有程序的寄存器和堆栈的值,所以第一句话就是 pushad将所有寄存器压栈,执行完我们的函数跳回原有程序后,第一句就是pop eax,因为跳转代码是mov eax,xxx jmp eax修改了eax:伪代码:需要9个字节0.pu原创 2009-03-29 17:07:00 · 1537 阅读 · 0 评论 -
对call、retn的深入分析和认识
为了加深对call、retn的理解,我今天用delphi写了一个小程序,在OD中跟踪程序执行call及retn时堆栈的变化。程序很简单:procedure summ(b: string); var a: string;begin a := b;end;procedure TForm2.Button3Click(Sender: TObject);begi原创 2009-03-29 09:54:00 · 6519 阅读 · 0 评论