搜索
bottom↓
12
返回列表 发新帖
楼主: Gorgon_Meducer

[上位机][C#][学习笔记] 学习如何给自己的软件加后门

[复制链接]

出0入0汤圆

发表于 2010-3-8 05:54:10 | 显示全部楼层
回复【98楼】Gorgon Meducer  傻孩子
-----------------------------------------------------------------------
支持。


回复【99楼】fightman  
-----------------------------------------------------------------------

----- 代码0 -----
Initially: p = & x, x = 1, y = 0
Thread 1        | Thread 2
y = 2          |  i = *p
memoryBarrier   |
p = & y        |
Can result in: i = 0   

做了很多的解释,最终证明了:一个满了的杯子,是装不进水的。

对于不了解CPU结构的人来说,可以用任何“高级语言”问题来推导出硬件有什么什么问题。

帮你回忆一下整个过程:

在 79楼 :

你依据一个链接 http://www.cs.umd.edu/~pugh/java/memoryModel/AlphaReordering.html 中的代码0

得出结论,“Compaq Alpha SMP机器可能会即使有显式的memoryBarrier下,还是会有内存和cache的同步问题”。

但是,这个结论是错误的。

为了验证我的思想,我专门找到了 Kourosh Gharachorloo (他以离开Compaq,到google工作了),并向他请教了关于代码0的核心问题。

Kourosh Gharachorloo 解释说,这个例子说明了在以 Alpha 21264 构建的 SMP 中由于 “读的乱序” 引起了多线程脏数据,

并给出了解决的方法,就是用MB来保证 Thread 2 中“读”的顺序。

于是,我在 88楼,92楼,95楼 详细的描述和解释了你所谓的问题是如何发生了,如何解决。

我得出的结论是,弱序SMP只需通过MB来保证(读写)代码顺序,就会保证cache和主内存的同步。

到这里为止,我以上的回复,都是在阐述这个问题。

然而,你始终没有正视这个问题,而是和线程的“数据同步”混为一谈。

你的所有回复,89,91,93 都提到了 lock。

从程序的角度来说,lock的目的是为了同步线程的共用数据,

从cpu的角度来说,lock在弱序SMP中它起不到MB(保证代码顺序)的作用。

所以我还要重复这句话:“我逐句分析你的话, 让你明白你思维的错误。”

目的是希望你能倒空你的杯,才能接到新的水。

1)-----------------------------------------------------
MB是什么,wiki上有解释
http://en.wikipedia.org/wiki/Memory_barrier,wiki的解释可以做名词时指一个内存藩篱,或内存边界,
也可以做动词就是指一组代码去完成对原始基础物件或锁无关的数据结构在多处理器系统和跟硬件相关的一些设备的同步。
-----------------------------------------------------
我直接从 wiki 上拷贝过来了:

Memory barrier, also known as membar or memory fence or fence instruction,
is a type of barrier and a class of instruction which causes a central processing unit (CPU)
or compiler to enforce an ordering constraint on memory operations
issued before and after the barrier instruction.

CPUs employ performance optimizations that can result in out-of-order execution.
The reordering of memory operations (loads and stores) normally goes unnoticed
within a single thread of execution, but causes unpredictable behaviour in concurrent programs
and device drivers unless carefully controlled. The exact nature of an ordering constraint
is hardware dependent, and defined by the architecture's memory ordering model.
Some architectures provide multiple barriers for enforcing different ordering constraints.

Memory barriers are typically used when implementing low-level machine code that operates
on memory shared by multiple devices. Such code includes synchronization primitives and lock-free
data structures on multiprocessor systems, and device drivers that communicate with computer hardware.

wiki上的解释和你的不一样啊,如果不是你断章取义,那就是你英文水平有待提高。

简单翻译如下:

MB 是一种 instruction,它的目的是使 CPU 或者 compiler 操作内存时依据“MB之前和之后“的“顺序制约”,

最终防止乱序(CPUs采用乱序来实现效能优化)造成在并行运算中可能带来不可预测的行为(脏数据)或者设备驱动失控。

因此在SMP中操作“同步数据”和“无锁数据”的低级代码中,或者计算机设备驱动中,都包含MB。

