能力值:
( LV2,RANK:10 )
|
-
-
2 楼
汗,写病毒的就是厉害!现在流行复古?
|
能力值:
( LV9,RANK:320 )
|
-
-
3 楼
不是复古,,只是做个研究,写程序当然是有选择的使用,,用masm方便,那就masm,,需要这样写的就这样写,,呼呼,,
|
能力值:
( LV9,RANK:260 )
|
-
-
4 楼
xor ebx,ebx
push ebx
push offset aa
push offset GetModuleHandleA
lea esp,[esp+4]
jmp DWORD ptr [esp-4]
aa:
当然不是复古,不要诬陷古人,像这种猥琐的调用函数,猥琐的设置返回地址……古人才不会这么猥琐……
|
能力值:
( LV9,RANK:320 )
|
-
-
5 楼
[QUOTE=Fypher;680371]xor ebx,ebx
push ebx
push offset aa
push offset GetModuleHandleA
lea esp,[esp...[/QUOTE]
当然不是复古,呼呼,程序里一个call ret invoke entry leave有没有用,呼呼,,古人起码还用call呢,,关键就是玩堆栈,,呼呼
|
能力值:
( LV5,RANK:70 )
|
-
-
6 楼
露怯 lòu qiè
1、从言谈举止中流露出胆怯来。
3、在害怕的人或事前流露出胆怯来。
2、因为缺知识,言谈举止发生可笑的错误。[display one's ignorance;make a fool of oneself]
原来是这个意思,我是文盲。。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
确实有帮助,对程序的运行机理又加深了一些体会.
汇编菜菜鸟.路过.膜拜LZ.
|
能力值:
( LV15,RANK:670 )
|
-
-
8 楼
这种调用方式,怎么那么眼熟....
...又见到nbc的成员
|
能力值:
( LV13,RANK:290 )
|
-
-
9 楼
累不累啊,呵呵。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
期待 asm的魅力(二)
|
能力值:
( LV9,RANK:320 )
|
-
-
11 楼
哎,,可惜啊,,我闭关一段时间,,结果NBC老大把我版主给去掉了,,因此我就退出了,,不管了
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
让堆栈来的深一点吧。 怕。 什么是NBC?
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
靠堆栈调用的方法比较少见,学习
|
能力值:
( LV13,RANK:500 )
|
-
-
14 楼
不论是call ,jmp,jn,
不过是玩EIP而已 。。
|
能力值:
( LV4,RANK:50 )
|
-
-
15 楼
路过 看过 标记
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
路过,学习了.
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
这到是不错的方法,本人初学,确实只会invoke
|
能力值:
( LV4,RANK:50 )
|
-
-
18 楼
“asm的魅力”,很好的题目,很好的帖子,最近几天刚刚开始学习WIN32汇编,这篇帖子对我非常有帮助。
刚刚用了好几个小时试着跟着源程序的思路,总算完整的走了一遍,心里挺多感慨的: 1、DATA+CODE段的多分
源程序中写了两组DATA+CODE段,另外 “szFmt” 字符串的定义位置也是穿插的,这样的书写格式对我是个启发,也许可以适当选择用在自己以后的编程风格里以增加源程序的可读性。 2、子程序的调用和返回方式
.
.
PUSH... ;传递参数
PUSH... ;子程序返回地址(或传递参数)
PUSH... ;子程序起始地址
LEA ESP,[ESP+4]
JMP DWORD PTR [ESP-4]
刚开始这样的格式没看懂,反复在脑子里过了几遍以后觉得越来越清晰了,而且这种使用堆栈的方式挺有意思,好像感受到了一点LZ帖子里说的 “ 玩 ” 的感觉。 3、编程思路
可能因为使用了固定的跳转和子程序调用返回模式,再加上对堆栈参数的顺序排放,整个程序模块化的感觉少了些,流畅的感觉多了些 ( 有点象打麻将时候的 “ 一条龙 ”?) 。。最后看源程序的时候,眼睛变成 “EIP”,脑子里跟着 “ESP” 。。。 可能因为看程序的时间稍微耗的长了点,现在思维比较迟钝,没办法,只能靠数字123帮着整理上面的思路了。。。LZ的 “asm的魅力”系列 还有(二)~(五)没有读,相信和这篇帖子一样精彩。哦,我用的是 RADASM 编译工具 ,“_wsprintfA” 改成 “wsprintfA” , “_sub3:” 标号下面 “20 ” 改成 “8” 之后运行正常。 另外感觉好像 " ee: " 标号下面的 “push offset dwExit” 应该是 “push dwExit”。 我很菜,WIN32的asm程序才只读过iczelion教程里的第二章的消息框和第三章的简单窗口,正对API丰富的命名和更加丰富的类结构惶恐,不过在读完LZ这个程序以后,让我这个初学者对WIN32的陌生感少了一些。非常感谢您的分享,也很羡慕从这个帖子里传达着的对asm的信心和执着。 MERRY CHRISTMAS!
|
能力值:
( LV5,RANK:70 )
|
-
-
19 楼
研究下堆栈
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
标记下,初学,看不懂几句.
|
能力值:
( LV5,RANK:70 )
|
-
-
21 楼
不明白的地方是:
cc:
push ebx
push offset ee
push offset ExitProcess
lea esp,[esp+4]
jmp DWORD ptr [esp-4]
ee:
push offset dwExit
lea esp,[esp+4]
jmp DWORD ptr [esp-4]
在cc:中执行了ExitProcess后还会执行ee:标签中的jmp 原栈顶地址吗?我调试的时候发现不能。求解
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
[QUOTE=Fypher;680371]xor ebx,ebx
push ebx
push offset aa
push offset GetModuleHandleA
lea esp,[esp...[/QUOTE]
的确很猥琐,LZ也真是的,贴在这里的代码还故意写成这样,嗯,不说你猥琐都不行了
|
能力值:
( LV8,RANK:140 )
|
-
-
23 楼
不得不说,超级变态
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
看不懂的,进来感谢下分享精神
|
能力值:
( LV9,RANK:230 )
|
-
-
25 楼
这个代码风格,虽然我不甚喜欢,但表示尊重。
|
|
|