所以:

- MB 是一种 instruction (instruction, 就是计算机的元语言)

- MB 提供了 操作内存时依据“MB之前和之后“的“顺序制约”

- lock 和 MB 是没有必然联系的,不要一听到 MB 就说 lock。


2)-----------------------------------------------------
请参看上文给的第一个链接的文章. java的每一个sychronized {}块肯定被JVM整出一个mb出来.
只是我们不知道边界在哪个地方。看似我们可以简单的把块结束的}
之处看做mb的显式切分点,但是诡异的地方是上文给的第一个链接的文章的这些大牛们作者都
说JAVA synchronized块没有显式(Explicit)的MB.
不信大家从头读到尾,从尾读到首.除了敬畏地重温下各位大牛的名号外,真的找不到.
细心的同学可能解读到显式(Explicit)这个关键:这个synchronized块还是有个MB的边界,只是不是Explicit 的.
边界在哪,请各位往下看。
--------------------------------------------------------
本来java里就没有显式(Explicit)的MB,如果有了,就不会出现 "Double-Checked Locking is Broken"。

Double-Checked Locking is widely cited and used as an efficient method for implementing
lazy initialization in a multithreaded environment.

Unfortunately, it will not work reliably in a platform independent way when implemented in Java,
without additional synchronization. When implemented in other languages, such as C++, it depends
on the memory model of the processor, the reorderings performed by the compiler and the interaction
between the compiler and the synchronization library. Since none of these are specified in a
language such as C++, little can be said about the situations in which it will work.
Explicit memory barriers can be used to make it work in C++, but these barriers are not available in Java.

显然你认为,没有 Explicit 的 MB 就一定是 Implicit,这是错的。

Java 中没有 Explicit 的 MB 是指,jave 不能像 c++ 一样直接调用 asm ("memoryBarrier"),所以 Java 采用了 Volatile 来代替 Explicit 的 MB。

C# 不同,它提供了 Explicit 的 MB。

我已经给你了一个MS的链接,http://msdn.microsoft.com/library/system.threading.thread.memorybarrier.aspx

里面的话已经清楚解释了,MB的作用。

3)-----------------------------------------------------
当朝毛太祖说过"大乱才能大治" .. 访问完后还得释放这个锁。
--------------------------------------------------------

我和你的讨论都是围绕着 “Compaq Alpha SMP机器可能会即使有显式的memoryBarrier下,还是会有内存和cache的同步问题”。

而你总是把 lock 撤进来,显然你再次证明了你并不了解 MB。

我现在谈谈 lock:

lock 是同步多线程的共享数据的方法。

lock 是高级语言函数,它可能由几十或几百个 instruction 来实现,而其中肯定没有 MB instruction.

如果有就不会出现 MS 的解释 : http://msdn.microsoft.com/library/system.threading.thread.memorybarrier.aspx

也就是不会有 "Double-Checked Locking is Broken" 中 Volatile 的出现。

记住高级语言中,如果不是 asm (...),不等于一个 instruction。

例如 p = y (在 MIPSR3000 中) 对应着4个 instructions :

- &y => regh  取 y 地址,

- *regh => regi  取 y 值,

- &p => regj 取 p 地址,

- regi => regj 讲 y 值 付给 p 地址

所以,如果乱序,没法保证结果。

你说 lock 在这里有什么用 ???????????? 

4)-----------------------------------------------------
弱弱地问一句:
P1中的Thread1就不能被OS挂起,
而转去执行Thread3啊4的指令.
当然这时P2里面的thread 2可能正欢快的运行着。
既然是多线程,就就要这种thread1被人家3踢掉,
thread2正粉抹登场的场景考虑到吧。
除非你是用什么 non preemptive operation system.
--------------------------------------------------------

不明白你要讲什么,代码0是典型的“异步线程”。

Thread1 被挂起不挂起是都不影响 Thread2。

5)-----------------------------------------------------
感觉synchronised等高级 函数模块没有MB。要想MB怎么办,只能搞搞c/cc++或 M$ .NET或等x86 的高级智能判断机制了。
感觉高级函数模块模块是左手,MB 是 底层 instruction是右手。
左手碰不了右手,不能上下其手.我等做程序还不能觉得左手右手冗余,得学会容忍。
--------------------------------------------------------

MS的也有显示的MB。

虽然java中没考虑 Explicit的MB,但是提供了替补方案:Volatile

最后,既然你看了wiki为什么不看wiki的引用?

IBM的报告"Memory Barriers: a Hardware View for Software Hackers"

http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2009.04.05a.pdf

看过之后就会明白什么是MB了。

期待你倒空你的杯。

出0入0汤圆

发表于 2010-3-8 10:29:22 | 显示全部楼层
我就是不喜欢空杯子才加了那么多代码啊模式解释的。你觉得你对硬件很了解,语言能力很NB,我不了解MB,我e文很很滥也不所谓。知者尽其言,不知者无罪.
  我从头到尾只是说会有问题,既罪已诏,多说多错。祝你举你的底层instruction之深厚内力,配合m$的.net和x86的智能cache系统一统线程并行江湖。

出0入0汤圆

发表于 2010-3-8 12:10:33 | 显示全部楼层
回复【103楼】fightman
-----------------------------------------------------------------------

去看过IBM的报告"Memory Barriers: a Hardware View for Software Hackers"

http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2009.04.05a.pdf

你大概就不会再有疑问了。

出0入296汤圆

 楼主| 发表于 2010-3-8 12:59:01 | 显示全部楼层
to 【104楼】 zzsoft
    你有遇到过 C# 调用Kernel.dll里面的函数效率低下(大约15ms才能返回)的情况么?
比如WriteFile()。有兴趣你可以测试下。有意思的是C++ CLR模式下的应用程序就不存在
这个问题。
    我有测试过,发现这个问题在C#通过DllImport属性来调用非managed的dll时都会发生。

出0入0汤圆

发表于 2010-3-8 13:27:45 | 显示全部楼层
知无不言,言者不罪。再做一会说陛下没穿衣服的小童。
多线程编程很多时候时需要“数据同步”的自由式。  alpha的例子里面,也是在围绕着同一对x,y展开的吧。

c# 的lock语法 lock(expression) statement_block 也要对一个(expression)声明吧。不是你觉得lock(expression)没有对expression没有锁吧.
请参看http://msdn.microsoft.com/en-us/library/c5kehkcz(VS.71).aspx。你觉得释没有对expression的锁? 这个lock(expression)语法中的可以放类中的成员,可以放类本身的实例this. lock块结束,释放对expression的锁。c# lock块会不会跟java synchronized块一样也有我们觉察不到的非explicit MB? 是不是M$一看lock语法跟java synchronised语法一样拿DCL没辙,整了一个MemoryBarrier()函数给大家用?欢迎拍砖。

大牛没有给出alpha那个xyp的程序原型,alpha那个MB到底是是Java synchronised块不小心调的,还是被c++ 调asm(...)整出来的。
你精通天下所有武功的大牛,就放个asm, c/c++或别的语言的代码,没有约束锁还能在不同线程把pxy给整得服服帖帖的,在下洗耳恭听.

我写一行代码,不代表JVM下只是一行汇编搞定吧。我也是顺手引用人家大牛给的经典模式code。难不成还得给大家做了个解释,此处省略多少行少儿_不宜的底层文字。

出0入0汤圆

发表于 2010-3-8 21:16:49 | 显示全部楼层
回复【105楼】Gorgon Meducer  傻孩子
-----------------------------------------------------------------------

我在 C# (.net 1.1) 中通过 DllImport 调用过 ini 文件的读写函数

锁定键盘大写键 的函数 : 用于 条形码扫描机

"钩子"函数。

虽然没用过 WriteFile() 但是记忆中这些调用都是很快的。不过 15(毫秒)人应该感觉不到吧?

我有个问题,你为什么要用 WriteFile(), 是因为要写 2 进制文件?


回复【106楼】fightman  
-----------------------------------------------------------------------

-----------------------------------------------------------------------
多线程编程很多时候时需要“数据同步”的自由式。  alpha的例子里面,也是在围绕着同一对x,y展开的吧。
-----------------------------------------------------------------------

- 多线程需要“数据同步”的,也就是 synchronization primitives。

你给出的例子就是

通过 lock 锁定内存(ramlock。PS:对于 SMP 的ramlock,我了解不多,打算向同事请教。),

其它线程等待解锁,从而达到“数据同步”(更新即可见)。

- 但同时也可能只需“数据异步“,也就是 lock-free (常见在驱动中)

不需要锁的情况下,多线程通过无锁似的共享内存,先到先得。

Alpha 的例子类似。

-----------------------------------------------------------------------
请参看http://msdn.microsoft.com/en-us/library/c5kehkcz(VS.71).aspx。你觉得释没有对expression的锁?
c# lock块会不会跟java synchronized块一样也有我们觉察不到的非explicit MB?
-----------------------------------------------------------------------
java synchronized块一样也有我们觉察不到的非explicit MB?
其实你认为的:
块外围的语句可以(指令被优化)移进来,
块内的语句却不可以(指令优化)移出去。
(出处http://www.cs.umd.edu/~pugh/java/memoryModel/BidirectionalMemoryBarrier.html)
-----------------------------------------------------------------------

lock(expression){}有对 expression 锁,我也认同你说的roach motel效用。但这不是 MB。

被 {} 作用的代码中,是没有MB的,所以需要添加 explicit MB。

我也引用个大牛的code。

// C++ implementation with explicit memory barriers
// Should work on any platform, including DEC Alphas
// From "Patterns for Concurrent and Distributed Objects",
// by Doug Schmidt
template <class TYPE, class LOCK> TYPE *
Singleton<TYPE, LOCK>::instance (void) {
    // First check
    TYPE* tmp = instance_;
    // Insert the CPU-specific memory barrier instruction
    // to synchronize the cache lines on multi-processor.
    asm ("memoryBarrier");
    if (tmp == 0) {
        // Ensure serialization (guard
        // constructor acquires lock_).
        Guard<LOCK> guard (lock_);
        // Double check.
        tmp = instance_;
        if (tmp == 0) {
                tmp = new TYPE;
                // Insert the CPU-specific memory barrier instruction
                // to synchronize the cache lines on multi-processor.
                asm ("memoryBarrier");
               
                instance_ = tmp;
        }
    return tmp;
    }

你有没有发现: 第二个 asm ("memoryBarrier") 是用在 tmp= new TYPE 和 instance_ = tmp 之间的。

这是保证{}中的代码顺序。

而且,在 http://www.cs.umd.edu/~pugh/java/memoryModel/BidirectionalMemoryBarrier.html

闪烁的红字 DO NOT USE! 告诉我们 即使两个 相邻 而 独立 synchronized,不能等同 MB 效用。

-----------------------------------------------------------------------
大牛没有给出alpha那个xyp的程序原型,alpha那个MB到底是是Java synchronised块不小心调的,还是被c++ 调asm(...)整出来的。
你精通天下所有武功的大牛,就放个asm, c/c++或别的语言的代码,没有约束锁还能在不同线程把pxy给整得服服帖帖的,在下洗耳恭听.
-----------------------------------------------------------------------

我在上面几楼已经把这个过程讲的清清楚楚了,你自己看吧。

-----------------------------------------------------------------------
我写一行代码,不代表JVM下只是一行汇编搞定吧。我也是顺手引用人家大牛给的经典模式code。难不成还得给大家做了个解释,此处省略多少行少儿_不宜的底层文字。
-----------------------------------------------------------------------

再一次说明,如果 java synchronised {} 中没有提供 MB 的 instruction

对于 {p=y} 这样的语句,如果 MIPSR3000 会使用 4 个 instruction。

这4个instruction就有可能被 out-of-order, 导致 p=y 也会出错的。

(幸运的是MIPSR3000,不提供out-of-order)。

-----------------------------------------------------------------------

但我十分建议你,去看过IBM的报告"Memory Barriers: a Hardware View for Software Hackers"

http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2009.04.05a.pdf

你大概就不会再有疑问了。

-----------------------------------------------------------------------

如果你始终认为 java synchronised {} 或者 C# lock(expression){} 块中实现了 implicit 着 MB (隐式实现了 MB),

你大可以发信给你认同的大牛去询问。就不要浪费你我的时间了来讨论了。

出0入296汤圆

 楼主| 发表于 2010-3-9 09:37:29 | 显示全部楼层
to 【107楼】 zzsoft
    hid驱动中直接调用WriteFile比用FileStream速度要快一点,但是
仍然突破不了15ms的调用极限。后来在网上查到的资料说,从managed
code 调用unmanaged code存在某种隔离机制之类的……不是简单添加
unsafe关键字就能解决的……
    我觉得你可以研究研究这个问题,比讨论线程同步这样概念性的问题
更有实际意义。

出0入0汤圆

发表于 2010-3-9 10:37:18 | 显示全部楼层
回复【108楼】Gorgon Meducer 傻孩子
-----------------------------------------------------------------------

我没有从事C#开发已经很久了,目前只是偶尔维护一下以前的商用代码。

看你的代码帮我回忆和重新学习了C#,十分感谢。

我与fightman 讨论的是围绕“Compaq Alpha SMP机器可能会即使有显式的memoryBarrier下,还是会有内存和cache的同步问题”展开的。

这个问题与我从事的研究有着关联,是很有价值问题。

占你的楼展开这些讨论,十分过意不去。

至于你所说的问题:

“unmanaged code存在某种隔离机制之类的……不是简单添加 unsafe关键字就能解决的…… ,我觉得你可以研究研究这个问题,”

十分抱歉,我没有时间也没有动力。

因为为了安全,C#很多调用都是CLR托管的,你只能按照MSDN的范例展开编程。

所以不要对代码时间性效率 抱着什么希望。

以我的经验,时间长了,就不再觉得慢了。

如果你要高效,只能用非托管语言。

当然了,如果Intel-MS将CLR的实现成协处理器(类似Java processor)效率可能会提高,我不知道Intel-MS有没有类似的计划。

出0入0汤圆

发表于 2010-3-9 18:52:36 | 显示全部楼层
回复【107楼】 zzsoft,
     我觉这是一种做人的态度的问题。不要一味地见人高就捧,见人微就踩。
我对79楼用错MB这个大杀器而深感惶恐。也心存对MB这个大杀器的敬畏,但对同辄就拿出MB狐假虎威而口出狂言的人很不屑。

谢谢你看完alpha问题的上下文而把http://www.cs.umd.edu/~pugh/java/memoryModel/BidirectionalMemoryBarrier.html引出来(阁下总算读到了);谢谢你告诉大家有一种不用锁的lock-free数据异步的方式;谢谢你没有把大牛的c++ 里面的Guard<LOCK> guard (lock_)偷偷抹去放上自己的lockfree加MB大杀器;谢谢你告诉我们MB这个大杀器正确地使用在new了一个object之后传到外部变量之前;谢谢你告诉我们SMP没有线程切换的概念,谢谢你告诉传一个引用,在mips下要有4条指令;谢谢把我抛出的砖给搪塞回来,不要扔哥,哥不是大牛。
  祝好

出0入0汤圆

发表于 2010-3-9 23:48:50 | 显示全部楼层
回复【110楼】fightman
-----------------------------------------------------------------------

如果你认为你受到了不公的对待,或者遭到了面子打击,十分抱歉。

我无意针对你这个人,我针对的是你的态度。

因为你根本没有仔细认真地看过你给的连接,只不过是来炫耀一下你发现了什么问题,

你的思想和你的态度试让你借用大牛的名字和网站"狐假虎威而口出狂言的",

你轻率的下结论:

“Compaq Alpha SMP机器可能会即使有显式的memoryBarrier下,还是会有内存和cache的同步问题”。

可能你根本没有想到,我会或者敢直接找到你所谓的大牛去讨论这个问题。

讨论的结果是,你的结论是错的。

我之所以分析你的思想的错误,就是希望去你下次不再犯同样去错误。

-----------------------------------------------------------------------------------------

-1- http://www.cs.umd.edu/~pugh/java/memoryModel/AlphaReordering.html 与 lock 无关。

在Alpha SMP环境中,

Kourosh Gharachorloo 给出的结论就是非阻塞型同步(non-blocking synchronization,lock-free)中,

“数据异步线程” 读写都要用到MB来重序(reordering)程序。

Kourosh Gharachorloo 没有讨论到 MB 和 阻塞型同步(blocking synchronization,lock)的关系,所以没有所谓Alpha上下文和lock的关系。

(为了区分lock ,blocking synchronization的线程:"数据同步线程",

我命名lock-free,non-blocking synchronization中的线程,是“数据异步线程”。)

非阻塞型同步(non-blocking synchronization,lock-free)大多采用FIFO在不同线程中通信,没有lock。

http://en.wikipedia.org/wiki/Non-blocking_synchronization#Lock-freedom

结论:

你显然没有仔细了解过数据的synchronization,

不要想当然的认为多线程只有 lock 这样的 数据同步线程。

还有lock-free 这样的 数据异步线程。

-----------------------------------------------------------------------------------------

-2- 不要使用 http://www.cs.umd.edu/~pugh/java/memoryModel/BidirectionalMemoryBarrier.html

你所谓的大牛,清清楚楚地写明了,他错误的崇拜了 java synchronized {},

他已经说明了,synchronized {} 并没有代替或者实现 MB 的功能。

结论:

你显然没有仔细看过,只是匆匆的给了一个链接。

-----------------------------------------------------------------------------------------

-3- 请使用 volatile 来实现 MB http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html

你崇拜的大牛们,清清楚楚地写明了,从java 1.5 以后,如果要在 java 阻塞型同步(blocking synchronization,lock)

"数据同步线程" 中使用 MB,就要用到 volatile。

上面给的例子清清楚楚:

// Works with acquire/release semantics for volatile
// Broken under current semantics for volatile
  class Foo {
        private volatile Helper helper = null;
        public Helper getHelper() {
            if (helper == null) {
                synchronized(this) {
                    if (helper == null)
                        helper = new Helper();
                }
            }
            return helper;
        }
    }

结论:

这就是为什么,我直接忽视你给 99楼 的代码。

你根本没有理解和没有使用 volatile 所以, 99楼 的代码 不会产生 MB 效果。

-----------------------------------------------------------------------------------------

-4- 我引用 C++ 阻塞型同步(blocking synchronization,lock)代码,和 {p=y} 在mips下要有4条指令

就是要告诉你 lock 中也要使用 MB,lock 不能起到 MB 的作用,指令 instruction 还是会被打乱。

-----------------------------------------------------------------------------------------

-5- SMP 中线程切换 问题。

针对 http://www.cs.umd.edu/~pugh/java/memoryModel/AlphaReordering.html的代码。

Initially: p = & x, x = 1, y = 0  
Thread 1        | Thread 2  
y = 2          |  i = *p  
memoryBarrier   |  
p = & y        |  
Can result in: i = 0   

你说的“操作系统从thread 1切到thread 2”。

这是不准确的。

在单独的 P 中,可以用切换的概念,T1 在 P1 中可以切到 T3,被 T3 踢掉,可以被挂起.

如果数据异步线程, T1 和 T2 分别运行在两个 Processors 中 P1 和 P2,

对于 SMP 中两个 P 是不存在这样的被 os 切的概念的, 没有所谓 从 T1 切到 T2。

-----------------------------------------------------------------------

综上所述在 乱序 SMP 中,

无论是使用 阻塞型同步(blocking synchronization,lock)”数据同步线程”

还是使用 非阻塞型同步(non-blocking synchronization,lock-free)“数据异步线程”

都要用 MB 来 重序 reordering 读写代码。

而正是这样,不存在你所谓的

“Compaq Alpha SMP机器可能会即使有显式的memoryBarrier下,还是会有内存和cache的同步问题”。

-----------------------------------------------------------------------

最后为了你更好的理解 MB,

但我十分建议你,去看过IBM的报告"Memory Barriers: a Hardware View for Software Hackers"  

http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2009.04.05a.pdf  

-----------------------------------------------------------------------

本来希望 你能收回你的轻率的结论

“Compaq Alpha SMP机器可能会即使有显式的memoryBarrier下,还是会有内存和cache的同步问题”。

但鉴于你一而再,再而三的重复着同样的错误:

我认为再讨论下去只是浪费时间,这就是我最后给你的回复。

望你编程的路上好自为之。

出0入0汤圆

发表于 2010-3-17 21:33:30 | 显示全部楼层
delephi怎么调用VB谢谢程序
对VB的文本框  text   combo   command
进行调用,谢谢各位

出0入0汤圆

发表于 2010-3-20 22:06:50 | 显示全部楼层
够热烈....
没用C#,我还是快去打酱油.....

出0入0汤圆

发表于 2010-3-21 09:06:29 | 显示全部楼层
楼主编程好厉害!步骤讲解的也很简单明了!真希望我有一天也能达到这样的水平!

出0入296汤圆

 楼主| 发表于 2010-3-21 11:27:19 | 显示全部楼层
to 【109楼】 zzsoft
    呵呵,有讨论就好,大家都可以学到东西。至于效率的问题,我自己正在研究,
稍微有一点心得了。过一段时间有了结论,我会公布出来。
   
    在这里,谢谢zzsof和fightman。不过做技术,最好对事不对人,在这个原则下
形成谅解,然后继续热烈的讨论。

出0入0汤圆

发表于 2010-3-30 19:44:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-30 20:48:36 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-6-24 09:24:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-20 13:25:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-20 13:40:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-20 14:31:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-20 14:40:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-3 13:50:41 | 显示全部楼层
mark,记住C#!

出0入0汤圆

发表于 2010-10-25 22:07:42 | 显示全部楼层
顶一个

出0入0汤圆

发表于 2010-10-26 13:28:07 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-17 23:14:20 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2010-11-18 08:45:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-18 08:54:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-18 13:13:45 | 显示全部楼层
学习了

出0入0汤圆

发表于 2010-12-1 14:40:10 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-12-3 14:51:12 | 显示全部楼层
lihai

出0入0汤圆

发表于 2010-12-3 15:30:58 | 显示全部楼层
傻孩子其实并不“傻”!呵呵,向你致敬!

出0入0汤圆

发表于 2010-12-7 22:43:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-8 16:10:08 | 显示全部楼层
markup

出0入0汤圆

发表于 2010-12-8 20:47:17 | 显示全部楼层
学习

出0入0汤圆

发表于 2010-12-8 21:54:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-9 12:53:21 | 显示全部楼层
学习…

出0入0汤圆

发表于 2010-12-10 14:32:52 | 显示全部楼层
标记。
标记完毕。

出0入0汤圆

发表于 2011-1-13 21:11:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-14 09:51:50 | 显示全部楼层
mark C# 软件后门

出0入0汤圆

发表于 2011-1-15 20:46:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-16 14:34:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-16 14:51:35 | 显示全部楼层
好,后门

出0入0汤圆

发表于 2011-1-16 17:31:02 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-2-19 10:57:19 | 显示全部楼层
谢谢!

出0入0汤圆

发表于 2011-2-19 12:36:13 | 显示全部楼层
MARK,谢谢楼主。。。。。

出0入0汤圆

发表于 2011-2-19 20:27:26 | 显示全部楼层
学习了lz,c#得后门

出0入0汤圆

发表于 2011-2-19 20:51:19 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-2-20 09:13:19 | 显示全部楼层
Mark c# 后门

出0入0汤圆

发表于 2011-2-20 10:27:39 | 显示全部楼层
Mark 学习下

出0入0汤圆

发表于 2011-2-20 11:17:03 | 显示全部楼层
学习。。。

出0入0汤圆

发表于 2011-2-20 22:12:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-20 23:37:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-25 19:57:33 | 显示全部楼层
这个必须支持!偶是个C++菜鸟。

出0入0汤圆

发表于 2011-4-8 20:24:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-8 21:29:13 | 显示全部楼层
超酷的文章

出0入14汤圆

发表于 2011-4-8 21:41:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-9 08:59:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-9 16:50:27 | 显示全部楼层
D7(Delphi7)里面可以用 StrToInt 这样把十六进制换成十进制的呀,哦看起来还真是不错!

出0入0汤圆

发表于 2011-4-18 21:11:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-30 21:07:30 | 显示全部楼层
楼主精神可嘉,23楼的说法比较中肯。 后门有很多种方式与方法

出0入0汤圆

发表于 2011-6-10 17:29:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-10 20:19:01 | 显示全部楼层
对于楼主的做法还是支持的!!!

出0入0汤圆

发表于 2011-6-10 22:20:13 | 显示全部楼层
mark 一个!

出0入0汤圆

发表于 2011-6-10 22:48:35 | 显示全部楼层
马瑞卡

出0入0汤圆

发表于 2011-6-28 15:48:56 | 显示全部楼层
本人调试无效。。。

出0入0汤圆

发表于 2011-6-28 17:00:04 | 显示全部楼层
mark===很强大。

出0入0汤圆

发表于 2011-6-28 17:36:23 | 显示全部楼层
MARK 起来慢慢学习!

出0入0汤圆

发表于 2011-6-28 21:19:21 | 显示全部楼层
看完了,我也只能标记一下,慢慢消化了


不过lz的代码应该叫【工程模式】或【debug模式】,【后门】什么的和lz的代码不怎么贴切
不过代码我留下了,这个思路还是不错的

出0入0汤圆

发表于 2011-6-29 14:30:28 | 显示全部楼层
马瑞卡

出0入0汤圆

发表于 2011-7-29 09:56:56 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-8-19 14:03:28 | 显示全部楼层
mark,学习了

出0入0汤圆

发表于 2011-8-20 16:47:43 | 显示全部楼层
学习了。都是高手

出0入0汤圆

发表于 2011-9-30 11:36:21 | 显示全部楼层
真的受教了。谢谢傻孩子大哥倾情奉献!

出0入0汤圆

发表于 2011-10-6 14:49:28 | 显示全部楼层
挺傻孩子。。。。。出没的很多了
像你学习了

出0入0汤圆

发表于 2011-10-6 17:36:02 | 显示全部楼层
看不懂,太高深了!!!!说不定若干年以后能够看懂。。。。

出0入0汤圆

发表于 2011-10-9 21:10:34 | 显示全部楼层
mark吧

出0入0汤圆

发表于 2011-11-5 16:21:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-29 13:22:27 | 显示全部楼层
好东西

出0入0汤圆

发表于 2011-12-29 13:52:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-29 14:37:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-29 15:22:15 | 显示全部楼层
给力

出0入0汤圆

发表于 2011-12-29 16:29:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-10 16:31:31 | 显示全部楼层
C#不懂啊!

出0入0汤圆

发表于 2012-2-14 19:10:24 | 显示全部楼层
看不懂~~~~

出0入0汤圆

发表于 2012-2-25 14:55:25 | 显示全部楼层
MARK 起来慢慢学习!

出0入0汤圆

发表于 2012-3-4 16:08:29 | 显示全部楼层
不错,学习了~

出0入0汤圆

发表于 2012-3-4 17:25:06 | 显示全部楼层
先记下了

出0入0汤圆

发表于 2012-3-6 12:10:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-6 12:56:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-6 13:11:47 | 显示全部楼层
学习了

出0入0汤圆

发表于 2012-3-26 19:29:13 | 显示全部楼层
mark...现在竟然不能danchunmarkle

出0入0汤圆

发表于 2014-4-8 16:17:12 | 显示全部楼层
原来传说中的后门是这样的啊,不知道MCU程序怎么弄后门呢?

出0入0汤圆

发表于 2014-4-8 16:45:30 | 显示全部楼层
mark........

出870入263汤圆

发表于 2014-4-8 19:20:34 | 显示全部楼层
这帖子四年了!傻孩子和水猫都是高手,傻孩子做事很单纯,而水猫看起来喜欢批评别人,就这样。

出0入0汤圆

发表于 2014-6-7 18:47:04 | 显示全部楼层
mark mark mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 14:05

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表